Kafka topic leader 均衡

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 情况

<table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe --topic logdata-es</span><br></pre></td></tr></tbody></table>

生成主题列表 json 文件

<table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">{</span><br><span class="line"> "partitions":</span><br><span class="line"> [</span><br><span class="line"> {"topic": "logdata-es", "partition": 0},</span><br><span class="line"> {"topic": "logdata-es", "partition": 1},</span><br><span class="line"> {"topic": "logdata-es", "partition": 2},</span><br><span class="line"> {"topic": "logdata-es", "partition": 3},</span><br><span class="line"> {"topic": "logdata-es", "partition": 4},</span><br><span class="line"> {"topic": "logdata-es", "partition": 5}</span><br><span class="line"> ]</span><br><span class="line">}</span><br></pre></td></tr></tbody></table>

执行均衡

<table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bin/kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181 --path-to-json-file logdata-es-autu.json</span><br></pre></td></tr></tbody></table>

再查看 topic 情况

<table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe --topic logdata-es</span><br></pre></td></tr></tbody></table>

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

<table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">leader.imbalance.check.interval.seconds=300 ,每个300秒检查leader的负载均衡情况</span><br><span class="line">leader.imbalance.per.broker.percentage=10,不平衡性超过阈值就自动触发负载均衡</span><br><span class="line">auto.leader.rebalance.enable=true ,默认是开启的</span><br></pre></td></tr></tbody></table>

总结

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

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


参考链接

Kafka 分区策略

零拷贝

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

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

带你掌握不一样的监控进程技术

文章目录1.技术应用背景(about:blank1_6)2.效果展示(about:blank2_11)3.功能代码实现(about:blank3_18)4.知识背景清单(about:blank4_43)5.WMI相关概念(about:blank5WMI_70)6.WMI相关函数(abo

【编译原理】语义分析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

消息队列之Kafka详解

消息队列之Kafka详解1\.什么是Kafka(about:blank1_Kafka_4)2\.Kafka架构(about:blank2_Kafka_15)(about:blank_37)3\.基本概念(about:blank3__40)4\.分区存储(about:blank4

Python 函数的定义与使用

文章目录1函数的定义(about:blank1__6)2return与prnt的区别(about:blank2_returnprnt_94)3函数的传参(about:blank3__99)3.1必传参数(about:blank31__103)