zookeeper詳解與單機安裝、集羣安裝

概述

  1. 是Apache提供的開源的用於進行服務協調和分佈式管理的框架
  2. Zookeeper原來是Hadoop的子件之一,後來發現Zookeeper不止可以用於Hadoop也可以用於其他分佈式環境下的管理,獨立出來稱爲一個單獨的項目

zookeeper可以解決的分佈式問題

  1. 在分佈式環境下,需要確定一個管理節點
  2. 如果只設置一個管理節點,存在單點故障
  3. 爲了避免管理節點的單點故障,需要設置多個管理節點
  4. 需要在管理節點集羣中來選舉出一個主節點
  5. 要求管理節點集羣能夠應對崩潰恢復的場景
  6. 管理節點之間要進行信息的共享
  7. 確定一套選舉算法

特點與節點類型

一、特點

在這裏插入圖片描述

  1. Zookeeper是一個樹狀結構(Znode樹)
  2. 樹狀結構(Znode樹)的根節點爲 /
  3. Zookeeper的每一個節點稱之爲是znode節點
  4. 所有的znode節點都是從根節點開始計算
  5. 每一個znode節點都必須存儲數據
  6. 每一個持久的znode節點都可以掛載子節點
  7. 每一個znode節點的路徑都是唯一的。所以基於這一個特點,可以做集羣的統一命名服務
  8. Znode樹是維繫在內存中的,即每一個znode節點中的數據也是維繫在內存中,這樣做的目的是方便快速查找
  9. 不能利用Zookeeper存儲海量數據,原因:
    1. Znode樹維繫在內存中,並且多個Zookeeper存儲的是相同的數據造成內存的浪費;
    2. Zookeeper是做分佈式的協調服務而不是做存儲服務
  10. Zookeeper提供了持久化機制,持久化的目錄由zoo.cfg中的dataDir屬性來決定
  11. Zookeeper會爲每一次的事務(增加、刪除、更新)提供一個全局的遞增的事務id
  12. 任意一個路徑是唯一的

二、節點類型

順序節點 非順序節點
持久節點 Persistent_Sequential Persistent
臨時節點 ephemeral_Sequential ephemeral

節點詳解

屬性 說明
cZxid 這個節點創建的時候分配的事務id
ctime 這個節點創建的時間
mZxid 這個節點的數據更新分配的事務id
mtime 這個節點的數據更新的時間
pZxid 記錄子節點發生增刪的事務id
cversion 記錄子節點增刪的次數
dataVersion 記錄當前節點數據更新的次數
aclVersion acl策略的更新次數
ephemeralOwner 如果是持久節點,那麼此項爲0x0,
如果是臨時節點,那麼此項爲當前sessionid
dataLength 數據的字節個數
numChildren 子節點個數

常用命令

一、客戶端指令

指令 解釋
ls 查看指定節點下的所有的子節點
create 創建持久節點
create -e 創建臨時節點
create -s 創建持久順序節點
create -e -s 創建臨時順序節點
delete 刪除節點
rmr 遞歸刪除
get 獲取節點數據和信息
set 更新節點數據
quit 退出客戶端

二、服務器端指令

指令 解釋
sh zkServer.sh start 啓動服務器
sh zkServer.sh status 查看服務器狀態
sh zkServer.sh stop 停止服務器
sh zkServer.sh restart 重啓服務器

單機安裝:

1. 關閉防火牆:

a. 臨時關閉service iptables
b. 永久關閉stop chkconfig iptables off

2. 安裝JDK,JDK要求是1.7及以上

在這裏插入圖片描述

3. 下載Zookeeper的安裝包

http://archive.apache.org/dist/zookeeper/zookeeper-3.4.7/
在這裏插入圖片描述

4. 解壓安裝包:tar -xvf zookeeper-3.4.7.tar.gz

5. 進入到安裝目錄的子目錄conf下

在這裏插入圖片描述
6. 複製:cp zoo_sample.cfg zoo.cfg Zookeeper在啓動的時候會默認去找zoo.cfg
在這裏插入圖片描述
7. 編輯zoo.cfg,修改屬性dataDir
在這裏插入圖片描述

安裝完成。在bin目錄啓動zookeeper並查看狀態

  1. 當服務器端啓動成功之後,可以執行jps命令查看是否有Zookeeper的QuorumPeer進程
  2. 或者在服務器端啓動成功之後,可以執行一下命令查看服務器端狀態
sh zkServer.sh start  
sh zkServer.sh status

在這裏插入圖片描述

集羣安裝

1. 關閉Linux(版本是Centos6.X)的防火牆

臨時關閉防火牆:service iptables stop
永久關閉防火牆:chkconfig iptables off

2. 下載安裝JDK。注意至少是JDK1.6及以上版本才能使用

在這裏插入圖片描述

3. 下載或者上傳Zookeeper的壓縮包

http://archive.apache.org/dist/zookeeper/zookeeper-3.4.7/
在這裏插入圖片描述

4. 解壓壓縮包 tar -xvf zookeeper-3.4.7.tar.gz

5. 進入Zookeeper的安裝目錄下的子目錄conf目錄中

在這裏插入圖片描述

6. 將conf目錄下的zoo_sample.cfg複製爲zoo.cfg。Zookeeper在啓動的時候會自動尋找zoo.cfg,根據其中的配

置來啓動存儲數據
cp zoo_sample.cfg zoo.cfg
在這裏插入圖片描述

7. 編輯zoo.cfg文件

```xml
vim zoo.cfg 
```

8. 修改其中的屬性dataDir,指定數據的存儲目錄

在這裏插入圖片描述

9. 在zoo.cfg文件的末添加要構建集羣的服務器地址

編號要求是數字並且不能重複
原子廣播端口號和選舉端口號只要不和當前已經使用的端口號衝突即可

#格式:server.編號=IP地址:原子廣播端口:選舉端口
#例如:
server.1=192.168.199.11:2888:3888
server.2=192.168.199.12:2888:3888
server.3=192.168.199.13:2888:3888

在這裏插入圖片描述

10. 在dataDir的指定目錄下創建數據存儲目錄並進入tmp目錄

11.

11. 在數據存儲目錄下編輯新的文件,文件名爲myid

在myid文件中填入當前服務器所對應的編號。例如當前服務器的地址爲192.168.199.11,則在zoo.cfg文件中指
定編號爲1,那麼就在myid文件中添加數字1

vim myid

在這裏插入圖片描述

12. 將要配置的集羣中的其他服務器按照上述步驟配置。或者可以將當前服務器中的配置拷到其他服務器上,修

改對應的myid ,這裏複製過去即可

scp -r zookeeper-3.4.14 [email protected]:/home/software/
scp -r zookeeper-3.4.14 [email protected]:/home/software/

複製完成後吧myid分別改爲對應的id號
在這裏插入圖片描述
在這裏插入圖片描述

13. 集羣全部配置好之後,依次啓動每一臺服務器,進入Zookeeper安裝目錄下的bin目錄

sh zkServer.sh start
sh zkServer.sh status

在這裏插入圖片描述
注意:

14. 在Zookeeper集羣中,如果單獨啓動一臺服務器,是無法對外提供服務的

15. 當把集羣中的服務器都啓動之後,可以利用sh zkServer.sh status

來查看當前節點的狀態,如果出現leader或者follower,則說明啓動成功。

需要注意zoo.cfg裏面的路徑配置。dataDir=/home/software/zookeeper-3.4.14/tmp
需要把原路徑全部刪除從新寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章