在创建一个topic时,kafka尽量将partition均分在所有的brokers上,并且将replicas也j均分在不同的broker上。
每个partitiion的所有replicas叫做”assigned replicas”,”assigned replicas”中的第一个replicas叫”preferred replica”,刚创建的topic一般”preferred replica”是leader。leader replica负责所有的读写。
但随着时间推移,broker可能会停机,会导致leader迁移,导致机群的负载不均衡。我们期望对topic的leader进行重新负载均衡,让partition选择”preferred replica”做为leader。
查看topic详情
1 | ./kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe --topic logdata-es |
编辑相应topic的json文件
vim logdata-es-autu.json
1 | { |
执行
1 | ./kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181 --path-to-json-file logdata-es-autu.json |
之后在查看
1 | Topic:logdata-es PartitionCount:6 ReplicationFactor:2 Configs: |
官方说明
https://cwiki.apache.org/confluence/display/KAFKA/Replication%20tools
如果你感觉文章还可以的话,请帮点点下面的广告。谢谢!