[英]Unfair Leader election in Kafka - Same leader for all partitions
我有一個帶有5個分區的Kafka集群。 縮減至3時,領導者選舉進行了數次。
最終,只有一個經紀人成為我主題之一的所有3個分區的領導者。
Topic: test PartitionCount:3 ReplicationFactor:3
Topic: test Partition: 0 Leader: 2 Replicas: 2,0,1 Isr: 2,1,0
Topic: test Partition: 1 Leader: 2 Replicas: 3,1,2 Isr: 2,1
Topic: test Partition: 2 Leader: 2 Replicas: 4,2,3 Isr: 2
2,1,0是正在運行的代理。
分區0可用2、0、1。所有代理都可用。 因此,isr = 2,1,0
分區1可與3、1、2一起使用,但刪除了3個代理。 所以isr = 2,1
分區2可用於4,2,3,但兩個4,3均已刪除代理。 所以isr = 2
請注意,只有2位當選為領導者。 即使我們假設它在其他代理中具有最高的水印,給定分區的所有ISR也可能已經同步,因此,給定分區的所有ISR都具有相同的偏移量(否則它們將從ISR中刪除)。
我已經等待了很多時間(有一段時間,如果其中一個副本達不到要求,它將被從ISR中刪除),但這仍然是領導者的選舉。
領導者可以平均分配(負載均衡)。
For example, partition-0 leader can be 0
partition 1 leader can be 1
partition 2 leader can be 2
為什么不是這樣?
注意:我沒有啟用unclean leader election
。 僅是默認值。
如果我們假設領導人選舉發生后出現了0.1,那為什么不進行連任呢? 如果更新了ISR,理想情況下,領導者也應該進行更新。 是不是
例如,如果卡夫卡知道0,1已經建立並且具有同步副本,則它應該再次進行一次領導人選舉。
是否有任何特定原因為什么不這樣呢?
Kafka具有首選領導者的概念,這意味着如果可能,它將選擇該副本作為領導者。 副本列表中列出的第一個副本是首選的領導者。 現在查看當前集群狀態:
Topic: test Partition: 0 Leader: 2 Replicas: 2,0,1 Isr: 2,1,0
Topic: test Partition: 1 Leader: 2 Replicas: 3,1,2 Isr: 2,1
Topic: test Partition: 2 Leader: 2 Replicas: 4,2,3 Isr: 2
如果您的所有經紀人都將恢復同步,則默認情況下,Kafka將重新選擇首選領導者(或者可以使用kafka-preferred-replica-election.sh
工具強制其kafka-preferred-replica-election.sh
,請參見平衡領導者 )。
如果丟失的代理不會重新啟動,則可以更改分區的副本分配,以使用kafka-reassign-partitions.sh
工具手動平衡領導地位 。 只需確保將首選領導者作為副本列表中的第一項即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.