我的kafka版本为kafka_2.9.2-0.8.1.1
。我在集群中有两个代理,4个主题,每个主题有4个分区。
当我跑步时
sh kafka-topics.sh --describe --zookeeper rhost:2181
对于所有主题/分区,我将经纪人1视为领导者。
如何平衡领导者?
例如,对于主题1和主题2,将经纪人1作为领导者和 对于主题3和主题4,经纪人2作为领导者。
答案 0 :(得分:9)
应自动重新平衡分区,因为代理配置参数auto.leader.rebalance.enable
的默认值为true
。 (见documentation)
但是,默认情况下,此重新平衡每5分钟发生一次,由leader.imbalance.check.interval.seconds
参数定义。如果您希望更频繁地发生这种情况,则必须修改此参数。
答案 1 :(得分:8)
您可以使用Preferred Replica Leader Election Tool:
sh kafka-preferred-replica-election.sh --zookeeper zklist
这可以保证群集中经纪人的领导负荷均衡。
答案 2 :(得分:1)
我知道有点晚了,也许你已经有了答案,但为了平衡领导者,首先你需要让经纪人在所有分区之间同样优先,因为经纪人是首选领导者,它有两个标准首先它需要要成为insync副本,其次必须是副本列表中的第一个元素(奇怪的IMO),所以如果你有足够多的主题/分区,那么手动操作会更容易,否则你需要重新分配分配所有经纪人中的第一个元素(首选副本),然后启动首选领导者选举工具,这将确保首选领导者实际上是领导者。
答案 3 :(得分:0)
经纪人拥有一个可以在server.properties
文件中设置的属性,该属性可以自动重新平衡领导层。默认情况下,它未启用。将以下代码行添加到每个代理并重新启动kafka。
auto.leader.rebalance.enable=true