首页 文章

更换主机后,Kafka 副本不同步

提问于
浏览
0

你好 Kafka/Zookeeper 用户,

我的团队有一个 kafka 集群,它与 Apache zookeeper 一起工作。 kafka 托管在 EC2 上。出于多种原因,EC2 主机可以关闭并由新主机替换。与前一个主机相比,新主机具有不同的代理 ID(由 AWS 生成的 ID,而不是我们)。此时,zookeeper 仍然具有旧状态,其中先前的主机是某些分区的副本。尽管领导者 re-election 成功发生,但新的替代主机并未以任何方式用作领导者或复制品。

kafka 文档在一段时间之后谈论'经纪人再次出现',但在 EC2 世界主机被永久更换。

在分布式系统术语中,我们只尝试处理“fail/recover”故障模型,其中节点突然停止工作,然后恢复(可能不知道它们已经死亡)。

我理解这个的原因。 Zookeeper 包含每个分区的状态。该状态包含作为领导者 and/or 追随者的旧死宿主。当新主机出现时,在我们手动运行命令来设置副本之前,此状态不会更新以包含新主机。

kafka 有没有办法自动利用新经纪人作为领导者或 ISR?

这给我们的团队带来了很多操作负担,需要手动将新经纪人分配为副本并触发“首选领导者选举”。

1 回答

  • 1

    可以通过打开 config auto.leader.rebalance.enable并调整leader.imbalance.per.broker.percentage来自动触发首选领导者选举。

    但是,您面临的问题是:

    新服务器不会自动分配任何现有数据分区,因此除非将分区移动到它们,否则在创建新主题之前它们不会执行任何工作。

    似乎你必须找出一个能够在发生替换时自动执行kafka-reassign-partitions.sh脚本的方案。没有 purely-automatic 计划提供开箱即用。

相关问题