通过多个docker容器侦听同一端口

0mkxixxg  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(584)

我提出了一个kafka消息服务,其中kafka代理安装在docker中,位于端口9092上。主机端口9092Map到容器端口9092。现在,我试图提出一个消费者听主机端口9092消费消息。我正在尝试设置消费者容器后,所有的经纪人都使用docker组成。
我得到的错误,当我试图提出消费者是端口9092已经分配
请有人帮助我认识到我的方法是否正确。如果正确的话,我能做些什么来解决这个问题

cnh2zyt3

cnh2zyt31#

KAFKA_ADVERTISED_LISTENERS 需要指定为环境变量 localhost:<port> .
默认情况下,kafka侦听器将在9092端口上侦听,当生产者/消费者连接到代理时,它将用 host:9092 .
这里您正在docker中运行它,因此代理元数据列表中的主机将只能在docker网络中访问。
为了让它工作,我们需要让kafka代理在另一个端口上侦听,并将其添加到 advertised.listeners 并为新端口添加端口Map。

ports:
- "29092:29092"
environment: 
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- KAFKA_LISTENERS=INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:29092
- KAFKA_ADVERTISED_LISTENERS=EXTERNAL://localhost:29092,INTERNAL://kafka0:9092
- KAFKA_INTER_BROKER_LISTENER_NAME=INTERNAL
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT

相关问题