apache-kafka - 在滚动升级/重启期间,如何检测 kafka 代理何时“完成”?
问题描述
我需要自动滚动重启 kafka 集群(3 个 kafka 代理)。我可以很容易地手动完成 - 一个接一个地重新启动,同时检查日志以查看何时正常(例如,当新进程加入集群时)。
自动化此检查的好方法是什么?我如何询问代理它是否已启动并运行,是否连接到它的对等点,所有主题是否都是最新的等等?在我的重启脚本中,我可以访问这些指标,但坦率地说,我并没有真正看到一个让我清楚了解的指标。
另一种方法是询问一个好的“就绪”探测是什么,它不只是检查一些 TCP/IP 端口,而是查看实际的服务器......
解决方案
我建议公开 JMX 指标并跟踪以下集群运行状况
- 控制器计数(在整个集群中必须为 1)
- 在复制分区下(对于健康的集群应该为零)
- 不干净的领导者选举(如果您不禁用此功能,请
server.properties
确保指标计数中没有) - ISR 在合理的时间段内缩小,例如 10 分钟窗口(应该没有)
此外,Yelp 具有用 Python 实现的滚动重启工具,这需要在代理上安装 Jolokia JMX 代理,它会轮询指标以确保上述某些条件为真
推荐阅读
- php - Authorize.Net API 限制 1000 个结果。如何克服它?
- java - 进行同时 WebClient 调用并仅获取第一个已完成的调用
- r - Rmarkdown 打印很多很多文件
- python - 编写一个程序来制作一个八进制金字塔并对最后一行求和
- python - 简单索引类与另一个类索引混淆
- reactjs - AWS Cognito 身份服务提供商似乎将访问令牌存储在本地存储中。这安全吗?
- laravel - laravel eloquent 过滤关系模型值与基本模型 id
- python - PYODBC--未找到数据源名称。如何获取有效的连接字符串
- gpu - IDXGIDevice::SetGPUThreadPriority 的作用是什么?
- python - 如何在硒上处理电报网络的登录身份验证密钥