生产部署自查
用这些问题说明实际运行的部署:工作负载、拓扑、容错范围与恢复流程。回答应指出负责的运维人员,以及支撑该决定的观察结果。不存在适合所有负载、仅凭副本数、存储大小或吞吐量就能证明生产可用的统一配置。
工作负载与拓扑
| 问题 | 需要明确的内容 | 参考指南 |
|---|---|---|
| 应用需要哪些消息语义? | 实际使用的普通、顺序、事务、POP、延迟路径;重复处理、完成与重试行为 | 投递与重试、能力矩阵 |
| 当前拓扑用于分片还是复制? | Broker 名称标识组,副本 ID 属于同一组;不同 Broker 名称本身不提供同一数据的副本 | 多节点布局 |
| 哪些条件允许写入成功? | 刷盘策略、本地持久性、同步副本要求,以及启用 Controller 时的写权限 | HA 设计 |
| 发生哪种故障后仍能接收写入? | Broker、Controller 投票节点、磁盘、主机失效;相关故障的放置范围;要求两个副本的双副本部署可能因失去一个副本而停止写入 | HA 部署 |
| 应用能否访问所有公布端点? | 路由返回的 Broker 地址、其他 NameServer、Proxy 地址与 TLS 名称,以及应用网络中的 DNS、防火墙行为 | Kubernetes 部署、Proxy 部署 |
在部署清单中记录所选拓扑、主机/可用区分布、服务身份、端口与数据根目录。写入可用性的选择应与应用超时、重试行为一致。发送超时仍可能已经写入,重试安全性需要由业务操作保证。
安全与状态
| 问题 | 需要明确的内容 | 参考指南 |
|---|---|---|
| 谁可以访问公开、peer、健康和管理入口? | 每一跳的实际网络暴露与加密情况,不能依赖单一全局 TLS 假设 | 部署安全 |
| 应用、内部客户端和运维身份是否分离? | 所需允许/拒绝场景、出站签名、接收方权限、ACL/快照文件保护与凭据轮换 | 部署安全 |
| 进程或 Pod 替换后,权威状态保存在何处? | CommitLog 路径、Broker 元数据、偏移量、身份、定时/事务状态、Controller 存储和 PVC 保留 | 备份恢复 |
| 一个进程是否可能误用另一个进程的数据? | 存储独占所有权、稳定的身份与卷映射,以及副本间不共享可写根目录 | 存储设计 |
| 构建产物是否支持所选后端? | 必需 feature 与原生依赖;权威日志和派生状态边界;不假定会自动迁移后端 | 存储后端 |
记录秘密的保存位置,不把秘密值复制进部署清单。普通服务认证受损时,指定运维人员仍需能够取得恢复所需访问权限。
容量与可观测性
| 问题 | 需要明确的内容 | 参考指南 |
|---|---|---|
| 每个副本需要保留多少数据? | 单条存储 字节数、持续与峰值速率、保留期、重试/DLQ/定时积压、索引与操作余量 | 容量与性能 |
| 消费者多久能追平积压? | 超过流入速率的可用处理能力、下游容量、顺序与队列限制 | 容量与性能 |
| 运维人员能否区分故障层次? | 应用延迟与错误、Broker 存储与复制、消费进度、Controller 仲裁、Proxy 请求接纳 | 监控、故障排查 |
| 遥测是否真的导出进程? | 已编译的 exporter feature、有效运行配置、Collector 可达性、有界标签、关闭时刷新 | 可观测性配置 |
| 什么情况需要采取行动? | 与负载相关的阈值及对应处理步骤;区分遥测缺失和正常零值 | 监控 |
资源限制与探针阈值应覆盖观察到的启动恢复及关闭时长。示例 values 中的 CPU、内存申请是起始输入,不是经过测量的容量建议。
维护与恢复
| 问题 | 需要明确的内容 | 参考指南 |
|---|---|---|
| 计划重启会发生什么? | 排空、已接纳工作、剩余副本写入要求、Controller 多数派、Pod 中断规则,以及下一节点操作前的数据追平 | 日常维护 |
| 备份包含什么,具有何种一致性? | 协调的一组状态或停机副本、独立保存介质、恢复所需身份与配置 | 备份恢复 |
| 是否在隔离目标上尝试恢复? | 恢复消息边界、偏移量、权限、路由、业务核对与实际耗时 | 备份恢复 |
| 旧版本能否读取升级后的数据与元数据? | 存储、配置、API 兼容性,降级预检边界,以及回退是否必须恢复更早的一组状态 | 升级与回退 |
| 预期结果未出现时由谁处理? | 运维联系人、环境访问、诊断命令,以及停止更新或恢复的判断 | 管理操作 |
明确每项演练的范围。Chart 渲染成功、配置解析通过、健康探针正常或本地第一条消息成功,都不能证明分布式恢复可用。仅对实际测量过的故障与恢复场景报告 RPO、RTO,尚未确认的假设保留在部署记录中。