如何列出所有 Kafka zookeeper bootstrap 服务器

How to list all Kafka zookeeper bootstrap servers

我希望能够以编程方式(或使用 shell 脚本)列出我的每个环境的所有 zookeeper bootstrap 服务器。

如果我只知道 bootstrap 个服务器中的一个,我可以得到所有服务器的列表吗?

所有活跃的经纪人都在/brokers/ids/[brokerId]下注册,您可以通过任何ZK客户端(例如org.I0Itec.zkclient)查询ZNode信息。您只需要 zkQuorum 地址。

zkClient = new ZkClient(properties.getProperty("zkQuorum"), zkSessionTimeout, zkConnectionTimeout,
                ZKStringSerializer$.MODULE$);

Kafka data structures in Zookeeper

不确定这是否有直接帮助,但我使用以下方法从 Kafka zookeeper 找到了一个 bootstrap 服务器:

zkCli.sh -server host:port
[zkCli prompt] ls /kafka
[..., brokers, ...]
[zkCli prompt] ls /kafka/brokers
[1, 2, 3, 4, 5]
[zkCli prompt] ls /kafka/brokers/1
[1]
[zkCli prompt] get /kafka/brokers/1
>> broker info<<