我正在运行一个具有五个节点的 ZooKeeper 集群,每个节点都有以下配置(最后加上正确的仲裁信息):
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr/local/zookeeper/data
clientPort=2181
minSessionTimeout=4000
maxSessionTimeout=40000
4lw.commands.whitelist=*
Run Code Online (Sandbox Code Playgroud)
集群一开始运行良好。出于测试目的,我随后终止了当前领导者的 ZooKeeper 实例(每个 ZooKeeper 服务器都在会话的前台运行screen)。然后,正如预期的那样,触发了领导者选举,另一个节点被选举为领导者。
然而,当然后尝试向 Java 客户端中的集群发送get//请求set时create(最初运行良好的进程),以及通过与集群进行交互,zkCli.sh只会永远给出客户端的状态CONNECTING。
此时,我已经执行了明显的故障排除步骤,例如
echo stat | nc localhost 2181-- 在任何一台仍在运行的服务器上,这只会表明一切正常,例如Clients:
/10.0.0.1:35264[1](queued=0,recved=2,sent=1)
/10.0.0.2:49230[0](queued=0,recved=1,sent=0)
/127.0.0.1:34162[0](queued=0,recved=1,sent=0)
/10.0.0.3:49530[0](queued=0,recved=1,sent=0)
/10.0.0.1:35250[0](queued=0,recved=1,sent=0)
/10.0.0.4:35406[1](queued=0,recved=2,sent=1)
/10.0.0.2:49304[1](queued=0,recved=1,sent=1)
Latency min/avg/max: 0/0/0
Received: 484
Sent: 140
Connections: 7
Outstanding: 343
Zxid: 0x200000000
Mode: leader
Node count: 15
Proposal sizes last/min/max: 32/32/75
Run Code Online (Sandbox Code Playgroud)
echo ruok | nc localhost 2181只是输出iamok2019-08-12 …Run Code Online (Sandbox Code Playgroud)