AWS 计算服务容灾与高可用架构设计完全指南:从 EC2 到 Lambda 的多层防护体系(2026最新版)

📅 · 海外云服务器自建服务教程 - ChengziCloud

一句话结论

Meta Description: AWS五大计算服务容灾架构深度解析:EC2多可用区高可用、Lambda多Region容灾、ECS/EKS容器自愈、Auto Scaling故障转移、LightSail快照恢复——从RTO/RPO设计到落地实施,构建99.

本文要点
  • 引言:当"云不会挂"成为最危险的幻觉
  • 容灾与高可用的基础概念:RTO、RPO 与架构层级
  • EC2 高可用架构:从单实例到跨 Region 的演进路径
  • Lambda 容灾策略:Serverless 不等于零运维
  • ECS/EKS 容器高可用:自愈能力是容器的天然优势
  • LightSail 容灾:轻量≠裸奔
  • Auto Scaling:所有计算服务容灾体系的核心引擎
  • 五大计算服务容灾能力全景对比

Meta Description: AWS五大计算服务容灾架构深度解析:EC2多可用区高可用、Lambda多Region容灾、ECS/EKS容器自愈、Auto Scaling故障转移、LightSail快照恢复——从RTO/RPO设计到落地实施,构建99.99%可用性的云原生防线。

关键词:AWS容灾架构、EC2高可用、Lambda容灾、ECS故障转移、Auto Scaling弹性恢复、LightSail备份、RTO/RPO设计、Multi-AZ部署、云原生高可用、AWS Disaster Recovery

引言:当"云不会挂"成为最危险的幻觉

2026年6月,某头部电商平台因单可用区部署遭遇AWS US-East-1局部供电故障,业务中断4小时,直接损失超过800万美元。事后复盘发现:该团队的所有EC2实例、RDS数据库和Lambda函数全部部署在同一个可用区(AZ)内,零容灾设计。

很多人都默认"云服务天然高可用"——这是最危险的认知偏差。AWS确实提供了丰富的容灾工具,但高可用不会自动发生,它需要刻意设计。EC2实例可以随时被终止,Lambda冷启动可能超时,ECS容器可能因节点故障而漂移,LightSail更是轻量到几乎没有内置容灾能力。

本文将从RTO(恢复时间目标)和RPO(恢复数据目标)设计入手,逐一拆解EC2、Lambda、ECS/EKS、Auto Scaling和LightSail五大计算服务的容灾与高可用架构模式,并给出多层防护的落地实施路径。


一、容灾与高可用的基础概念:RTO、RPO 与架构层级

在深入具体服务之前,需要先厘清三个核心概念和一个分级框架。

1.1 RTO 与 RPO:容灾设计的两个北极星指标

指标全称定义通俗理解
RTORecovery Time Objective从故障发生到业务恢复的最大可接受时间"你能容忍业务停多久?"
RPORecovery Point Objective故障时可接受的最大数据丢失量(时间窗口)"你能容忍丢多少数据?"

RTO 和 RPO 是容灾架构设计的起点,不是终点。先定指标,再选方案——而不是反过来。一个典型的决策矩阵如下:

业务等级RTORPO推荐架构年成本(相对基准)
核心交易系统< 1 分钟0(零数据丢失)Multi-AZ Active-Active + 同步复制3-5x
重要业务系统< 1 小时< 5 分钟Multi-AZ Active-Passive + 异步复制1.5-2x
一般业务系统< 4 小时< 1 小时跨Region Pilot Light + 定期快照1.2-1.5x
非关键系统< 24 小时< 24 小时定期备份 + 手动恢复1.0x(基准)

1.2 AWS 容灾的四层架构模型

AWS 官方在 Well-Architected Framework 中将容灾策略分为四个层级:


┌─────────────────────────────────────────────────────┐
│              Layer 4: Multi-Region Active-Active     │
│   ┌─────────────────┐       ┌─────────────────┐     │
│   │   Region A       │ ←──→ │   Region B       │     │
│   │  (us-east-1)    │ 同步  │  (us-west-2)    │     │
│   └─────────────────┘       └─────────────────┘     │
│         RTO < 1分钟, RPO = 0                         │
├─────────────────────────────────────────────────────┤
│              Layer 3: Multi-AZ Active-Passive        │
│   ┌─────────────────────────────────────┐           │
│   │  Region: AZ-a (Active) │ AZ-b (Standby)│        │
│   └─────────────────────────────────────┘           │
│         RTO < 15分钟, RPO < 5分钟                    │
├─────────────────────────────────────────────────────┤
│              Layer 2: Pilot Light / Warm Standby     │
│   ┌─────────────────────────────────────┐           │
│   │  核心服务常驻 │ 扩展资源按需启动   │           │
│   └─────────────────────────────────────┘           │
│         RTO < 1小时, RPO < 1小时                      │
├─────────────────────────────────────────────────────┤
│              Layer 1: Backup & Restore               │
│   ┌─────────────────────────────────────┐           │
│   │  定期快照 / AMI备份 → 故障后手动恢复│           │
│   └─────────────────────────────────────┘           │
│         RTO < 24小时, RPO < 24小时                    │
└─────────────────────────────────────────────────────┘

关键认知:层级越高成本越高,但恢复越快。绝大多数企业不需要所有服务都达到 Layer 4——按业务重要性分级设计才是务实的做法。


二、EC2 高可用架构:从单实例到跨 Region 的演进路径

EC2 是 AWS 容灾能力最丰富的计算服务,但也意味着最容易被错误配置。以下是从低到高的四级架构方案。

2.1 Level 1:基础防护——EBS 快照 + AMI 备份

最简单的容灾起点,适用于开发测试环境和对 RTO 不敏感的非核心业务:


# 创建 EBS 快照(可通过 AWS Backup 自动化)
aws ec2 create-snapshot --volume-id vol-0abcd1234 \
    --description "Daily backup $(date +%Y-%m-%d)" \
    --tag-specifications 'ResourceType=snapshot,Tags=[{Key=Backup,Value=Daily}]'

# 从运行中实例创建 AMI(包含根卷)
aws ec2 create-image --instance-id i-0abcd1234 \
    --name "app-server-backup-$(date +%Y%m%d)" \
    --no-reboot

2.2 Level 2:生产级——Auto Scaling Group + Multi-AZ + ALB

这是 EC2 高可用的标准配置,覆盖绝大多数业务场景:


                    ┌──────────────┐
                    │   Route 53   │
                    │  (DNS 解析)   │
                    └──────┬───────┘
                           │
                    ┌──────▼───────┐
                    │     ALB      │
                    │ (跨AZ分发)    │
                    └──┬───────┬───┘
                       │       │
              ┌────────▼─┐  ┌──▼─────────┐
              │  AZ-a     │  │  AZ-b       │
              │ ┌───────┐ │  │ ┌─────────┐ │
              │ │ EC2-1 │ │  │ │ EC2-3   │ │
              │ │ EC2-2 │ │  │ │ EC2-4   │ │
              │ └───────┘ │  │ └─────────┘ │
              └───────────┘  └─────────────┘

配置要点:

  • Auto Scaling Group(ASG) 跨至少 2 个 AZ,最小/期望/最大实例数设为 2/2/4
  • Application Load Balancer(ALB) 开启健康检查(路径 /health,间隔 30 秒)
  • 启动模板 标准化实例配置,确保新实例可以自动加入集群
  • 生命周期钩子 在实例终止前完成优雅下线(deregister from ALB → drain connections → terminate)

# 创建跨 2 个 AZ 的 Auto Scaling Group
aws autoscaling create-auto-scaling-group \
    --auto-scaling-group-name "web-app-asg" \
    --launch-template LaunchTemplateName=web-app-template,Version='$Latest' \
    --min-size 2 --max-size 4 --desired-capacity 2 \
    --vpc-zone-identifier "subnet-az-a,subnet-az-b" \
    --target-group-arns "arn:aws:elasticloadbalancing:...:targetgroup/web-tg/xxx" \
    --health-check-type ELB --health-check-grace-period 300

🔴 常见陷阱:只在 ASG 中配了一个 AZ 的子网——这不是高可用,只是自动重启。务必跨至少 2 个 AZ。

2.3 Level 3:跨 Region 灾备——Pilot Light 模式

对于需要跨 Region 容灾的核心业务,Pilot Light 是性价比最高的方案:

组件主 Region(Active)灾备 Region(Pilot Light)
EC2 实例全量运行仅 1 台最小规格(或使用 AMI 待命)
RDS 数据库主实例跨 Region 只读副本
EBS 数据卷正常运行通过 AWS Backup 跨 Region 复制快照
Route 53主域名指向故障转移策略(Failover Routing)

# 开启 EBS 快照跨 Region 复制
aws ec2 copy-snapshot \
    --source-region us-east-1 \
    --source-snapshot-id snap-0abcd1234 \
    --destination-region us-west-2 \
    --description "DR copy $(date +%Y-%m-%d)"

Switching到备用Region通常需要10-30分钟——通过自动化脚本一键拉起完整的ASG集群,而不是手动逐个启动实例。


三、Lambda 容灾策略:Serverless 不等于零运维

很多团队认为 Lambda "天然高可用"——AWS 确实在幕后做了大量容灾工作,但这不意味着你可以完全不考虑容灾设计。

3.1 Lambda 的默认容灾能力(你不需要做的部分)

AWS 在 Lambda 服务层面默认提供:

  • 多 AZ 执行:Lambda 执行环境自动分布在 Region 内的多个 AZ
  • 异步重试:异步调用失败后自动重试 2 次(总计 3 次尝试)
  • 死信队列(DLQ):超过重试次数的事件进入 SQS/SNS 做后续处理
  • 事件源映射重试:Kinesis/DynamoDB Streams 触发失败后按分片重试

3.2 你真正需要设计的容灾策略

(1)多 Region 部署

Lambda 不会自动跨 Region 容灾。如果 us-east-1 挂了,你的 Lambda 函数不会在 us-west-2 自动启动。解决方案:


# 使用 AWS SAM 或 CDK 部署到多个 Region
# sam deploy --region us-east-1 --stack-name app-prod
# sam deploy --region us-west-2 --stack-name app-dr

# Route 53 故障转移策略
Resources:
  PrimaryRecord:
    Type: AWS::Route53::RecordSet
    Properties:
      Failover: PRIMARY
      HealthCheckId: !Ref HealthCheck
      AliasTarget:
        DNSName: !GetAtt PrimaryApi.DomainName  # us-east-1
  SecondaryRecord:
    Type: AWS::Route53::RecordSet
    Properties:
      Failover: SECONDARY
      AliasTarget:
        DNSName: !GetAtt SecondaryApi.DomainName  # us-west-2

(2)Provisioned Concurrency —— 消除冷启动同时也提升了可用性

冷启动不只是性能问题——在流量突增时,大量冷启动可能导致函数执行超时,本质上是一次微型的"可用性降级":


# 为关键函数配置预置并发
aws lambda put-provisioned-concurrency-config \
    --function-name payment-processor \
    --qualifier PROD \
    --provisioned-concurrent-executions 10

(3)死信队列 + 事件回放 —— 把失败转化为可恢复


{
  "dead_letter_config": {
    "target_arn": "arn:aws:sqs:us-east-1:123456789:lambda-dlq"
  },
  "max_retry_attempts": 2,
  "maximum_event_age_in_seconds": 21600
}

当灾难恢复后,可以通过 SQS 的 DLQ 消息回放功能,将失败的事件重新推回主队列进行补处理,确保最终一致性。

3.3 Lambda 容灾能力对照表

故障类型默认行为需要的额外配置RTO 估算
单次执行失败(同步)调用方收到错误,不重试调用方实现重试逻辑< 1 秒
单次执行失败(异步)自动重试 2 次 → DLQ配置 SQS/SNS DLQ + 告警< 1 分钟
单个 AZ 故障自动切到其他 AZ无需额外配置< 1 分钟
整个 Region 故障不自动恢复多 Region 部署 + Route 53 故障转移5-30 分钟
并发配额耗尽返回 429 错误预留并发 + 请求队列缓冲< 1 分钟

核心结论:Lambda 的"免运维"止步于单 Region 内——跨 Region 容灾仍然需要你主动设计和部署。


四、ECS/EKS 容器高可用:自愈能力是容器的天然优势

容器的不可变基础设施(Immutable Infrastructure)特性天然适合容灾——出问题的容器直接替换,而不是修复。

4.1 ECS 高可用架构

ECS 的高可用核心在于"三层自愈机制":


Layer 1: Task 级自愈
  └─ ECS Service 检测到 Task 异常 → 自动启动新 Task 替换

Layer 2: Container Instance 级自愈
  └─ ASG (EC2 启动类型) 检测到 EC2 实例不健康 → 替换实例
  └─ Fargate 自动迁移 Task 到健康的基础设施

Layer 3: AZ 级故障转移
  └─ Service 跨多 AZ 部署 → ALB 自动路由到健康 AZ

ECS Fargate 的高可用配置示例:


# 创建跨 2 个 AZ 的 ECS Fargate Service
aws ecs create-service \
    --cluster prod-cluster \
    --service-name api-service \
    --task-definition api-task:3 \
    --desired-count 2 \
    --launch-type FARGATE \
    --platform-version LATEST \
    --network-configuration "awsvpcConfiguration={
        subnets=[subnet-az-a,subnet-az-b],
        securityGroups=[sg-0abcd],
        assignPublicIp=DISABLED
    }" \
    --deployment-controller type=ECS \
    --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}"

🔴 关键配置说明:

  • subnets 必须包含至少 2 个 AZ 的子网
  • deploymentCircuitBreaker 开启后,当新部署持续失败时自动回滚——防止一次错误部署导致全面宕机
  • desired-count: 2 配合 minimumHealthyPercent: 50 确保滚动更新期间始终有 1 个 Task 在线

4.2 EKS 高可用架构

EKS 在 ECS 的基础上增加了 Kubernetes 原生的弹性机制:

机制作用配置方式
PodDisruptionBudget(PDB)限制同时不可用的 Pod 数量,防止维护操作清空所有 PodmaxUnavailable: 1
Horizontal Pod Autoscaler(HPA)根据 CPU/内存自动扩缩 Podkubectl autoscale deployment api --min=2 --max=10 --cpu-percent=70
Cluster AutoscalerPod 无法调度时自动增加 Worker Node部署 Cluster Autoscaler 组件
Topology Spread Constraints确保 Pod 均匀分布在不同 AZtopologyKey: topology.kubernetes.io/zone
Node Affinity + Anti-Affinity控制 Pod 的调度位置,避免单点podAntiAffinity.preferredDuringScheduling

# EKS Deployment 示例:跨 AZ + PDB 保护
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-server
spec:
  replicas: 3
  template:
    spec:
      topologySpreadConstraints:
        - maxSkew: 1
          topologyKey: topology.kubernetes.io/zone
          whenUnsatisfiable: ScheduleAnyway
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 100
              podAffinityTerm:
                labelSelector:
                  matchLabels:
                    app: api-server
                topologyKey: topology.kubernetes.io/zone
---
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: api-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: api-server

4.3 ECS vs EKS 容灾能力对比

能力维度ECS(Fargate)EKS
跨 AZ 部署✅ Service subnet 配置✅ topologySpreadConstraints
自动故障替换✅ 内置✅ Kubernetes 原生
滚动更新保护✅ deploymentCircuitBreaker✅ PDB + rolling update
自动扩缩✅ Service Auto Scaling✅ HPA + Cluster Autoscaler
跨 Region 容灾⚠️ 需手动配置(多 Cluster + Route 53)⚠️ 需手动配置
运维复杂度低(AWS 托管)中-高(需运维控制平面)

五、LightSail 容灾:轻量≠裸奔

LightSail 的定位是"开箱即用的轻量云服务器",不内置 Auto Scaling、不内置负载均衡、不内置跨 AZ 故障转移。但这不意味着 LightSail 只能裸奔——它有自己的容灾工具箱。

5.1 LightSail 的快照体系

LightSail 提供两种快照:

快照类型触发方式保留策略用途
手动快照控制台或 CLI 手动触发永久(直到手动删除)重大变更前备份、长期归档
自动快照每天自动触发保留最近 7 天日常恢复、误删回滚

# 手动创建 LightSail 实例快照
aws lightsail create-instance-snapshot \
    --instance-name my-wordpress-server \
    --instance-snapshot-name "pre-migration-snapshot-$(date +%Y%m%d)"

# 开启自动快照(每天一次,保留 7 天)
aws lightsail enable-add-on \
    --resource-name my-wordpress-server \
    --add-on-request addOnType=AutoSnapshot,autoSnapshotAddOnRequest={snapshotTimeOfDay=03:00}

5.2 LightSail 的容灾恢复流程

由于 LightSail 不支持跨 AZ/Region 的自动故障转移,恢复流程是完全手动的:


故障发生
   │
   ▼
检测到实例不可达 (Ping / HTTP 健康检查)
   │
   ▼
从最新快照创建新实例
   │  aws lightsail create-instances-from-snapshot \
   │    --instance-names "recovery-server" \
   │    --availability-zone us-east-1a \
   │    --instance-snapshot-name "auto-snapshot-20260713"
   │
   ▼
分配静态 IP 到新实例
   │  aws lightsail attach-static-ip \
   │    --static-ip-name "production-ip" \
   │    --instance-name "recovery-server"
   │
   ▼
验证服务恢复 → 更新 DNS(如需要)

典型 RTO:15-30 分钟(取决于实例大小和快照体积)

5.3 LightSail 容灾的硬伤与弥补方案

硬伤清单:

  • ❌ 单 AZ 绑定:实例一旦创建在某个 AZ,无法直接迁移
  • ❌ 无内置负载均衡:无法做 Active-Active 或蓝绿部署
  • ❌ 无 Auto Scaling:流量高峰无法自动扩容
  • ❌ 快照只能恢复到 LightSail:无法直接升级到 EC2

弥补方案:

问题弥补手段成本
单 AZ 故障定期导出快照到 S3 → 跨 Region 复制 → 备用 Region 创建 LightSail$5-10/月
无负载均衡前置 CloudFront CDN + 配置自定义源站$1-5/月
无 Auto Scaling业务扩展后迁移到 EC2 + ASG迁移一次性成本
恢复速度慢维护一个最小规格的温备实例(Warm Standby)$3.5-5/月

5.4 什么时候应该从 LightSail 升级到 EC2?

如果你的业务出现以下任一信号,就说明 LightSail 的容灾能力已经跟不上需求了:

  1. 需要跨 AZ 高可用(RTO < 5 分钟)
  2. 需要自动故障切换(无法接受手动恢复)
  3. 需要蓝绿/金丝雀部署(零停机发布)
  4. 需要配合负载均衡(单实例性能已到瓶颈)

六、Auto Scaling:所有计算服务容灾体系的核心引擎

Auto Scaling 不仅是成本优化工具——在容灾语境下,它的核心价值是"弹性恢复(Elastic Recovery)"。

6.1 Auto Scaling 的容灾价值矩阵

能力对容灾的贡献适用于
健康检查替换不健康实例自动终止 + 新建替换EC2, ECS EC2
跨 AZ 再平衡某个 AZ 不可用时在健康 AZ 补足实例EC2 ASG
动态扩缩流量切换/故障转移时自动扩容承接EC2, ECS, Lambda(并发)
生命周期钩子实例终止前完成状态保存和连接排空EC2
实例刷新滚动替换所有实例到新 AMI(零停机)EC2

6.2 容灾场景下的 Auto Scaling 配置最佳实践


# 关键容灾配置
aws autoscaling update-auto-scaling-group \
    --auto-scaling-group-name "critical-app-asg" \
    --min-size 2 \
    --desired-capacity 2 \
    --max-size 8 \
    --availability-zones "us-east-1a" "us-east-1b" "us-east-1c" \
    --health-check-type ELB \
    --health-check-grace-period 300 \
    --default-cooldown 180 \
    --default-instance-warmup 120 \
    --termination-policies "OldestInstance" \
    --new-instances-protected-from-scale-in true \
    --max-instance-lifetime 604800

容灾关键参数解读:

参数推荐值容灾意义
min-size≥ 2确保至少 2 个实例,避免单个故障导致全部不可用
availability-zones≥ 2AZ 级故障时自动在幸存 AZ 重建实例
health-check-typeELB结合应用层健康检查,而不仅仅是系统层
default-cooldown180s防止故障恢复期间过度扩缩造成的二次抖动
default-instance-warmup120s给新实例足够的启动时间才计入健康状态
max-instance-lifetime7 天定期轮换实例,降低"长跑僵尸实例"风险

6.3 与不同计算服务的协同模式


Lambda (Provisioned Concurrency)
  │
  ├── 类似 ASG 的"最小容量保障"
  └── 应用层 Auto Scaling: 并发执行数自动伸缩

ECS Service Auto Scaling
  │
  ├── Target Tracking: CPU/Memory 目标值
  ├── Step Scaling: 阶梯式扩缩
  └── Scheduled Scaling: 定时调整 Task 数量

EC2 Auto Scaling Group
  │
  ├── 管理 EC2 实例池的规模和分布
  ├── 集成 ELB 健康检查
  └── 支持混合实例类型和竞价实例

七、五大计算服务容灾能力全景对比

能力维度EC2LambdaECS (Fargate)EKSLightSailAuto Scaling
单实例/Task 故障自愈⚠️ 需 ASG✅ 内置✅ 内置✅ 内置❌✅
跨 AZ 高可用✅ (ASG)✅ 内置✅✅❌✅
跨 Region 容灾⚠️ 需手动⚠️ 需手动⚠️ 需手动⚠️ 需手动❌❌
负载均衡集成✅ ALB/NLB✅ API Gateway✅ ALB✅ ALB/NLB❌✅
自动备份/快照✅ EBS SnapshotN/A(无状态)N/A(无状态)⚠️ 需配置✅ 手动+自动N/A
零停机部署✅ (ASG滚动)✅ ($LATEST别名)✅ (蓝绿部署)✅ (Rolling Update)❌✅
异常回滚✅ (ASG实例刷新)✅ (别名权重)✅ (CircuitBreaker)✅ (Rollback)❌⚠️
默认 RTO(单Region故障)5-15 分钟< 1 分钟2-5 分钟2-5 分钟15-30 分钟—
运维复杂度中低低高极低中

八、容灾架构设计的七个黄金法则

基于以上分析,总结七条经过生产验证的容灾设计原则:

法则 1:永远不要把所有鸡蛋放在一个 AZ 里

几乎所有计算服务都支持跨 AZ——启用它。多 AZ 部署是性价比最高的可用性提升手段,通常只增加 10-20% 的基础设施成本,但能将可用性从 99.5% 提升到 99.99%。

法则 2:无状态设计是容灾最好的朋友

Lambda 和容器的核心优势就是无状态。对于 EC2 上的有状态应用,尽可能将状态外移到 RDS/ElastiCache/DynamoDB/S3,而不是存储在实例本地磁盘上。

法则 3:自动化恢复,而不是手动恢复

Runbook 写得再好,凌晨 3 点故障时也没有自动脚本快。用以下工具构建自动化恢复:

  • AWS Systems Manager Automation:预定义恢复 Runbook
  • EventBridge + Lambda:基于事件的自动响应
  • ASG 生命周期钩子:实例级别自动恢复
  • CloudWatch Alarm → ASG/ECS 动作:指标驱动的弹性恢复

法则 4:定期演练——不演练的容灾方案等于没有方案

AWS 提供 FIS(Fault Injection Simulator) 来模拟故障:


# 模拟终止一个 AZ 中的 EC2 实例
aws fis create-experiment-template \
    --cli-input-json file://chaos-experiment.json

建议每季度至少做一次区域级故障演练(非生产环境),每年至少一次全链路生产故障演练。

法则 5:监控先行——你不知道故障来了,就谈不上恢复

必须监控的关键指标:

  • EC2:StatusCheckFailed, CPU Credit Balance(T 系列)
  • Lambda:Throttles, Errors, Duration, IteratorAge(流处理)
  • ECS/EKS:Service Task Count vs Desired Count, CPU/Memory Reservation
  • LightSail:Instance Status, Burst Capacity
  • 全局:ALB 5xx 错误率, Route 53 健康检查失败

法则 6:成本与可用性的平衡是一门艺术

并非所有服务都需要 Multi-Region Active-Active。按业务分级合理分配预算:


┌────────────────────────────────────────────┐
│  服务分级          │ 容灾投入占IT预算比例    │
├────────────────────────────────────────────┤
│  核心交易 (Tier 1) │ 20-30%                 │
│  重要业务 (Tier 2) │ 10-15%                 │
│  一般业务 (Tier 3) │ 5-10%                  │
│  非关键   (Tier 4) │ 1-3%                   │
└────────────────────────────────────────────┘

法则 7:从第一天就写恢复 Runbook

不要等第一次故障发生时才想怎么恢复。每个计算服务类型至少准备一份"最坏情况恢复 Runbook",内容包括:

  1. 故障检测方法(哪个指标触发?告警阈值是多少?)
  2. 故障范围判断(单实例?单 AZ?整个 Region?)
  3. 恢复步骤(逐步列出 CLI 命令和控制台操作)
  4. 回滚方案(恢复失败后怎么办?)
  5. 通知升级路径(什么时候通知谁?)

九、常见问题 FAQ

Q:EC2 的 Auto Recovery 和多 AZ 部署有什么区别?

A:EC2 Auto Recovery 是当单个实例的底层硬件故障时,AWS 自动在同 AZ 内用相同配置重新启动实例(更换物理主机)。多 AZ 部署是当整个 AZ 不可用时,流量切换到其他 AZ 的实例。两者互补:Auto Recovery 解决硬件级故障,多 AZ 解决数据中心级故障。

Q:Lambda 真的需要多 Region 部署吗?

A:取决于业务的 RTO 要求。Lambda 在单 Region 内的可用性 SLA 是 99.95%,这意味着一年约有 4.4 小时不可用时间。如果你的业务能接受这个窗口,单 Region 就够。如果不能——比如支付处理、订单核心链路——就需要多 Region 部署 + Route 53 故障转移。

Q:LightSail 快照能用来迁移到 EC2 吗?

A:不能直接迁移。LightSail 快照只能恢复为新的 LightSail 实例。如果需要迁移到 EC2,需要走导出流程:LightSail 快照 → 导出到 EC2 AMI(通过 LightSail 控制台的 "Export to Amazon EC2" 功能),然后用这个 AMI 启动 EC2 实例。

Q:Auto Scaling Group 的跨 AZ 再平衡会导致什么问题?

A:跨 AZ 再平衡(AZ Rebalance)会在 AZ 之间重新分配实例数量。这可能导致:① 正在处理请求的实例被终止 ② 短暂的容量不足。建议开启 ASG 的 instance-warmup 和 ELB 连接排空(Connection Draining)来缓解影响。

Q:ECS 和 EKS 哪个容灾能力更强?

A:EKS 的容灾能力更灵活(Kubernetes 原生生态),但运维复杂度也更高。ECS(Fargate)的容灾其实已经"够用"——对于 90% 的场景,ECS Fargate 的内置恢复 + Service Auto Scaling + deploymentCircuitBreaker 的组合已经能提供很强的容灾保障。选择的关键不在于"谁更强",而在于你的团队能否驾驭 Kubernetes 的复杂度。


总结

AWS 五大计算服务——EC2、Lambda、ECS/EKS、Auto Scaling 和 LightSail——各自提供了不同层次的容灾能力,但没有哪一个能"开箱即用"地满足所有容灾需求。

构建可靠的容灾体系,需要从三个维度同时发力:

  1. 架构层面:跨 AZ、无状态设计、自动化恢复
  2. 流程层面:定期演练、Runbook 维护、事件响应定级
  3. 文化层面:把容灾当作日常工程实践,而不是"等出了事再说"的应急方案

最终,容灾的目标不是"永不故障"——那不可能——而是故障发生时,用户感知不到,或者感知极小。这才是云原生时代真正的高可用。


本文由 5.chengzicloud.cloud 提供,点击访问首页了解更多 AWS 云计算服务与解决方案。