写在前面
上篇文章我们介绍了新增节点后分区怎么重新负载,但这种情况很少发生。因为kafka单机负载能力很是强悍,一般3个节点即可,5个节点的都很少见。
然而很大概率出现的问题是有个节点宕机了怎莫办?没错,答案就是重启。
但重启后会面临一个问题,broker的宕机重启,会引发Leader分区和Follower分区的角色转换,最后可能Leader大部分都集中在少数几台broker上,由于Leader负责客户端的读写操作,此时集中Leader分区的少数几台服务器的网络I/O,CPU,以及内存都会很紧张。
别担心,kafka自动再均衡脚本: kafka-preferred-replica-election.sh会帮我们初始的副本分配。
一. 副本自动再均衡
1.1指定再均衡的主题及其分区
cat preferred.json
- 内容示例
{
"partitions": [
{
"topic":"your topic's name",
"partition":0
},
{
"topic":"your topic's name",
"partition":1
},
{
"topic":"your topic's name",
"partition":2
}
]
}
-
参数说明
topic再均衡主题名
partition当前主题分区
1.2 执行脚本
kafka-preferred-replica-election.sh --zookeeper your zookeeperIP:PORT --path-to-json-file preferred.json
至此操作完毕
1.3 查看副本情况和原来对比
kafka-topics.sh --zookeeper your zookeeperIP:PORT --describe --topic your topic's name
至此就恢复了最初情况