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

时间:2017-01-23 20:37:38

标签: amazon-ec2 apache-kafka apache-zookeeper

Hello Kafka / Zookeeper用户,

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

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

  

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

但是,您遇到的问题是:

  

不会自动为新服务器分配任何现有数据   分区,所以除非分区被移动到它们,否则他们不会做   任何工作,直到创建新主题。

似乎你必须找出一个能够在发生替换时自动执行kafka-reassign-partitions.sh脚本的方案。没有提供纯粹的自动方案。