簡體   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