无法列出卡夫卡的经纪人ID

时间:2020-04-28 13:43:41

标签: apache-kafka

我有一个docker-compose文件。

 version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092"
    environment:
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "test-topic:5:2"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

我正在使用

运行2个经纪人
 docker-compose scale kafka=2

现在我想通过在kafka的docker bash中运行此文件来获取代理的ID

 zookeeper-shell.sh localhost:2181 ls /brokers/ids

我所得到的是:-

    Connecting to localhost:2181
KeeperErrorCode = ConnectionLoss for /brokers/ids

但是我能够使用和产生消息,知道为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:1)

您指定的是localhost,但是Zookeeper与Kafka位于不同的容器中。

尝试:

➜ docker exec -it tmp_kafka_1 zookeeper-shell.sh zookeeper:2181 ls /brokers/ids
Connecting to zookeeper:2181

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[1001]

还请注意,docker-compose scale kafka=2不会启动第二个代理-使用

启动时会失败
kafka_2      | [2020-04-28 14:55:19,104] ERROR [KafkaServer id=1002] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka_2      | java.lang.IllegalArgumentException: requirement failed: Configured end points localhost:9092 in advertised listeners are already registered by broker 1001

如果要运行多个代理的Docker Compose示例,请查看this one