gpt4 book ai didi

docker - 无法使用 Docker 容器内的 Kafka 代理运行控制台使用者

转载 作者:行者123 更新时间:2023-12-02 18:34:25 30 4
gpt4 key购买 nike

我在 Docker 容器中运行 Kafka 代理时遇到问题。

我已经下载并解压了 Kafka 2.12-2.4.1 的 tar 存档。

我可以从命令行运行 Zookeeper 和 Kafka 代理,成功地生成和使用消息。当我使用 Zookeeper 构建 docker 容器时,我可以使用从命令行运行的 Kafka 代理来运行它,再次成功地生成和使用消息。当我将代理放入 docker 容器时,消费者和生产者无法找到要连接的代理。

我已经检查以确保 Zookeeper 有一个连接的代理:下面的 zookeeper“转储”命令

echo dump | nc localhost 2181

返回

SessionTracker dump:Session Sets (3)/(1):0 expire at Thu May 28 09:53:33 GMT 2020:0 expire at Thu May 28 09:53:36 GMT 2020:1 expire at Thu May 28 09:53:39 GMT 2020:    0x10002dfed700008ephemeral nodes dump:Sessions with Ephemerals (1):0x10002dfed700008:    /controller    /brokers/ids/0Connections dump:Connections Sets (2)/(2):0 expire at Thu May 28 09:53:37 GMT 2020:2 expire at Thu May 28 09:53:47 GMT 2020:    ip: /172.18.0.1:55656 sessionId: 0x0    ip: /172.18.0.5:48474 sessionId: 0x10002dfed700008

在我未经训练的人看来,Zookeeper 似乎有一个注册经纪人。

我可以使用命令成功列出主题

kafka-topics.sh --list --zookeeper localhost:2181

当我运行命令时

netstat -plnt

我可以看到我在端口 2181 和 9092 上有监听器,如下所示

tcp6       0      0 :::9092                 :::*                    LISTEN      54661/docker-proxytcp6       0      0 :::2181                 :::*                    LISTEN      47872/docker-proxy 

但是,当我尝试将消费者与命令联系起来时

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic aaaa

我收到错误

WARN [Consumer clientId=consumer-console-consumer-8228-1, groupId=console-consumer-8228] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

这似乎表明客户无法联系经纪人。

我在代理配置文件中尝试了几种不同的监听器和广告监听器变体,将它们设置为本地主机和 127.0.0.1,但无济于事。

我确信我遗漏了一些简单的东西:任何人都可以帮忙吗?

最佳答案

确保配置以下内容:

KAFKA_LISTENERS: LISTENER_INTERNAL://kafka-host:29092,LISTENER_EXTERNAL://kafka-host:9092
KAFKA_ADVERTISED_LISTENERS: LISTENER_INTERNAL://kafka-host:29092,LISTENER_EXTERNAL://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_INTERNAL:PLAINTEXT,LISTENER_EXTERNAL:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_INTERNAL

  • 现在所有在 Docker 网络中运行的客户端都应该使用

    LISTENER_INTERNAL://kafka-host:29092
  • Docker Network 之外的所有客户端都应该使用

    LISTENER_EXTERNAL://kafka-host:9092

要获得更全面的指南,请阅读 @RobinMoffatt article .

关于docker - 无法使用 Docker 容器内的 Kafka 代理运行控制台使用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62062368/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com