在提供有kafka(1 broker)的PoC cloudera集群中,我试图通过公共IP与外部生产者将消息发送到集群。我的群集节点托管在Azure中,并且所有这些节点都可以从运行外部生产者的本地计算机访问。
在这篇出色的文章https://rmoff.net/2018/08/02/kafka-listeners-explained/之后,我弄清楚了我需要的kafka侦听器配置,因为只能从本地计算机访问此代理公用IP,并且在群集内部,它们只能使用其内部主机名进行通信:
listeners=INTERNAL://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
advertised.listeners=INTERNAL://internal-broker-node-hostname:19092,EXTERNAL://public-broker-ip:9092
inter.broker.listener.name=INTERNAL
使用这种配置,当我尝试启动代理时,出现此错误:
org.apache.kafka.common.config.ConfigException: Only one of inter.broker.listener.name and security.inter.broker.protocol should be set.
对于此属性inter.broker.listener.name
,他们说:就像在卡夫卡文档中所说的那样:
用于代理之间的通信的侦听器的名称。如果未设置,则侦听器名称由security.inter.broker.protocol定义。同时设置此属性和security.inter.broker.protocol属性是错误的。
我面临的问题是我无法通过cloudera管理器取消设置security.inter.broker.protocol
,因为我只能在单选按钮中切换选项。
如何取消设置该属性?
答案 0 :(得分:0)
内部和外部只是字符串
因此,您可以为CDH设置PLAINTEXT,而只需将外部监听器重新定义为已发布
listeners=PLAINTEXT://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092
listener.security.protocol.map=EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
advertised.listeners=PLAINTEXT://internal-broker-node-hostname:19092,EXTERNAL://public-broker-ip:9092
您还需要确保您的外部代理IP是静态的