Kafka什么时候轮换分区领导者?我们有什么财产可以控制它吗?

Raj*_*Raj 4 apache-kafka

我想了解 Kafka 多久轮换一次分区领导者?我们有什么财产可以控制它吗?

mik*_*ike 6

分区领导者在创建主题时分配。根据 Kafka 关于副本管理的文档,分区的分配是以循环方式进行的:

我们尝试以循环方式平衡集群内的分区,以避免将大量主题的所有分区聚集在少量节点上。同样,我们尝试平衡领导力,以便每个节点都是其分区中一定比例份额的领导者。

在理想的情况下,领导者分区不会轮换。然而,在某些情况下,领导者必须移动到另一个代理,例如代理停止和启动以进行维护或更新。然后领导者将转移到另一个同步副本。

要管理领导者分区中的这些转变(例如处理不平衡),您有两种选择。

选项 1:编写 kafka-preferred-replica-election.sh 脚本

该命令行工具可用于帮助将领导力带回副本,因为它们在创建主题时就已存在。请参阅在线文档以了解更多详细信息以及如何使用它。

最简单的例子如下所示。这将触发所有主题的重新分配。

kafka-preferred-replica-election.sh --zookeeper localhost:2181
Run Code Online (Sandbox Code Playgroud)

选项 2:使用代理配置进行自动重新平衡

在代理级别,您可以使用以下配置来帮助您引导主题领导者的自动重新平衡:

  • auto.leader.rebalance.enable:启用自动领导平衡。后台线程定期检查分区领导者的分布,可通过 进行配置leader.imbalance.check.interval.seconds。如果领导者不平衡超过leader.imbalance.per.broker.percentage,则触发领导者重新平衡到分区的首选领导者。(默认为true

  • Leader.imbalance.check.interval.seconds:控制器触发分区重新平衡检查的频率。(默认为 300)

  • Leader.imbalance.per.broker.percentage:每个经纪人允许的领导者不平衡比率。如果每个经纪人的余额超过此值,控制器将触发领导者余额。该值以百分比指定。(默认为 10)