先到apache官網進行下載apache
首先從官網下載ZooKeeper壓縮包,而後解壓下載獲得的ZooKeeper壓縮包,發現有「bin,conf,lib」等目錄。「bin目錄」中存放有運行腳本;「conf目錄」中存放有配置文件;「lib目錄」中存放有運行所須要第三方庫。分佈式
在「conf」目錄下,將「zoo_sample.cfg」的文件重命名爲"zoo.cfg"spa
而後編輯"zoo.cfg",其中內容爲下命令行
參數說明code
#tickTime: zookeeper中使用的基本時間單位, 毫秒值. #dataDir: 數據目錄. 能夠是任意目錄. #dataLogDir: log目錄, 一樣能夠是任意目錄. 若是沒有設置該參數, 將使用和#dataDir相同的設置. #clientPort: 監聽client鏈接的端口號.
運行ZooKeeper Serverserver
執行./bin/zkServer.sh start命令,運行ZooKeeper Server進程,獲得如圖所示結果,表示後臺運行ZooKeeper Server進程成功。進程
中止:./bin/zkServer.sh stop
也能夠執行bin/zkServer.sh start-foreground命令,非後臺運行ZooKeeper Server進程資源
集羣模式有兩種形式:
1)使用多臺機器,在每臺機器上運行一個ZooKeeper Server進程;
2)使用一臺機器,在該臺機器上運行多個ZooKeeper Server進程。
在生產環境中,通常使用第一種形式,在練習環境中,通常使用第二種形式。it
參數配置注意事項:
1)同一個ZooKeeper集羣內,不一樣ZooKeeper Server進程的標識須要不同,即myid文件內的值須要不同
2)採用上述第2種形式構建ZooKeeper集羣,須要注意「目錄,端口號」等資源的不可共享性,若是共享會致使ZooKeeper Server進程不能正常運行,好比「data目錄,幾個監聽端口號」都不能被共享table
myid | Data目錄 | Client | Server | Leader | 配置文件 |
---|---|---|---|---|---|
1 | /z1/data | 2181 | 2222 | 2223 | z1.cfg |
2 | /z2/data | 2182 | 3333 | 3334 | z2.cfg |
3 | /z3/data | 2183 | 4444 | 4445 | z3.cfg |
配置以下:
# zx.cfg tickTime=2000 initLimit=10 syncLimit=2 dataDir=/usr/myenv/zookeeper-3.4.8/zx/data clientPort=218x # server.x中的「x」表示ZooKeeper Server進程的標識 server.1=127.0.0.1:2222:2225 server.2=127.0.0.1:3333:3335 server.3=127.0.0.1:4444:4445
注:
initLimit: zookeeper集羣中的包含多臺server, 其中一臺爲leader, 集羣中其他的server爲follower. initLimit參數配置初始化鏈接時, follower和leader之間的最長心跳時間. 此時該參數設置爲5, 說明時間限制爲5倍tickTime, 即5*2000=10000ms=10s.
syncLimit: 該參數配置leader和follower之間發送消息, 請求和應答的最大時間長度. 此時該參數設置爲2, 說明時間限制爲2倍tickTime, 即4000ms.
bin/zkServer.sh start deploy/z1/z1.cfg, bin/zkServer.sh start deploy/z2/z2.cfg bin/zkServer.sh start deploy/z3/z3.cfg
運行上述配置的3個ZooKeeper Server進程。
執行命令
bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
創建ZooKeeper Client端到ZooKeeper集羣的鏈接會話。