在滚动升级/重启期间,如何检测kafka经纪人何时“完成”?

问题描述 投票:3回答:3

我需要自动重启kafka集群(3个kafka经纪人)。我可以轻松地手动完成 - 一个接一个地重启,同时检查日志以查看它何时正常(例如,当新进程加入集群时)。

什么是自动化检查的好方法?我怎样才能询问经纪人是否已启动并运行,与同行连接,所有主题是最新的等等?在我的重启脚本中,我可以访问指标,但坦率地说,我没有真正看到那里给我一个清晰的图片。

另一种方法是询问一个好的“准备”探测器不仅仅是检查一些TCP / IP端口,而是查看实际的服务器......

apache-kafka upgrade
3个回答
2
投票

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

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

此外,Yelp has tooling for rolling restarts在Python中实现,需要在代理上安装Jolokia JMX代理,并且它会轮询指标以确保上述某些条件为真


0
投票

假设您的群集在重新启动操作开始时是健康的,至少在每个代理重新启动之后,您应确保在重新启动下一个代理之前,重复数据删除的分区计数返回到零。

正如之前的响应者所提到的那样,现有的代码可以实现自动化。我自己也不使用Jolikia,但我的解决方案(我现在正在处理)也使用JMX指标。


0
投票

除了@ cricket_007所说的,你还可以在代理端口上进行简单的轮询以查看它,然后向代理发出一个像kafka.tools.GetOffsetShell这样的良性命令,以确保它正常运行。


0
投票

Yelp的Kakfa Utils是可用于检测卡夫卡经纪人何时“完成”的最佳工具之一。具体来说,kafka_rolling_restart是从zookeeper获取经纪人详细信息并从每个经纪人获取URP(Under Replicated Partitions)指标的工具。重新启动代理时,会定期收集Kafka集群中的总URP,当它变为零时,它将重新启动另一个代理。控制器代理在最后重启。

© www.soinside.com 2019 - 2024. All rights reserved.