繁体   English   中英

从另一台主机连接 Docker 内部的 Kafka

[英]Connecting Kafka inside Docker from another host

我已经在主机 A(192.168.1.200)的 docker 中构建了 Kafka 和 Zookeeper,并且已经设置了这些环境

KAFKA_ADVERTISED_LISTENERS=INSIDE://kafka-broker:9093,OUTSIDE://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENERS=INSIDE://kafka-broker:9093,OUTSIDE://kafka-broker:9092
KAFKA_INTER_BROKER_LISTENER_NAME=INSIDE
KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181

然后当我尝试从其他主机-B(IP 192.168.1.8)连接到引导服务器时,无法建立连接。 端口 9092 已经暴露在外部,我可以从主机 B 远程登录。

[root@node-B kafka]# ./bin/kafka-topics.sh --create --topic hehe --bootstrap-server 192.168.1.200:9092 --partitions 3
[2020-12-07 16:42:22,262] WARN [AdminClient clientId=adminclient-1] Connection to node 1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

但是当我尝试从host-B连接到zookeeper服务器时,它也可以连接并创建主题

[root@node-B kafka]# ./bin/kafka-topics.sh -zookeeper 192.168.1.200:2181 --create --topic dummytopic --partitions 1 --replication-factor 1
Created topic dummytopic.

我还可以使用引导服务器从主机 A 创建主题

[root@node-A kafka] #./bin/kafka-topics.sh --bootstrap-server 192.168.1.200:9092 --create --topic testopic --partitions 1 --replication-factor 1
Created topic testopic.

有什么我错过的配置吗?

您正在连接到OUTSIDE侦听器( --bootstrap-server 192.168.1.200:9092 ),它在您的KAFKA_ADVERTISED_LISTENERS中将返回其主机地址为localhost:9092 - 这是您在此错误中看到的内容,因为客户端然后连接到返回的主机( localhost ,Kafka 代理未在其上运行):

Connection to node 1 (localhost/127.0.0.1:9092) could not be established.

您需要为拓扑正确配置侦听器。 本文详细介绍了所有细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM