gpt4 book ai didi

docker - 配置 Kafka 以接受来自 docker 内部和外部的客户端

转载 作者:行者123 更新时间:2023-12-01 06:03:07 31 4
gpt4 key购买 nike

我在 docker 网络中运行 Apache Kafka。 Kafka 代理的容器称为 docker_kafka。我想要的是允许来自另一个 docker 容器以及 docker 主机的来自 Kafka 客户端的连接。 docker_kafka 的 9092 端口已映射到 docker 主机。

我一直在尝试KAFKA_LISTENERSKAFKA_ADVERTISED_LISTENERS环境变量。例如当我使用 KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 ,则另一个 docker kafka 客户端无法通过 PLAINTEXT://docker_kafka:9092 连接到 kafka反之亦然。它不允许具有相同端口号和协议(protocol)的多个地址。

有没有办法允许两种类型的连接?

最佳答案

可以在 Kafka 中配置多个监听器。一个选项listener.security.protocol.map允许在监听器配置中多次使用相同的安全协议(protocol)。

使用环境变量:

1.根据需要定义到尽可能多的监听器别名的映射:

KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER1:PLAINTEXT,LISTENER2:PLAINTEXT

2.然后,使用别名配置监听器。果然,为了让这个工作每个监听器需要在自己的主机+端口上监听:
KAFKA_LISTENERS: LISTENER1://0.0.0.0:9092,LISTENER2://0.0.0.0:9093

3.根据广告的听众配置。例如:
KAFKA_ADVERTISED_LISTENERS: LISTENER1://hostname1:9092,LISTENER2://hostname2:9093

4.最后,集群要工作,它需要知道使用哪个监听器来进行节点之间的通信:
KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER1

请注意,只有在广播地址( 0.0.0.0)上声明了监听器时,我才能使此配置工作。我试图声明监听器以监听固定主机名,但这使我的配置无法操作(得到 connection refused 错误)。我很高兴能有评论解释这部分。

我不是这个想法的作者(并且不相信它)。我在这篇博文中找到了这个解决方案: https://www.kaaproject.org/kafka-docker/

Kafka 配置文档: https://kafka.apache.org/documentation/#configuration (搜索 listener.security.protocol.map 选项)。

关于docker - 配置 Kafka 以接受来自 docker 内部和外部的客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43083367/

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