获取包地址:官网地址
启动需要java环境变量
解压安装包后
cd /usr/local/zookeeper-3.4.6/conf/
cp zoo_sample.cfg zoo.cfg
配置文件内容:
tickTime=2000
initLimit=10
syncLimit=5
#数据目录,也是文件/usr/local/zookeeper-3.4.6/data/myid存放的目录
dataDir=/usr/local/zookeeper-3.4.6/data/
clientPort=2182
#集群节点数
server.1=10.10.10.7:2888:3888
server.2=10.10.10.8:2888:3888
server.3=10.10.10.9:2888:3888
# 指定清理频率,单位是小时,默认是0,表示不开启自己清理功能。
autopurge.purgeInterval=6
# 和上面的参数搭配使用,指定需要保留的文件数目,默认是保留3个。
autopurge.snapRetainCount=5
每个节点分别写入:注意myid 和节点IP对应,我搞错过一次,一直失败。
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台主机上分别启动:
sh bin/zkServer.sh start
备注:在集群启动过程中,当有一台zookeeper节点s1启动完成后,此时集群中只有一个节点无法进行leader的选举。
当第二个节点s2启动成功后,此时两个节点可以正常通信,进入leader的选举过程
重启命令:
sh bin/zkServer.sh restart
查看节点状态:
sh bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
查看同步状态:
[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:状态不对
不管它直接启动下一个节点,启动第二个节点后,第二个会选举自己为leader ,它检测到第一个节点后,第一个节点自己会变成follower
问题2:myid和主机IP不对应。
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
网友评论