1、生产环境下
可通过配置auto.leader.rebalance.enable=true实现topic Leader的自动负载均衡
2、kafka-preferred-replica-election
在创建一个topic时,kafka尽量将partition均分在所有的brokers上,并且将replicas也均分在不同的broker上。
每个partitiion的所有replicas叫做"assigned replicas","assigned replicas"中的第一个replicas叫"preferred replica",刚创建的topic一般"preferred replica"是leader。leader replica负责所有的读写。
但随着时间推移,broker可能会停机,会导致leader迁移,导致机群的负载不均衡。我们期望对topic的leader进行重新负载均衡,让partition选择"preferred replica"做为leader。
kafka-preferred-replica-election命令便是用于对Leader进行重新负载均衡
3、kafka-preferred-replica-election用法
用法1: 触发对所有的topic Leader进行负载均衡
kafka-preferred-replica-election --zookeeper zk:2181
2、针对某个topic
bin/kafka-preferred-replica-election.sh --zookeeper localhost:2181 --path-to-json-file topicPartitionList.json
topicPartitionList.json:
{"partitions":[{"topic":"topic","partition": 0},{"topic":"topic","partition": 1},{"topic":"topic","partition": 2},{"topic":"topic","partition": 3},{"topic":"topic","partition": 4},{"topic":"topic","partition": 5},{"topic":"topic","partition": 6},{"topic":"topic","partition": 7}]}
3、新版本
./kafka-leader-election.sh --bootstrap-server ... --topic ... --election-type PREFERRED --partition 3