我想在我的java应用程序中获取成员服务器列表及其类型(Leader或observer)。 并且还希望得到死去的服务器。
他们有什么办法吗?我读了这份文件,但没找到。
答案 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