下载工作台
企业级架构运维

高可用与容灾设计

试读上半部分 · 解锁后可读全文

第 2 章 · 高可用与容灾设计

本章讲解 HA(高可用)DR(容灾) 的策略、RTO/RPO/SLA 量化、故障域设计与小紫云计算落地要点。

前置:PaaS 第 15 章;运维第 4 章;架构第 1 章 NFR。


2.1 核心指标

指标含义计算/示例业务含义
SLA对外可用性承诺99.9% = 年停机 ≤ 8.76h合同赔偿阈值
SLO内部目标(常严于 SLA)99.95%告警与容量依据
SLI可测量指标成功请求数 / 总请求数Prometheus 采集
RTO恢复服务目标时间30 分钟灾备演练及格线
RPO可接受数据丢失窗口5 分钟备份频率下限
MTTR平均修复时间< 20 分钟on-call 考核
MTBF平均故障间隔越高越好稳定性趋势

关系:RPO 越小 → 同步复制/更频备份 → 成本越高;RTO 越小 → 热备/自动切换 → 架构越复杂。

2.1.1 SLA 与允许停机对照

SLA年停机月停机适用场景
99%3.65 天7.2 小时内部工具
99.9%8.76 小时43.8 分钟标准电商
99.95%4.38 小时21.9 分钟核心交易
99.99%52.6 分钟4.38 分钟支付/金融

2.2 高可用层次

层次手段目标小紫实践
应用多副本 + 探针 + 滚动发布单 Pod 挂不影响服务Deployment replicas≥3
接入多 Ingress / LB / 健康检查入口无单点双节点 Traefik + VIP
数据主从 / 哨兵 / 分片集群DB 故障自动切换外置 RDS 或自建主从
存储多副本卷节点盘故障不丢数据Longhorn replica=3
集群多 Master / 多 Worker控制面与调度可靠kubeadm 多节点(云计算 ch3)
机房同城双活 / 异地冷备区域级灾难第二集群 + 备份恢复
# 应用 HA — 滚动更新零不可用(配合 PDB)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: order-api
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    spec:
      containers:
        - name: api
          livenessProbe:
            httpGet: { path: /health/live, port: 8080 }
            initialDelaySeconds: 30
          readinessProbe:
            httpGet: { path: /health/ready, port: 8080 }
            periodSeconds: 5
---
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: order-api-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: order-api

2.3 无状态优先

有状态 Pod ──► 难扩、难迁、备份复杂、发布慢
无状态 Pod ──► 加副本即可扛流量,随时销毁重建
状态类型外置位置PaaS 组件注意
会话Redisredis 商店设置合理 TTL;大促前扩容内存
上传文件MinIOminio禁止写容器本地盘
异步任务Kafka / RabbitMQkafka / rabbitmq消费者多副本 + 幂等
事务数据MySQLmysql单副本商店模板需 HA 改造
本地缓存尽量避免用 Redis 代替

行业案例 · 某票务平台:Session 存 Tomcat 内存,滚动发布时用户批量登出,峰值投诉 2000+。改造为 Redis Session + spring-session 后,发布期间 零强制登出


2.4 有状态组件 HA 现实

组件商店默认生产 HA 方向RPO 参考
MySQL1 副本 + PVC主从 + MHA;或云 RDS Multi-AZ主从异步 < 1s~数秒
Redis1 副本Sentinel 3 节点;或云缓存AOF everysec
Kafka单容器 KRaft3 Broker,replication.factor=3取决于 acks
Elasticsearchsingle-node3 数据节点,副本分片=1近实时
MinIO单节点分布式 4+ 节点纠删码取决于同步策略
PaaS ch15 §15.2.2:商店多数有状态默认单副本。生产 HA 通常选 外置托管自定义多实例 YAML,先在 test-* Namespace 验证。

2.5 容灾拓扑

2.5.1 同城双活(复杂,金融/超大流量)

                    ┌── GSLB / DNS 权重 ──┐
                    ▼                      ▼
              集群 A(主 60%)         集群 B(主 40%)
                    │                      │
                    └──── 数据双向/单向复制 ──┘
要求
数据库级双向或分片单元化;冲突解决策略预定义
入口GSLB 健康检查 + 流量调度
演练季度切流;RTO 目标常 < 5min

2.5.2 异地冷备(中小企业常见)

生产集群 ──定时备份──► MinIO 异地桶 ──► 灾备集群按需恢复
   │                        │
   └── 实时监控 / 告警 ─────┘
步骤操作RTO 影响
1Namespace + PVC 快照导出
2mysqldump / pg_dump 逻辑备份RPO = 备份间隔
3灾备集群导入 YAML + 还原卷恢复耗时计入 RTO
4DNS 切到灾备 Ingress传播时间 1~10min

行业案例 · 某 SaaS 服务商:仅做 PVC 快照未做逻辑备份,Longhorn 元数据损坏后 无法挂载卷,RTO 超预期 6 小时。整改:快照 + 每日 mysqldump + 恢复演练


2.6 故障域与反亲和

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。