0

我正在尝试制作一个 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) 
4

1 回答 1

0

卡夫卡没有任何问题。我发现这是巡航控制自我修复,它没有按预期工作(不排除主题)。

于 2020-03-31T01:15:25.490 回答