重新启动代理后,我发现一个主题的领导者中的所有分区都在代理3中,并且我设置了
imbalance.check.interval.seconds300,auto.leader.rebalance.enableTrue,但300秒后没有任何反应。
所以我使用了bin/kafka-preferred-replica-election.sh,并得到了我所期望的结果,领导者被平衡为经纪人 1、2、3。
我想知道为什么自动重新平衡没有发生?kafka-preferred-replica-election.sh和 和有什么区别auto.leader.rebalance.enable?
控制器日志:
[2019-08-14 09:31:33,454] INFO [Controller id=3] 处理自动首选副本领导者选举(kafka.controller.KafkaController)[2019-08-14 09:31:33,454] TRACE [Controller id=3 ] 检查是否需要触发自动领导者平衡(kafka.controller.KafkaController)[2019-08-14 09:31:33,455] DEBUG [Controller id=3] Broker 首选副本 Map(2 -> Map(__consumer_offsets-22 ->矢量(2),__consumer_offsets-4->矢量(2),__consumer_offsets-7->矢量(2),__consumer_offsets-46->矢量(2),__consumer_offsets-25->矢量(2),__consumer_offsets-49->矢量(2),__consumer_offsets-16->矢量(2),__consumer_offsets-28->矢量(2),__consumer_offsets-31->矢量(2),__consumer_offsets-37->矢量(2),__consumer_offsets-19->矢量(2),__consumer_offsets-13 - >矢量(2),fourth_topic-1 - >矢量(2,3,1),__consumer_offsets-43 - >矢量(2),__consumer_offsets-1 - >矢量(2),__consumer_offsets -34 -> 矢量(2), __consumer_offsets-10 -> 矢量(2), __consumer_offsets-40 -> 矢量(2)), 1 -> 地图(__consumer_offsets-30 -> 矢量(1), __consumer_offsets-21 ->矢量(1),__consumer_offsets-27->矢量(1),__consumer_offsets-9->矢量(1),__consumer_offsets-33->矢量(1),__consumer_offsets-36->矢量(1),__consumer_offsets-42->矢量(1),__consumer_offsets-3 - >矢量(1),__consumer_offsets-18 - >矢量(1),__consumer_offsets-15 - >矢量(1),__consumer_offsets-24 - >矢量(1),__consumer_offsets-48 - >矢量(1),__consumer_offsets-6 - >矢量(1),fourth_topic-0 - >矢量(1,2,3),__consumer_offsets-0 - >矢量(1),__consumer_offsets-39 - >矢量(1),__consumer_offsets -12 -> 矢量(1), __consumer_offsets-45 -> 矢量(1)), 3 -> 地图(__consumer_offsets-8 -> 矢量(3), __consumer_offsets-35 -> 矢量(3), __consumer_offsets-41 ->矢量(3),__consumer_offsets-23->矢量(3),__consumer_offsets-47->矢量(3),fourth_topic-2->矢量(3,1,2),__consumer_offsets-38->矢量(3),__consumer_offsets -17 -> 矢量(3), __consumer_offsets-11 -> 矢量(3), __consumer_offsets-2 -> 矢量(3), __consumer_offsets-14 -> 矢量(3), __consumer_offsets-20 -> 矢量(3), __consumer_offsets -44 -> 矢量(3), __consumer_offsets-5 -> 矢量(3), __consumer_offsets-26 -> 矢量(3), __consumer_offsets-29 -> 矢量(3), __consumer_offsets-32 -> 矢量(3))) (kafka.controller.KafkaController) [2019-08-14 09:31:33,455] 调试 [控制器 id=3] 主题不在代理 2 的首选副本中 Map(fourth_topic-1 -> Vector(2, 3, 1)) (kafka.controller.KafkaController) [2019-08-14 09:31:33,455] 调试 [控制器 id=3] 主题不在代理 2 的首选副本中 Map(fourth_topic-1 -> Vector(2, 3, 1)) (kafka.controller.KafkaController) [2019-08-14 09:31:33,456] TRACE [Controller id=3] 经纪人 2 的领导者不平衡率为 0.05555555555555555 (kafka.controller.KafkaController) [2019-08-14 09:31:33,456] 调试 [控制器 id=3] 主题不在代理 1 的首选副本中 Map(fourth_topic-0 -> Vector(1, 2, 3)) (kafka. controller.KafkaController) [2019-08-14 09:31:33,456] TRACE [Controller id=3] 代理 1 的领导者不平衡率为 0.05555555555555555 (kafka.controller.KafkaController) [2019-08-14 09:31:33,456] DEBUG [Controller id=3] 主题不在代理 3 Map() (kafka.controller.KafkaController) 的首选副本中 [2019-08-14 09:31:33,456] TRACE [Controller id=3] 代理 3 的领导者不平衡率是 0.0 (kafka.controller.KafkaController)
但 Fourth_topic 分区的领导者仍然全部在代理 3 中:
bin/kafka-topics.sh --zookeeper 10.xx.xx.xx:2181/kafka --topic fourth_topic --describe
Topic:fourth_topic PartitionCount:3 ReplicationFactor:3 Configs:
Topic: fourth_topic Partition: 0 Leader: 3 Replicas: 1,2,3 Isr: 3,1,2
Topic: fourth_topic Partition: 1 Leader: 3 Replicas: 2,3,1 Isr: 3,1,2
Topic: fourth_topic Partition: 2 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2
Run Code Online (Sandbox Code Playgroud)
运行时kafka-preferred-replica-election.sh,它会强制为所有分区选择首选副本。
另一方面,当您设置auto.leader.rebalance.enable为 true 时,Controller 将定期检查不平衡情况(每个leader.imbalance.check.interval.seconds)。然而,为了避免集群上不必要的负载,只有当不平衡率高于leader.imbalance.per.broker.percentage默认值 10% 时,领导者才会自动重新平衡。
您可以在控制器日志中查看当前的不平衡率(默认:${kafka.logs.dir}/controller.log)。
| 归档时间: |
|
| 查看次数: |
9717 次 |
| 最近记录: |