Amazon ec2 更换主机后,卡夫卡副本不同步

Amazon ec2 更换主机后,卡夫卡副本不同步,amazon-ec2,apache-kafka,apache-zookeeper,Amazon Ec2,Apache Kafka,Apache Zookeeper,您好,卡夫卡/动物园管理员用户 我的团队有一个kafka集群,它与ApacheZooKeeper一起工作。卡夫卡由EC2主持。出于各种原因,EC2主机可能会停机并被新主机替换。与前一个主机(由AWS生成的id,而不是我们生成的id)相比,新主机具有不同的代理id。 此时,zookeeper仍处于旧状态,以前的主机是某些分区的副本。 虽然领导人重新选举成功,但新的替换主机未以任何方式用作领导人或副本 卡夫卡文档中提到过“经纪人再次出现”,但在EC2中,world host被永久替换 在分布式系统术

您好,卡夫卡/动物园管理员用户

我的团队有一个kafka集群,它与ApacheZooKeeper一起工作。卡夫卡由EC2主持。出于各种原因,EC2主机可能会停机并被新主机替换。与前一个主机(由AWS生成的id,而不是我们生成的id)相比,新主机具有不同的代理id。 此时,zookeeper仍处于旧状态,以前的主机是某些分区的副本。 虽然领导人重新选举成功,但新的替换主机未以任何方式用作领导人或副本

卡夫卡文档中提到过“经纪人再次出现”,但在EC2中,world host被永久替换

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

我明白原因。Zookeeper包含每个分区的状态。该状态包含旧的死主机作为先导和/或跟随者。当出现新主机时,此状态不会更新为包含新主机,直到我们手动运行命令来设置副本

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


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

通过启用配置
自动.leader.rebalance.enable
和调整
leader.adjustival.per.broker.percentage
可以自动触发首选领导人选举

然而,您面临的问题是:

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


似乎您必须找到一个方案,该方案能够在发生替换时自动执行
kafka重新分配分区.sh
脚本。没有提供开箱即用的纯自动方案。

谢谢您提供的信息!我们已经启用了
auto.leader.rebalance.enable
。但这仍然要求我们将新的代理id指定为“副本列表”中的第一个条目,无论我们在哪里需要它作为分区的领导者。我想我们必须找到一种方法来运行上面提到的脚本。可能是在自动缩放组中添加生命周期挂钩。是否修复了这种情况?我仍然不能为ISR使用新的代理或领导,尽管它有一个代理ID。我们可以通过设置最小ISR编号来解决这个问题吗?