繁体   English   中英

Kafka - 为什么新主题分区领导者没有当选?

[英]Kafka - why new topic partition leader is not elected?

我有一个3个节点的kafka集群。 当Node#3死掉时,我的_schemas主题停止正常运行,我看到了这个:

kafka-topics --zookeeper localhost:2181 --topic _schemas --describe
Topic:_schemas  PartitionCount:1        ReplicationFactor:2     Configs:cleanup.policy=compact
    Topic: _schemas Partition: 0    Leader: -1      Replicas: 3,2   Isr: 2

所以似乎节点#3已经死了,这就是Leader: -1所指的。 但是为什么Kafka不能像往常一样继续工作,将Node #2指定为新的领导者并将数据复制到#1以便我们有2个同步副本?

我在kafka日志中看到的错误:

kafka.common.NotAssignedReplicaException:
Leader 3 failed to record follower 2's position -1 since the replica is not 
recognized to be one of the assigned replicas 3 for partition <loop over many partitions>

我通过重新启动控制器代理解决了这个问题。 每个kafka集群都有一名经纪人被选为控制人,因此它将协调领导人选举。 我们的情况是控制器卡住了。 为了找到哪个代理是控制器,你可以直接到你的zkCli.sh访问你的kafka集群使用的zookeeper,然后get /controller ,你会在那里看到brokerId。 我通过重启控制器代理很容易解决这个问题,祝你好运。

如果您有一个包含3个kafka代理的集群,并且您的主题只有一个分区,则意味着您只有one分支,并且您正在生成数据并且仅针对此代理进行处理。

如果你想要kafka:

继续像往常一样工作,将节点#2指定为新的领导者

您应该使用3个分区创建主题,每个代理将成为其他分区的领导者,如果其中一个代理将失败,您将能够写入其他分区。

请参阅运行./kafka-topics.sh --zookeeper localhost:2181 --topic _schemas --describe示例./kafka-topics.sh --zookeeper localhost:2181 --topic _schemas --describe

Topic:_schemas    PartitionCount:3    ReplicationFactor:1 Configs:retention.ms=14400000
Topic: _schemas   Partition: 0    Leader: 2   Replicas: 2 Isr: 2
Topic: _schemas   Partition: 1    Leader: 0   Replicas: 0 Isr: 0
Topic: _schemas   Partition: 2    Leader: 1   Replicas: 1 Isr: 1

在此示例中,您可以看到_schemas有3个分区,这意味着所有3个代理都是该主题的领导者,每个代理位于不同的分区上,st代理2是分区0上的领导者,代理0和代理1是分区0上的跟随者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM