Cluster 成员节点的滚动升级
- 为什么滚动升级,「安全」意味着什么 —— 升级窗口内的 quorum 计算:3 节点集群逐个升级时, 每有一个成员下线就处于零冗余状态;5 节点集群则全程仍可再容忍一次故障。
- 升级前检查 —— 集群健康(所有成员 ACTIVE、无快照进行中)、近期快照已完成、archive 磁盘 余量充足、版本兼容性已验证(新旧代码的线上协议 + 序列化状态)。
- follower 优先的顺序 —— 逐个升级 follower;leader 最后升级,且通过受控的领导权交接, 而不是等超时触发选举。
- 单节点流程 —— 排空、停止、升级、重启、等待追平(成员重放日志/快照后重新加入; 用集群计数器核实后再动下一个节点)。
- leader 交接 —— 优雅地让 leader 主动让位 vs. 等选举超时,以及交接期间客户端看到什么 (ingress 重定向、会话重连)。
- 应用/状态机版本化 —— 在复制的确定性状态机上升级业务逻辑:新代码必须与旧代码对同样的 日志条目重放出完全一致的结果;按日志位置做逻辑开关(feature flag on log position)。
- 中止条件与回滚 —— 每一步之前检查什么,节点无法重新加入时如何退回。
- 核验 —— 每一步的计数器与检查项(commit position 在前进、成员状态、NAK/错误计数安静), 以及升级后的冒烟测试。