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

时间:2013-05-21 11:39:12

标签: apache-zookeeper

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

他们有什么办法吗?我读了这份文件,但没找到。

3 个答案:

答案 0 :(得分:7)

如果有一个内置的答案而不诉诸于JMX,那将是很好的。如果你在其中一个zookeeper节点上,你可以阅读zoo.cfg文件来获取服务器列表(死的和活的),然后是" stat"每个人分别看看它是否活着以及它的状态是什么(注意" Mode"成功响应的属性)。 E.g:

$ 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

请注意" stat"没有向您展示zookeeper ensemble的其他成员 - 它只显示连接的客户端。

答案 1 :(得分:2)

Zookeeper通过jmx公开此信息。

答案 2 :(得分:-1)

它也可以是查询发送" stat"使用直接连接到端口2181的命令。

有关如何从python中执行此操作的示例,请参阅: https://github.com/apache/zookeeper/blob/765cedb5c65526384011ea958e59938fc7493168/src/contrib/huebrowser/zkui/src/zkui/stats.py