ZooKeeper是一個分佈式的,開源的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。
它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。
單機版
1.下載ZooKeeper,選擇你需要的版本
http://apache.fayea.com/zookeeper/
我選擇的是zookeeper-3.4.9穩定版
2. 解壓到你的文件 我存放的是D:\API\zookeeper-3.4.9
3.創建一個zoo.cfg,我這裏是使用拷貝zoo_sample.cfg,然後直接重命名。解釋下各個屬性:
tickTime 每次心跳檢測的間隔時間,單位是毫秒
initLimit 集羣中follower服務器和Leader服務器之間初始連接時能容忍的最大心跳次數,超過這個時間連接失敗。如果超過這個時間大多數follower沒有完成同步,Leader宣佈放棄領導位置,進行一次新的選舉。默認爲10,如果zk集羣數量龐大可以適當調大這個參數。
syncLimit 集羣中follower服務器和Leader服務器之間請求和應答之間能容忍的最大心跳次數,超過這個時間此follower將被丟棄,所有關聯到這個跟隨者的客戶端將連接到另外一個跟隨者。
dataDir 存放數據的目錄
clientPort 客戶端連接使用的端口號
maxClientCnxns 允許的最大連接數
autopurge.snapRetainCount 保存在數據目錄的快照數
autopurge.purgeInterva 清除任務的執行間隔,單位是小時
配置自定義的配置
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=D:/data/zookeeper
4.啓動zookeeper。
雙擊bin下面的zkServer.cmd
5.查看zookeeper狀態,需要用到netcat
下載地址:https://eternallybored.org/misc/netcat/
解壓出來,然後命令行到同一個目錄,敲擊命令:
echo ruok | nc localhost 2181
可以看到有一個imok應答,當然你也可以使用conf命令查看配置
6.連接到zookeeper
打開一個新的命令行,切換到zookeeper的bin目錄下面,敲入命令:
zkCli -server localhost:2181
然後你就可以自己創建zNode了,以上是單機版的安裝配置步驟。
僞集羣模式
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=D:/data/zk_cluster/zk_data/zk1
server.1=localhost:2881:3887
server.2=localhost:2882:3888
server.3=localhost:2883:3889
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2182
dataDir=D:/data/zk_cluster/zk_data/zk2
server.1=localhost:2881:3887
server.2=localhost:2882:3888
server.3=localhost:2883:3889
zk3:tickTime=2000
initLimit=10
syncLimit=5
clientPort=2183
dataDir=D:/data/zk_cluster/zk_data/zk3
server.1=localhost:2881:3887
server.2=localhost:2882:3888
server.3=localhost:2883:3889
注意事項
- 由於部署在同一臺機器上,clientPort不能重複,建議Server_A的clientPort=2181,Server_B的clientPort=2182,依次遞增。
- server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址;C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;D 表示的是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。如果是僞集羣的配置方式,由於 B 都是一樣,所以不同的 ZooKeeper實例通信端口號不能一樣,所以要給它們分配不同的端口號。
- 集羣模式下還要配置一個文件 myid,這個文件在 dataDir 目錄下,這個文件裏面只有一個數據就是 A 的值,ZooKeeper啓動時會讀取這個文件,拿到裏面的數據與 zoo.cfg 裏面的配置信息比較從而判斷到底是那個 server。
前幾臺實例出現實例異常是正常情況,全部啓動好了就消失了
5.查看各個實例
6.僞集羣模式搭建完成,真正的集羣模式更簡單,端口號完全可以完全一樣