更换主机后kafka副本不同步

hsgswve4  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(566)

你好,Kafka/zookeeper用户,
我的团队有一个kafka集群,它与apachezookeeper一起工作。Kafka在ec2上举行。出于各种原因,ec2主机可能会宕机并被新主机替换。新主机的代理id与前一个不同(由aws生成,而不是由我们生成)。此时,zookeeper仍处于旧状态,以前的主机是某些分区的副本。虽然领导人重新选举成功,但新的替换主机没有以任何方式用作领导人或副本。
Kafka的文档中提到过一段时间后“代理再次出现”,但在ec2世界中,主机被永久替换。
在分布式系统术语中,我们只尝试处理“失败/恢复”故障模型,其中节点突然停止工作,然后进行恢复(可能不知道它们已经死亡)。
我明白原因。zookeeper包含每个分区的状态。该状态包含旧的死亡主机作为领导者和/或追随者。当出现新主机时,此状态不会更新为包含新主机,直到我们手动运行命令来设置副本。
Kafka有没有办法自动利用新的经纪人作为领导者或isr?
这对我们的团队造成了很大的操作负担,需要手动将新代理指定为副本,并触发“首选领导人选举”。

hm2xizp9

hm2xizp91#

首选领导人选举可以通过打开配置自动触发 auto.leader.rebalance.enable 和调谐 leader.imbalance.per.broker.percentage .
但是,您面临的问题是:
新服务器不会自动分配任何现有的数据分区,因此除非将分区移动到新服务器,否则在创建新主题之前,它们不会执行任何工作。
看来你得想出一个能自动执行的方案 kafka-reassign-partitions.sh 每当发生替换时编写脚本。没有提供开箱即用的纯自动方案。

相关问题