维护运行中的部署
围绕剩余容量与工作所有权安排维护。重启的目标是在替换一个进程时,保留所选写入约定、可恢复状态和应用完成行为。拓扑相关步骤见 HA 部署与 Kubernetes 操作。
日常观察
| 范围 | 观察内容 | 需要处理的情况 |
|---|---|---|
| 路由与身份 | 预期 Broker 组/副本、可达的公布地址、当前 Controller Leader | 注册消失、身份异常变化,或路由不符合目标拓扑 |
| 消息进度 | 发送结果、逐队列消费推进、重试/DLQ/POP 活动 | 完成停滞,或积压接近保留数据边界 |
| 存储 | 剩余字节、分段增长、磁盘延迟、清理活动、外置根目录与卷健康 | 余量下降,持久化/恢复工作落后 |
| 复制 | 同步成员关系、当前写权限、持久化进度 | 所选写入要求失去容量,或追平不再推进 |
| 生命周期与遥测 | 探针状态、任务/关闭错误、导出健康、活跃 TLS/ACL 配置 | 进程健康与应用实际路径不一致 |
结合 Admin 与监控比较一段时间内的变化。日志、指标应有独立的保留预算,避免诊断数据占用消息存储的应急空间。
有计划地调整保留策略
本地存储以小时为单位使用 fileReservedTime,通过 deleteWhen 指定定时清理。磁盘压力和 cleanFileForciblyEnable 也会影响删除行为。相 关磁盘比例经过本地后端配置归一化,原始值不一定就是有效阈值。
清理面向满足条件的文件、分段,不以某个应用的业务完成记录为单位。不能把配置的保留期理解为磁盘压力下所有未消费消息都必然保留。缩短保留期前,比较消费、重放、备份以及延迟/事务处理仍需的最早数据。
变更后观察实际最小队列偏移量与磁盘用量。恢复旧配置不会恢复已删除数据。不要通过移除活跃 CommitLog、索引、定时或 RocksDB 文件来替代受支持的清理。
排空一个节点
- 确定准确的进程/Pod、身份、当前角色、数据根目录,以及替换时使用的命令、配置。
- 确认剩余 Controller 多数派和 Broker 复制/写入能力。所选拓扑无法在重启期间保持写入时,应安排暂停写入,不假定持续可用。
- 在应用、部署支持的位置停止向受影响路径分配新工作,等待已接纳操作与业务工作收敛,考虑不确定发送、POP 回执、待决事务和保留响应流。
- 通过进程管理器或部署生命周期请求正常关闭。Core chart 在终止前调用
/drainz,并在 Pod 宽限期内安排服务关闭预算。 - 检查关闭结果,确认旧所有者已停止,再重新打开同一存储。取消和超时不能证明阻塞操作已经完成。
停止消费者可能使其他消费者收到尚未完成的工作。维护期间仍需要业务幂等,以及对应模式的偏移量/ACK 完成。排空一个 Proxy 不会自动排空所有直接连接 Broker 的应用。
按拓扑重 启
| 组件 | 操作边界 |
|---|---|
| NameServer | 每次替换一个,确认客户端、Broker 能使用其他已配置 NameServer,并观察注册收敛 |
| 默认 HA 副本 | 保留身份和存储,重启后观察追平,再进行下一次变更 |
| 默认 HA 主节点 | 存在副本不代表具备 Controller 自动提升能力;安排写入中断,或另行采用受支持的角色变更流程 |
| Controller 模式 Broker | 遵循当前 Controller 权限、同步成员关系与追平结果,不强制旧主节点恢复写入 |
| Controller | 使用当前成员关系和新鲜复制观察,保留仲裁与稳定节点身份;chart 部署使用随附重启工具 |
| Proxy | 移除流量并排空实例,替换后检查入站和下游行为,再恢复流量 |
两个副本且要求两者参与的组,在一个副本不可用时没有额外同步写入容量,其 chart PDB 因而没有主动中断余量。不要通过直接删除 Pod 绕过这一事实,应有意调整维护计划或受支持的拓扑。
StatefulSet OnDelete 更新需要显式受控替换。修改配置不等于 Controller 成员变更。不要重叠执行计划重启;每次重新评估当前 Leader 和副本健康,先前观察成功不能预留未来可用性。
轮换凭据与证书
按安全轮换更新接收方材料,在支持重叠时迁移调用方,执行实际重载/重启 路径,再验证新访问和旧访问拒绝。Core chart 文档规定轮换后重启;Proxy TLS 还支持自身经验证的文件代次重载。Secret 已更新或出现 watcher 日志,不能证明全部调用方都使用了新材料。
保护 ACL 文件的同时,保护本地认证快照与备份。如果拆分观察能帮助定位故障,不要在同一步同时修改凭据和无关的拓扑、存储设置。
恢复服务
确认预期身份与角色、可达路由、实际消息完成、消费推进、复制追平和遥测导出。重启副本的 Ready 状态不能替代当前写策略要求的持久化进度。
替换实例无法恢复或预期路径失败时,停止继续更新。保留日志与原状态,随后按故障排查或升级回退处理。不要反复重启全部 peer,或删除身份、状态来制造干净启动。
本文描述操作行为,未声明已完成多节点维护演练或提供可用性保证。