[英]Connect host kafka from inside docker contained spring boot service
[英]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.