目录
- 一、Leader Partition自动平衡的概述
- 二、Leader Partition自动平衡的相关配置参数
- 三、Leader Partition自动平衡的示例
一、Leader Partition自动平衡的概述
- 正常情况下,Kafka本身会自动把Leader Partition均匀分散在各个机器上,来保证每台机器的读写吞吐量都是均匀的。但是如果某些broker宕机,会导致Leader Partition过于集中在其他少部分几台broker上,这会导致少数几台broker的读写请求压力过高,其他宕机的broker重启之后都是follower partition,读写请求很低,造成集群负载不均衡。
二、Leader Partition自动平衡的相关配置参数
-
配置参数
参数名称 描述 auto.leader.rebalance.enable 默认是 true,自动 Leader Partition 平衡。生产环境中,leader 重选举的代价比较大,可能会带来性能影响,建议设置为 false 关闭。 leader.imbalance.per.broker.percentage 默认是 10%。每个 broker 允许的不平衡的 leader的比率。如果每个 broker 超过了这个值,控制器会触发 leader的平衡。 leader.imbalance.check.interval.seconds 默认值 300 秒。检查 leader 负载是否平衡的间隔时间
三、Leader Partition自动平衡的示例
- 假设集群只有一个onetopic主题。如下图所示
- 如下图所示:针对第一个节点,分区的AR优先副本是3节点,但是3节点却不是Leader节点,所以不平衡数加1,AR副本总数是4。所以broker0节点不平衡率为1/4>10%,需要再平衡。
- 如下图所示:第三个节点和第四个节点节点与第一个节点不平衡率一样,需要再平衡。第二个节点的不平衡数为1,不需要再平衡。