可以在 Kafka 中配置多个监听器。一个选项listener.security.protocol.map
允许在侦听器配置中多次使用相同的安全协议。
使用环境变量:
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/ https://www.kaaproject.org/kafka-docker/
卡夫卡配置文档:https://kafka.apache.org/documentation/#configuration https://kafka.apache.org/documentation/#configuration(搜索listener.security.protocol.map
选项)。