server 1:

[root@wx03 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /zookeeper/server1/bin/../conf/zoo.cfg
Mode: follower



server 2:

[root@wx03 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /zookeeper/server2/bin/../conf/zoo.cfg
Mode: leader


server 3:

[root@wx03 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /zookeeper/server3/bin/../conf/zoo.cfg
Mode: follower




关闭server 1 follower:


此时server 1的状态:

[root@wx03 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /zookeeper/server1/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

 


关闭leader:




此时server 3称为leader:
[root@wx03 zookeeper]# cd server3
[root@wx03 server3]# cd bin/
[root@wx03 bin]# ./zk
zkCleanup.sh  zkCli.cmd     zkCli.sh      zkEnv.cmd     zkEnv.sh      zkServer.cmd  zkServer.sh   
[root@wx03 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /zookeeper/server3/bin/../conf/zoo.cfg
Mode: leader



发现zk 切换有时候会取不到数据:

zjtest7-redis:/root/zk# perl test_zk.pl 
192.168.32.6
@arr2 is 1  aaabbb  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  
 2  cccddeqe  

zjtest7-redis:/root/zk# perl test_zk.pl 
zjtest7-redis:/root/zk# 



原因:
你给出的zookeeper列表里哪些主机已经死了.你链接的时候会失效是很正常的.


如果不是长连接,需要把停掉的server 节点,踢掉