我想在我的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