SLA 与高可用边界
本文档适用于六虚拟机全离线部署:三台应用 / Swarm 节点、两台 PostgreSQL 高可用节点和一台 witness 节点。
| 层级 | 当前设计 | 高可用边界 |
|---|---|---|
| 应用运行时 | Enterprise New compose 在固定的 tier0_app_active_node 上运行。 |
backend、redis、EMQX、SourceFlow、EventFlow、Marimo 和 OPC UA Server 尚未自动多副本化。 |
| HTTP 入口 | 三台应用节点运行 keepalived APP VIP + HAProxy。 | VIP 可漂移。HAProxy 转发到活动节点的 8088/TCP,并检查 /healthz。 |
| MQTT / OPC UA | EMQX 使用 1883/8883/8083/8084;OPC UA 使用 4840。 |
这些端口直接连接活动节点,不包含在 TCP VIP 代理中,因此不承诺协议入口高可用。 |
| 数据库 | PostgreSQL / TimescaleDB 流复制 + repmgr + witness + DB VIP。 | primary 故障时 standby 可自动提升。异步复制不能承诺严格零 RPO。 |
| 备份与恢复 | backup-db.sh / restore-db.sh。 |
提供可恢复性,但不等同于在线高可用。 |
推荐 SLA
Section titled “推荐 SLA”| 服务对象 | 推荐表述 | 约束 |
|---|---|---|
| 平台 HTTP 入口 | 从月可用性 99.5% 开始。 |
VIP 故障切换不等同于活动应用节点自动迁移。 |
| 数据库访问 | 运维目标:RTO <= 2 minutes。 |
RPO 取决于复制延迟。同架构历史故障切换测试约为 59-64 秒。 |
| MQTT / OPC UA | 当前设计不承诺 HA SLA。 | 必须先增加 HAProxy TCP 代理、独立 VIP 或服务集群。 |
| 备份与恢复 | 每日备份;重大变更前必须备份。 | 恢复时间取决于数据量和现场 I/O。 |
在声明 99.9% 或更高可用性之前,需要完成应用自动迁移或多副本部署、协议入口高可用、监控告警和恢复演练。不要把规划能力描述为已交付能力。
每次部署或升级至少需要满足以下条件:
verify-materials.sh通过,交付包 SHA256 校验通过。- 三台 Swarm 节点均为
Ready。 APP VIP /healthz和/readyz返回200,首页和/uns可访问。- 活动节点上的七个 compose 服务正在运行。
DB VIP:5432可访问,primary、standby 和 witness 拓扑正常。- 默认账号可以实际登录。不要只根据端口、容器或 HTTP 200 响应判断 IAM 初始化成功。
- HTTP、EMQX 端口、WebSocket/WSS 和 OPC UA TCP 冒烟检查通过。
每天运行以下命令:
./bin/verify.sh --site config/site.conf./bin/smoke-business-emqx.sh --site config/site.conf至少配置以下告警:
- APP VIP
/healthz或/readyz失败。 - DB VIP 不可达、无 primary、split-brain 风险、复制中断或复制延迟超过阈值。
- keepalived、HAProxy、PostgreSQL 或 repmgrd 状态异常。
backend、redis、EMQX等关键容器退出或频繁重启。- 数据盘使用率超过
80% / 90%。 - 最新备份失败或未生成。
| 演练 | 频率 | 验证标准 |
|---|---|---|
| APP VIP 故障切换 | 交付前和每季度。 | 停止当前 VIP 节点上的 keepalived 后,/healthz 和 /readyz 恢复。 |
| DB primary 故障 | 交付前和每半年。 | standby 被提升,DB VIP 恢复,旧 primary 被重建为 standby。 |
| 数据库恢复 | 每月抽样,并在重大变更前执行。 | 备份可恢复。恢复后 verify、冒烟检查和登录验证通过。 |
| 物料验证 | 每次打包构建。 | 源物料、包 SHA 和解包验证通过。 |
事件处理原则
Section titled “事件处理原则”- 先确认影响范围:HTTP、MQTT、OPC UA、数据库以及单节点影响。
- 优先恢复 VIP、HAProxy、活动应用和数据库 primary。
- 保留日志、数据目录和备份。不要直接清理或覆盖事故现场。
- 对于数据库事件,先确定当前 primary,再决定故障切换、重新加入或恢复。
- 恢复后运行
verify、冒烟检查和实际登录验证。
高 SLA 加固项
Section titled “高 SLA 加固项”- 将应用改为多副本,或建立可验证的活动节点自动迁移流程。
- 将 EMQX 集群化,或通过 HAProxy TCP / TLS 和专用 VIP 路由。
- 通过 HAProxy TCP、专用 VIP 或服务集群为 OPC UA 提供高可用入口。
- 使用 PostgreSQL 同步复制,或明确可接受的复制延迟和 RPO。
- 自动化备份计划、异地复制和定期恢复演练。
- 将容器、主机、数据库、日志和黑盒探针接入统一告警。
相关流程:运维 Runbook 和 标准端口清单。