[英]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.