我有3个Kafka brokers运行在一个隔离的网络区域,我的客户端无法直接连接它们,所以我必须使用VIP(虚拟ip)连接这些brokers。
例如:
我的经纪人的IP是:10.5.1.5, 10.5.1.6, 10.5.1.7
,
我的贵宾ip是:200.100.1.5, 200.100.1.6, 200.100.1.7
,他们是一对一配对的。
所以当我指示引导列表为200.100.1.5
时,集群会响应混合的VIP和Broker ip,例如:10.5.1.5, 10.5.1.6, 200.100.1.5, 200.100.1.6 ...
,则连接失败,因为我的程序无法到达broker的ip,只能到达VIP。
我当前的配置如下,它同时响应IP和VIP:
listeners=INTERNAL://:9092,EXTERNAL_PLAINTEXT://:8080
advertised.listeners=EXTERNAL_PLAINTEXT://200.100.1.5:8080,INTERNAL://10.5.1.5:9092
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT
inter.broker.listener.name=INTERNAL
我怎么能让Kafka只回复VIP列表呢?
我已经得到了答案,可能是这样的:
advertised.listeners=PLAINTEXT://200.100.1.5:8080
listeners=PLAINTEXT://10.5.1.5:9092
And remove the listener.security and inter.broker.
发布于 2018-04-09 18:10:19
您可以使用名为advertised.listeners
的代理设置来告诉您的代理在其对客户端的响应中包含不同的IP/主机名。
advertised.listeners
发布到ZooKeeper以供客户端使用的
侦听器(如果与
listeners
配置属性不同)。在IaaS环境中,这可能需要与代理绑定到的接口不同。如果未设置此项,将使用listeners
的值。与listeners
不同,通告0.0.0.0元地址是无效的。
在您的示例中,对于第一个代理,您可以拥有:
advertised.listeners=PLAINTEXT://200.100.1.5:9092
listeners=PLAINTEXT://10.5.1.5:9092
https://stackoverflow.com/questions/49723181
复制相似问题