【问题标题】:Does Kafka Preferred leader gets updated ever, even if the brokers are all up?Kafka Preferred 领导者是否会不断更新,即使经纪人都已启动?
【发布时间】:2020-03-29 04:12:54
【问题描述】:

我正在尝试做一个 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)时,其领导者是该代理的分区应该并且正在报告“没有领导者”错误。现在因为我有 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) 

【问题讨论】:

  • 顺便说一句,如果将复制因子设置为 1,则 acks=all 与 acks=1 相同
  • 我不太明白这个问题。你如何得到这个输出?无法将领导者分配给数据不存在的代理...似乎您可能已经杀死了控制器代理或 Zookeeper
  • 我在 kafka 管理器上得到这个输出。我没有接触过 zookeeper 或控制器代理,实际上我只是注意到,即使没有代理被杀死,首选和领导者正在转移,我不理解这种行为。如果我的 qps 非常低,kafka 内部是否有任何重新分配策略?我的 qps 非常低,而且我的设置中始终存在 0 消费者延迟。
  • 您如何检查哪个代理是控制器?那是broker之一,它在与Zookeeper通信的同时负责leader管理

标签: go apache-kafka kafka-producer-api sarama


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 2019-01-28
    • 2021-06-18
    • 2020-11-13
    • 1970-01-01
    • 2021-11-08
    • 2018-04-15
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多