gpt4 book ai didi

docker - Kafka访问docker内部和外部

转载 作者:行者123 更新时间:2023-12-04 23:12:37 28 4
gpt4 key购买 nike

我正在尝试使用docker-compose启动kafka服务,并且应该可以在docker内部和外部进行访问。因此,应该在内部和外部设置合适的广告客户:

version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9094:9092"
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://127.0.0.1:9094
KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://127.0.0.1:9094
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE

问题是,当我尝试从群集外部进行连接时,节点名称不是127.0.0.1,而是内部主机名:
$ kafkacat -L -b 127.0.0.1:9094
Metadata for all topics (from broker -1: 127.0.0.1:9092/bootstrap):
1 brokers:
broker 1001 at 91588ea968d4:9092
28 topics:
...

这不是KAFKA_ADVERTISED_LISTENERS和KAFKA_LISTENERS处理这种情况的目的吗?我尝试设置KAFKA_ADVERTISED_HOST_NAME,但是它被忽略了(一个文档说它已被弃用,另一个说它仍然处于事件状态),但这似乎不是答案,因为我想要为两个不同的网络使用两个不同的公告主机名。

我想仍然存在一个老问题:如何使kafka在docker-compose内部和外部工作?

最佳答案

您的监听器配置看起来正确,问题出在您的Docker Compose上:

ports:
- "9094:9092"

您正在将 9094(“外部”)映射回 9092(“内部”),因此,当您连接时,您将连接到“内部”监听器。如果删除此配置行,则您的监听器设置应能按预期工作。

有关更多信息,请参见 http://rmoff.net/2018/08/02/kafka-listeners-explained/

关于docker - Kafka访问docker内部和外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53247553/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com