本文版權歸 遠方的風lyh和博客園共有,歡迎轉載,但須保留此段聲明,並給出原文鏈接,謝謝合作。
【這里是在一台機器上搭建的 zk偽集群】
1.從官網下載下載zk http://apache.fayea.com/zookeeper/
解壓 並復制三套zk,這里我使用三台zk實例(server,演示使用3.4.7版本)
為什么使用三台zk?
在zookeeper的選舉過程中,為了保證選舉過程最后能選出leader,就一定不能出現兩台機器得票相同的僵局,所以一般的,要求zk集群的server數量一定要是奇數,也就是2n+1 台,並且,如果集群出現問題,其中存活的機器必須大於n+1台,否則leader無法獲得多數server的支持,系統就自動掛掉。所以一般是3個或者3個以上節點。
2.配置zk配置文件 conf/zoo.cfg(若沒有請自建)
zk1-3.4.7
clientPort = 2181
dataDir=/tmp/zookeeper/1
syncLimit=5
tickTime=2000
initLimit=10
dataLogDir=/tmp/zookeeper/1
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
zk2-3.4.7
clientPort = 2182
dataDir=/tmp/zookeeper/2
syncLimit=5
tickTime=2000
initLimit=10
dataLogDir=/tmp/zookeeper/2
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
zk3-3.4.7
clientPort = 2183
dataDir=/tmp/zookeeper/3
syncLimit=5
tickTime=2000
initLimit=10
dataLogDir=/tmp/zookeeper/3
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
*說明:紅色部分路徑, 要自行創建相關目錄
3.創建myid
終端執行指令
echo "1" > /tmp/zookeeper/myid/1
echo "2" > /tmp/zookeeper/myid/2
echo "3" > /tmp/zookeeper/myid/3
這里的myid文件中的值對應 zoo.cfg 中 server.x,分別代表1、2、3號server的id
4. 每一個server(這里是三台)執行以下命令 bin目錄下
./zkServer.sh start
5.驗證 集群是否搭建成功 bin目錄下
./zkServer.sh status
如下如圖則表示成功

附 :若在驗證階段執行./zkServer.sh start出現以下情況:
JMX enabled by default
Using config: /zk1-3.4.7/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
先執行停止相應的zk 停止指令為 zkServer.sh stop
再執行./zkServer.sh start-foreground 可以看到報錯 根據報錯進行修改