zookeeper.connection.timeout.ms 的最大值

Maximum value for zookeeper.connection.timeout.ms

现在我们在 AWS EC2 服务器中使用 运行 kafka,zookeeper 在单独的 EC2 实例中也使用 运行。

我们为 kafka 和 zookeeper 创建了一个服务(系统单元),以确保它们在服务器重启时启动。

问题是有时 zookeeper 服务器启动晚了一点,而 kafka 代理到那时被终止了。

因此,为了解决这个问题,我们计划在代理端将 zookeeper.connection.timeout.ms 增加到某个较高的数字,例如 10 分钟。这是一个好方法吗?

在 zookeeper 中增加 zookeeper.connection.timeout.ms 超时是否有任何大小影响?

增加 zookeeper.connection.timeout.ms 可能会或可能不会解决您手头的问题,但有可能需要更长的时间来检测代理软故障。

您可以做几件事: 1)您必须更改系统以启动 kafka 以延迟 10 分钟(您想要放入 zookeper 超时的时间)。 2) 我们正在使用自动处理此类情况的 HDP 集群。

以下是 Kafka 常见问题解答中的解释: 在 broker 软故障期间,例如长时间 GC,它在 ZooKeeper 上的会话可能会超时,因此被视为失败。一旦检测到这种情况,Kafka 会将其当前托管的所有分区领导迁移到其他副本。并且一旦broker从软故障中恢复,它就只能作为它原来领导的分区的follower replica。

要将领导权移回经纪人,可以使用此处的首选领导者选举工具。此外,在 0.8.2 中将添加一个新功能,该功能会定期触发此功能(此处有详细信息)。

要减少 Zookeeper 会话过期时间,请调整 GC 或在代理配置中增加 zookeeper.session.timeout.ms。

https://cwiki.apache.org/confluence/display/KAFKA/FAQ

希望对您有所帮助