我正在尝试制作一个 kafka 监控服务,它需要在集群中的每个代理上至少有一个主题分区。我最初分配了分区。我已将复制因子设置为 1,min.insync.replicas 也是 1,并且我正在使用带有 acks = all 的同步生产者进行生产。
分区代理分配最初看起来像这样
Partition 0 : Broker 0 (Leader) , Broker 0 (Preferred Leader)
Partition 1 : Broker 1 (Leader) , Broker 1 (Preferred Leader)
Partition 2 : Broker 2 (Leader) , Broker 2 (Preferred Leader)
当我尝试杀死一个代理(例如代理 2)时,其领导者是该代理的分区应该并且正在报告“No Leader”错误。现在因为我有 1 个复制并且只有领导者是同步副本,所以 kafka 不会重新选举任何其他代理作为领导者,这是预期的,直到这里一切都很好。
此时分区代理分配看起来像,
Partition 0 : Broker 0 (Leader) , Broker 0 (Preferred Leader)
Partition 1 : Broker 1 (Leader) , Broker 1 (Preferred Leader)
Partition 2 : -1 , Broker 2 (Preferred Leader)
问题:但是当该代理恢复时,分区的领导者和首选领导者都会更新为其他一些代理。我不明白这一点,也不是预期的。那么,我是否缺少任何配置,或者有没有人遇到过这个问题?
分区代理分配是这样的。为什么??
Partition 0 : Broker 0 (Leader) , Broker 0 (Preferred Leader)
Partition 1 : Broker 0 (Leader) , Broker 0 (Preferred Leader)
Partition 2 : Broker 0 (Leader) , Broker 0 (Preferred Leader)