[英]Unable to connect kafka to zookeeper with different port using docker compose
[英]Run kafka using docker compose and expose a different port instead of default one
我正在嘗試使用 docker compose 啟動一個 kafka 集群,我正在使用以下配置:
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
command: [start-kafka.sh]
ports:
- "15092:9092"
hostname: kafka
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:15092
KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://:15092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- "zookeeper"
這兩個服務都已啟動並正在運行,但是當我嘗試使用代理external-ip:15092
從外部源生成消息時,我收到以下錯誤:
dial tcp: lookup kafka: no such host
你能幫我弄清楚缺少什么配置嗎?
謝謝
你得到“沒有這樣的主機”,這發生在端口甚至被使用之前。 您需要在同一個 Docker 網絡中的另一個容器中運行代碼才能解析服務名稱
無論如何,Kafka 不會那樣工作(一個簡單的端口轉發)
兩個聽眾仍然設置為 9092
您需要添加/更改包含externalIP:15092
的廣告偵聽externalIP:15092
才能使其工作,並且您可以找到記錄偵聽器差異的多個位置(包括該容器的 wiki 頁面)
所以, KAFKA_LISTENERS: INSIDE://:9092
就是你所需要的(或者更恰當地說,把INSIDE://0.0.0.0:9092
)
但你需要編輯
KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://<your_external_IP>:15092
這是一個暴露不同端口的配置:
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
ports:
- "49815:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
broker:
image: wurstmeister/kafka
container_name: broker
ports:
- "49816:9092"
depends_on:
- zookeeper
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT
KAFKA_LISTENERS: PLAINTEXT://broker:9092,INTERNAL://broker:29092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:49816,INTERNAL://broker:29092
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
關鍵點:
localhost:49816
) 並使用端口9092
綁定到代理。 因此,您需要使用該值為外部連接設置KAFKA_ADVERTISED_LISTENERS
。9092
以通過 Docker 端口綁定獲取來自外部的連接。 因此,您需要在KAFKA_LISTENERS
PLAINTEXT://broker:9092
為外部偵聽KAFKA_LISTENERS
。INTERNAL://broker:29092
設置KAFKA_LISTENERS
和KAFKA_ADVERTISED_LISTENERS
。這是完整的配置鏈接: https ://docs.confluent.io/platform/current/installation/configuration/broker-configs.html#brokerconfigs_listeners(它用於 Confluence 圖像,但它與 wurstmeister 的工作方式相同)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.