我有两个kafka经纪人,使用SSL的kafka-0和使用PLAINTEXT的kafka-1(使用Docker图像部署)。
我需要设置security.inter.broker.protocol,以便kafka-0和kafka-1可以相互通信。当我为两个代理将它设置为PLAINTEXT时,kafka-0会出现以下错误:
java.lang.IllegalArgumentException: requirement failed: security.inter.broker.protocol must be a protocol in the configured set of advertised.listeners. The valid options based on currently configured protocols are Set(SSL)
hafka-0的广告听众是
advertised.listeners = SSL://IP_ADDRESS:9092
同时,如果我为两个经纪人设置协议为SSL,kafka-1抱怨:
Error when handling request {topics=[__consumer_offsets]} (kafka.server.KafkaApis) kafka.common.BrokerEndPointNotAvailableException: Broker `0` does not support security protocol `PLAINTEXT`
我需要在设置中进行哪些更改,以便即使使用不同的安全协议,代理也可以相互通信?
答案 0 :(得分:0)
实现这一目标的唯一方法是,如果您让两个经纪人中的一个(或两者)说两种协议。只要一个专门为ssl配置,一个专门为明文配置,它们将无法相互连接。
您可以做的是向ssl代理添加纯文本侦听器:
listeners=PLAINTEXT://:9093,SSL://:9092
advertised.listeners = PLAINTEXT://IP_ADDRESS:9093,SSL://IP_ADDRESS:9092
并将非SSL代理配置为连接到9093,该代理应该可以正常工作,并使当前使用ssl的所有客户端与该代理保持通信。
由于可能有其中一个人只说SSL的原因,因此使用防火墙规则保护明文端口可能是有意义的,这样只有第二个代理可以连接。