Kafka topic leader 均衡

DevOpSec
• 阅读 403

Kafka topic leader 均衡


背景

在创建一个topic时,partition会在Broker集群上均分,每个partition的所有replicas叫做”assigned replicas”,”assigned replicas”中的第一个replicas叫”preferred replica”。

刚创建的topic一般”preferred replica”是leader。leader replica负责所有的读写。

随着时间推移,broker可能会停机,会导致leader迁移,导致机群的负载不均衡。需要对topic的leader进行重新负载均衡,让partition选择”preferred replica”做为leader。

简单来说:leader 均衡就是让topic 的分区leader 选择的是优先副本

操作

先查看 topic 情况

1
bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe  --topic logdata-es

生成主题列表 json 文件

1
2
3
4
5
6
7
8
9
10
11
{
"partitions":
[
{"topic": "logdata-es", "partition": 0},
{"topic": "logdata-es", "partition": 1},
{"topic": "logdata-es", "partition": 2},
{"topic": "logdata-es", "partition": 3},
{"topic": "logdata-es", "partition": 4},
{"topic": "logdata-es", "partition": 5}
]
}

执行均衡

1
bin/kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181 --path-to-json-file logdata-es-autu.json

再查看 topic 情况

1
bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe  --topic logdata-es

Kafka 有个参数可以控制优先副本选举,即auto.leader.rebalance.enable参数,可以使得Kafka集群自动平衡Leader,只需要在server.properties文件中配置如下设置

1
2
3
leader.imbalance.check.interval.seconds=300 ,每个300秒检查leader的负载均衡情况
leader.imbalance.per.broker.percentage=10,不平衡性超过阈值就自动触发负载均衡
auto.leader.rebalance.enable=true ,默认是开启的

总结

Kafka是允许分区保持一定的不均衡的,单个topic的优先副本均衡,也并不能代表整个集群的优先副本均衡

对于手动执行优先副本选举,也建议采取分批次的方式进行,避免同时进行多个大数据量topic的优先副本选举。


参考链接

Kafka 分区策略

零拷贝

本文转自 https://lihuimintu.github.io/2021/03/10/kafka-leader-reassign/,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
带你掌握不一样的监控进程技术
文章目录1.技术应用背景(about:blank1_6)2.效果展示(about:blank2_11)3.功能代码实现(about:blank3_18)4.知识背景清单(about:blank4_43)5.WMI相关概念(about:blank5WMI_70)6.WMI相关函数(abo
小果果学长 小果果学长
3年前
【编译原理】语义分析S属性定义的自下而上计算
目录一、实验目的(about:blank%E4%B8%80%E3%80%81%E5%AE%9E%E9%AA%8C%E7%9B%AE%E7%9A%84)二、实验任务(about:blank%E4%BA%8C%E3%80%81%E5%AE%9E%E9%AA%8C%E4%BB%BB%E5%8A%A1)三、实验原理(about:blank%E
kelly kelly
3年前
消息队列之Kafka详解
消息队列之Kafka详解1\.什么是Kafka(about:blank1_Kafka_4)2\.Kafka架构(about:blank2_Kafka_15)(about:blank_37)3\.基本概念(about:blank3__40)4\.分区存储(about:blank4
Bill78 Bill78
3年前
Python 函数的定义与使用
文章目录1函数的定义(about:blank1__6)2return与prnt的区别(about:blank2_returnprnt_94)3函数的传参(about:blank3__99)3.1必传参数(about:blank31__103)
Stella981 Stella981
2年前
Kafka设计解析(三):Kafka High Availability (下)
本文在上篇文章基础上,更加深入讲解了Kafka的HA机制,主要阐述了HA相关各种场景,如Brokerfailover、Controllerfailover、Topic创建/删除、Broker启动、Follower从Leaderfetch数据等详细处理过程。同时介绍了Kafka提供的与Replication相关的工具,如重新分配Partition等。
Stella981 Stella981
2年前
Kafka 中两个重要概念:主题与分区
在Kafka中还有两个特别重要的概念—主题(Topic)与分区(Partition)。Kafka中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题(发送到Kafka集群中的每一条消息都要指定一个主题),而消费者负责订阅主题并进行消费。这里补充了对Kafka基本概念(https://www.oschina.net/action
Stella981 Stella981
2年前
Kafka 是怎么存储的?为什么速度那么快?
文章收录地址:JavaBang(https://gitee.com/iByteCoding/JavaBang/tree/master/%E7%B2%BE%E9%80%89%E6%8A%80%E6%9C%AF%E4%B8%93%E6%A0%8F/Kafka%E6%A0%B8%E5%BF%83%E5%8E%9F%E7%90%86) 专注于系统架构、
Stella981 Stella981
2年前
Kafka 原理详解
Kafka原理详解1kakfa基础概念说明Broker:消息服务器,就是我们部署的一个kafka服务Partition:消息的水平分区,一个Topic可以有多个分区,这样实现了消息的无限量存储Replica:消息的副本,即备份消息,存储在其他的broker上,当leader挂掉
Wesley13 Wesley13
2年前
Eclipse插件开发调试篇
介绍本文介绍如何定制一种适合自己项目调试的方式。扩展点查看原文:http://surenpi.com/2015/08/13/eclipse%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91%e8%b0%83%e8%af%95%e7%af%87/(https://www.oschina.net/
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_