背景
线上 flink 用户使用 ZooKeeper 做元数据中心以及集群选主,一些版本的 flink 在 ZooKeeper 选主时,会重启 Job,导致一些非预期的业务损失。而 ZooKeeper 在 zxid溢出时,会主动触发一次选主,就会导致 flink Job 的非预期重启,造成业务损失。本篇从原理和最佳实践上分析和解决由于 ZooKeeper zxid 溢出导致的集群选主问题。检查 ZooKeeper Server 日志出现。
zxid lower 32 bits have rolled over, forcing re-election, and therefore new epoch start
解决方法
ZooKeeper 本身提供当前处理的最大的 Zxid,通过 stat 接口可查看到当前处理的最大的 zxid 的值,通过此值可以计算当前 zxid 距离溢出值还有多少差距。MSE 提供风险管理以及集群选主相关告警,提前预防和及时感知选主风险,避免业务损失。
通过 MSE ZooKeeper 风险管理和集群选主时间告警,预知风险。
MSE ZooKeepr 提供风险管理的能力,风险管理会定期扫描集群风险,通知用户,zxid 溢出就是集群的风险之一,当 zxid 接近溢出值之前,通过风险管理对风险的扫描,就可以看到集群zxid溢出的风险,提前做好规避。