我想在我的Java应用程序中获取成员服务器列表及其类型(Leader或observer)。 而且还想获得死亡的服务器。如何获取当前zookeeper集群的成员服务器列表
他们有什么办法做到这一点?我阅读了文档,但没有找到。
我想在我的Java应用程序中获取成员服务器列表及其类型(Leader或observer)。 而且还想获得死亡的服务器。如何获取当前zookeeper集群的成员服务器列表
他们有什么办法做到这一点?我阅读了文档,但没有找到。
Zookeeper通过jmx公开此信息。
它也可以是查询中使用到端口2181
直接连接有关如何做到这一点从蟒蛇看一个例子发送指令“STAT”: https://github.com/apache/zookeeper/blob/765cedb5c65526384011ea958e59938fc7493168/src/contrib/huebrowser/zkui/src/zkui/stats.py
如果我不喜欢Python,该怎么办? – user4674453
如果有这将是很好这是一个内置的答案,不需要使用JMX。如果你在一个动物园管理员节点上,你可以阅读zoo.cfg文件来获取服务器列表(死和活的),然后分别“统计”每个服务器以查看它是否存在以及它的状态(注意成功响应的“模式”属性)。例如: -
$ 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
注意,“统计”不告诉你的动物园管理员乐团的其他成员 - 那只能说明你连接的客户端。
或新的'echo srvr | nc 127.0.0.1 2181' –
是的,你可以这样做,但“srvr”似乎忽略了连接的客户端信息,并且在输出时与我发布的“stat”命令相同。具体而言,它仍不会向您显示法定成员或其状态,这是原始问题。 –
但我不想启用JMX – Mavlarn
我认为你必须使用jmx或zookeeper的四个字母单词之一http://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands – sbridges
似乎没有其他办法。谢谢。 – Mavlarn