![](/img/trans.png)
[英]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.