【问题标题】:kafka configuration + zookeeper cli + get the right info for kafka hostkafka 配置 + zookeeper cli + 获取 kafka 主机的正确信息
【发布时间】:2020-08-27 00:49:21
【问题描述】:

众所周知,何时需要打印 kafka 代理 ID,我们可以使用以下 cli

zookeeper-shell.sh zoo_server1:2181 <<< "ls /brokers/ids"

此 cli 打印以下内容

WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[1018, 1017, 1016]

这意味着我们有带有id的kafka

1018 
1017
1016

但是我们的卡夫卡名字是

Kafka_confluent01
Kafka_confluent02
Kafka_confluent03

那么如何知道哪个kafka broker id(1018 , 1017 , 1016)属于真实主机(Kafka_confluent01 / Kafka_confluent02 / Kafka_confluent03

【问题讨论】:

    标签: linux apache-kafka apache-zookeeper


    【解决方案1】:

    您可以使用以下代码动态获取代理列表。

    public class KafkaBrokerInfoFetcher {
    
        public static void main(String[] args) throws Exception {
            ZooKeeper zk = new ZooKeeper("localhost:2181", 10000, null);
            List<String> ids = zk.getChildren("/brokers/ids", false);
            for (String id : ids) {
                String brokerInfo = new String(zk.getData("/brokers/ids/" + id, false, null));
                System.out.println(id + ": " + brokerInfo);
            }
        }
    }
    

    运行代码后,你会得到broker id和对应的host。

    1: {"jmx_port":-1,"timestamp":"1428512949385","host":"192.168.0.11","version":1,"port":9093}
    2: {"jmx_port":-1,"timestamp":"1428512955512","host":"192.168.0.11","version":1,"port":9094}
    3: {"jmx_port":-1,"timestamp":"1428512961043","host":"192.168.0.11","version":1,"port":9095}
    

    【讨论】:

    【解决方案2】:

    您可以将kafkacat-L 运算符一起使用:

    $ kafkacat -b kafka-01.foo.bar:9092 -L
    Metadata for all topics (from broker 1: kafka-01.foo.bar:9092/1):
     3 brokers:
      broker 2 at kafka-02.foo.bar:9092
      broker 3 at kafka-03.foo.bar:9092
      broker 1 at kafka-01.foo.bar:9092 (controller)
    

    【讨论】:

      猜你喜欢
      • 2015-06-11
      • 2017-07-16
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 2020-12-08
      相关资源
      最近更新 更多