首页 > 解决方案 > 在滚动升级/重启期间,如何检测 kafka 代理何时“完成”?

问题描述

我需要自动滚动重启 kafka 集群(3 个 kafka 代理)。我可以很容易地手动完成 - 一个接一个地重新启动,同时检查日志以查看何时正常(例如,当新进程加入集群时)。

自动化此检查的好方法是什么?我如何询问代理它是否已启动并运行,是否连接到它的对等点,所有主题是否都是最新的等等?在我的重启脚本中,我可以访问这些指标,但坦率地说,我并没有真正看到一个让我清楚了解的指标。

另一种方法是询问一个好的“就绪”探测是什么,它不只是检查一些 TCP/IP 端口,而是查看实际的服务器......

标签: apache-kafkaupgrade

解决方案


我建议公开 JMX 指标并跟踪以下集群运行状况

  • 控制器计数(在整个集群中必须为 1)
  • 在复制分区下(对于健康的集群应该为零)
  • 不干净的领导者选举(如果您不禁用此功能,请server.properties确保指标计数中没有)
  • ISR 在合理的时间段内缩小,例如 10 分钟窗口(应该没有)

此外,Yelp 具有用 Python 实现的滚动重启工具,这需要在代理上安装 Jolokia JMX 代理,它会轮询指标以确保上述某些条件为真


推荐阅读