如何配置kafka集群在停止并重新启动代理后重新选择分区负责人所需的时间?

时间:2016-02-02 17:43:20

标签: apache-kafka apache-zookeeper

我有以下设置:
3名卡夫卡经纪人和3名动物园管理员 1个主题,包含12个分区和3个副本(每个kafka经纪人因此是4个分区的领导者)

我停止其中一个经纪人 - 它从集群中删除,其分区的领导权移动到剩下的两个经纪人

我重新启动代理 - 它再次出现在集群中,最终领导层重新平衡,因此每个代理都是4个分区的领导者。

它工作正常,除了我发现在重新平衡之前花费的时间太长(比如分钟)。这在无负载情况下发生 - 没有消息发送到集群,也不消耗任何消息。

Kafka版本0.9.0.0,zookeeper 3.4.6

zookeeper tickTime = 2000

kafka zookeeper.connection.timeout.ms = 6000

(基本上是默认配置)

有谁知道kafka和/或zookeeper中的配置参数会影响领导者拉平的时间吗?

1 个答案:

答案 0 :(得分:3)

如官方文档http://kafka.apache.org/documentation.html#configuration中所述(有关代理配置的更多详细信息,请参阅scala类kafka.server.KafkaConfig。) 实际上有一个leader.imbalance.check.interval.seconds属性默认为300(5分钟),将其设置为30秒即可满足我的需求。