獲取包地址:官網(wǎng)地址

啟動需要java環(huán)境變量
解壓安裝包后
cd /usr/local/zookeeper-3.4.6/conf/
cp zoo_sample.cfg zoo.cfg
配置文件內(nèi)容:
tickTime=2000
initLimit=10
syncLimit=5
#數(shù)據(jù)目錄,也是文件/usr/local/zookeeper-3.4.6/data/myid存放的目錄
dataDir=/usr/local/zookeeper-3.4.6/data/
clientPort=2182
#集群節(jié)點(diǎn)數(shù)
server.1=10.10.10.7:2888:3888
server.2=10.10.10.8:2888:3888
server.3=10.10.10.9:2888:3888
# 指定清理頻率,單位是小時,默認(rèn)是0,表示不開啟自己清理功能。
autopurge.purgeInterval=6
# 和上面的參數(shù)搭配使用,指定需要保留的文件數(shù)目,默認(rèn)是保留3個。
autopurge.snapRetainCount=5
每個節(jié)點(diǎn)分別寫入:注意myid 和節(jié)點(diǎn)IP對應(yīng),我搞錯過一次,一直失敗。
10.10.10.7 echo 1 > /usr/local/zookeeper-3.4.6/data/myid
10.10.10.8 echo 2 > /usr/local/zookeeper-3.4.6/data/myid
10.10.10.9 echo 3 > /usr/local/zookeeper-3.4.6/data/myid
啟動:
3臺主機(jī)上分別啟動:
sh bin/zkServer.sh start
備注:在集群啟動過程中,當(dāng)有一臺zookeeper節(jié)點(diǎn)s1啟動完成后,此時集群中只有一個節(jié)點(diǎn)無法進(jìn)行l(wèi)eader的選舉。
當(dāng)?shù)诙€節(jié)點(diǎn)s2啟動成功后,此時兩個節(jié)點(diǎn)可以正常通信,進(jìn)入leader的選舉過程
重啟命令:
sh bin/zkServer.sh restart
查看節(jié)點(diǎn)狀態(tài):
sh bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
查看同步狀態(tài):
[root@10-7 zookeeper-3.4.6]# echo mntr|nc 10.10.10.7 2182
zk_version 3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency 0
zk_max_latency 335
zk_min_latency 0
zk_packets_received 1424995
zk_packets_sent 1425026
zk_num_alive_connections 5
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count 1196
zk_watch_count 145
zk_ephemerals_count 24
zk_approximate_data_size 109309
zk_open_file_descriptor_count 36
zk_max_file_descriptor_count 62235
問題1:狀態(tài)不對

不管它直接啟動下一個節(jié)點(diǎn),啟動第二個節(jié)點(diǎn)后,第二個會選舉自己為leader ,它檢測到第一個節(jié)點(diǎn)后,第一個節(jié)點(diǎn)自己會變成follower
問題2:myid和主機(jī)IP不對應(yīng)。
WARN Cannot open channel to 2 at election address /0.0.0.0:3888 (org.apache.zookeeper.server.quorum.QuorumCnxManager)
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:204)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:534)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$Work
日志切割功能:
修改 conf/log4j.properties和 bin/zkEnv.sh (重啟生效)

conf/log4j.properties

bin/zkEnv.sh