如何获取当前zookeeper集群的成员服务器列表

Mav*_*arn 6 apache-zookeeper

我想在我的java应用程序中获取成员服务器列表及其类型(Leader或observer).而且还想得到死去的服务器.

他们有办法做到这一点吗?我看了文件,但没找到.

Kin*_*ton 6

如果有一个内置的答案而不诉诸于JMX,那将是很好的.如果您在其中一个zookeeper节点上,您可以阅读zoo.cfg文件以获取服务器列表(死亡和活动的),然后单独"stat"每个服务器以查看它是否存活以及它的状态是什么(注意成功响应的"模式"属性).例如:

$ echo stat | nc 127.0.0.1 2181
Zookeeper version: 3.4.5--1, built on 06/10/2013 17:26 GMT
Clients:
 /127.0.0.1:54752[1](queued=0,recved=215524,sent=215524)
 /127.0.0.1:59298[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/6
Received: 5596
Sent: 5596
Connections: 2
Outstanding: 0
Zxid: 0x10000010f
Mode: leader
Node count: 54
Run Code Online (Sandbox Code Playgroud)

请注意,"stat"不会向您显示zookeeper集合的其他成员 - 它只显示已连接的客户端.

  • 或新的`echo srvr | 数控127.0.0.1 2181` (2认同)

sbr*_*ges 3

Zookeeper 通过jmx公开此信息。

  • 但我不想启用 JMX (3认同)
  • 看来也没有其他办法了。谢谢。 (2认同)