代理重新启动后,java kafka-client无法重新连接

时间:2018-10-02 15:40:31

标签: kubernetes apache-kafka

我在kafka-streams和spring-kafka应用程序中遇到同样的问题。第一个使用kafka-clients:1.0.0库,而另一个使用1.0.2版本

在kubernetes中仅运行一个代理实例(KAFKA_ADVERTISED_LISTENERS =“ PLAINTEXT:// $ {POD_IP}:9092”)。它是有状态的集合,可以通过无头服务内部端点从客户端应用程序访问(尽管我已经尝试过集群ip,并且问题相同)

一旦我删除了这个kafka pod并重新创建,我的客户端应用程序将无法重新连接。确实使用另一个IP地址重新创建了Pod,但是由于我是通过服务内部端点访问它的,因此我希望我的客户端应用程序能够解析这个新地址,但不会发生。

kafka-clients库正在记录“找到的负载最小的节点[old_ip]:9092(id:0机架:空)”,而该地址上没有任何内容

JVM TTL缓存不是问题,因为我已将其设置为定期刷新。

重新启动客户端应用程序可以解决问题

如果在KAFKA_ADVERTISED_LISTENERS中提供{POD_IP}会导致此问题,那么提供Pod的主机名是否可以解决此问题?还是有一种方法可以指导我的客户解决这个新地址?

1 个答案:

答案 0 :(得分:0)

似乎与KAFKA-7755有关。将客户端版本更新到2.2.0 / 2.1.1应该会有所帮助。