我正在学习kafka主备集群,通过阅读cloudera的文章使用配置的DNS别名连接到集群,我有一些问题
上述链接文章的重要部分:如果客户端发现了一个集群并正在积极使用它,并且该集群突然停止,则客户端会尝试连接到在引导阶段之前从 DNS 服务器获取的引导服务器。 因此,即使 DNS 记录已更改,它也不会自动向 DNS 服务器请求新的引导服务器,也不会故障转移到其他集群。
我的问题:有什么解决方案可以自动切换kafka客户端重新连接standy集群而不需要重启kafka客户端吗?
我使用dnsmasq服务模拟容灾场景,发现Kafka客户端无法自动切换连接的standy集群,除非我手动重启kafka客户端
我尝试了相同的方法,即使在强制触发重新平衡(通过创建假消费者)时,我观察到每个客户端都使用缓存的元数据直接与协调器交互,而无需再次查询引导服务器。
因此,不会重新查询引导服务器信息,强制执行此操作的唯一方法是重新启动客户端。
metadata.max.age.ms 参数还会导致从协调器请求元数据,而不是从引导服务器中设置的 DNS。
总而言之,目前除了重启客户端之外,似乎没有办法强制客户端重新查询引导服务器。
卡夫卡峰会上分享的例子是一个有希望的注释:
Uber 的 Kafka 集群联盟 在这种情况下,他们提到无需重新启动即可实现此目的,但视频没有提供有关他们使用的方法的具体细节。