3. VPC灾备设计基础
多区域灾备的第一道地基不是备份工具,而是地址空间。VPC 的 CIDR 一旦创建便无法修改,子网划分、路由策略、对等连接、Transit Gateway 挂载乃至未来跨区域回切,全部受它约束。因此本节把“规划”放在最前面:先确定区域与地址的对应关系,再决定子网分层与路由隔离,最后才谈对等连接怎么连、连到什么程度。
一、多区域 VPC 规划:先定区域角色,再定地址块
灾备场景下,区域不是随便选两个,而是按角色分工。常见做法是主区域(Primary)承载生产流量,灾备区域(DR)平时处于低水位或冷备状态,切换时接管。区域选择要同时看三件事:业务延迟覆盖范围、可用区数量(至少 3 个 AZ 才便于做跨 AZ 高可用)、以及目标服务在该区域的可用性(如某些实例类型、RDS 引擎版本、Direct Connect 落地点)。
规划阶段建议先画一张“区域—VPC—用途”对照表,把每个 VPC 的归属、角色、环境(生产/预发/共享服务)写清楚,再分配地址。示例规划如下(参数为教学示例,非实测):
| 区域 | VPC 名称 | 角色 | CIDR | 可用区 |
|---|---|---|---|---|
| ap-northeast-1 | prod-vpc | 主生产 | 10.10.0.0/16 | 1a / 1c / 1d |
| ap-southeast-1 | dr-vpc | 灾备 | 10.20.0.0/16 | 1a / 1b / 1c |
| ap-northeast-1 | shared-vpc | 共享服务 | 10.30.0.0/16 | 1a / 1c |
这里刻意让主备 VPC 使用不同的第二段(10.10 与 10.20),而不是同一段的不同子网。原因是:跨区域对等连接和 Transit Gateway 都要求两端 CIDR 不重叠,一旦重叠,路由无法唯一确定下一跳,连接直接不可用。把“区域编号”编进第二段,是最省心的防重叠手段。
二、CIDR 分配:给未来留出可扩展的位
CIDR 分配的核心是“预留”。一个 /16 有 65536 个地址,看似很多,但如果一开始就切成 /24 子网,最多只能切 256 个,且每个子网可用地址只有 251 个(AWS 每个子网保留 5 个地址:网络地址、VPC 路由器、DNS、未来保留、广播)。更稳妥的做法是按“环境—层级—可用区”三级切分。
以 10.10.0.0/16 为例,可先按层级切成四块:
- 10.10.0.0/18 —— 公共层(ALB、NAT Gateway、跳板机)
- 10.10.64.0/18 —— 应用层(EC2、ECS、Lambda ENI)
- 10.10.128.0/18 —— 数据层(RDS、ElastiCache、OpenSearch)
- 10.10.192.0/18 —— 预留层(未来新增服务或迁移)
每个 /18 再按可用区切成 /20 或 /22。例如应用层在 1a 用 10.10.64.0/20,1c 用 10.10.80.0/20,1d 用 10.10.96.0/20。这样每个 AZ 有 4091 个可用地址,足够承载中等规模集群,同时保留 10.10.112.0/20 作为该层扩展位。分配时建议用一张地址台账记录“已分配/已预留/空闲”,避免后续团队各自申请时撞车。
三、子网分层与路由表隔离
子网分层不只是“公有/私有”两分。灾备场景下更实用的是四层:公共层、应用层、数据层、管理/终端节点层。每层绑定独立路由表,实现三点隔离:
- 公共层路由表含 0.0.0.0/0 → Internet Gateway,只放 ALB 和 NAT Gateway,不放业务实例。
- 应用层路由表含 0.0.0.0/0 → NAT Gateway(出站),不接收入站公网流量。
- 数据层路由表只保留本地路由和到应用层的路由,不配 0.0.0.0/0,彻底阻断出公网。
- 管理/终端节点层路由表指向 VPC Endpoint 或 Transit Gateway,用于 SSM、S3、ECR 等私有访问。
路由表隔离的价值在故障时最明显:当主区域应用层被攻破,攻击者无法直接跳到数据层,因为数据层路由表里根本没有指向公网或其它层的默认路由。同理,灾备区域的数据层可以只允许来自本区域应用层的流量,跨区域复制走独立的终端节点或对等连接,不混在业务路由里。
四、对等连接策略:连什么、不连什么
对等连接(VPC Peering)是跨 VPC 通信最直接的方式,但它有两个硬约束:CIDR 不能重叠,且不支持传递路由。也就是说,A 连 B、B 连 C,A 不能通过 B 访问 C。灾备场景下,对等连接通常只用于三类流量:
- 跨区域数据复制:主区域数据层 → 灾备区域数据层,走对等连接或 Transit Gateway,只放行数据库端口。
- 管理流量:运维跳板机到灾备区域应用层,走对等连接,配合安全组限制源 IP。
- 共享服务访问:两个区域的 VPC 都连到共享服务 VPC(如 AD、日志、镜像仓库),避免每个 VPC 重复部署。
不建议用对等连接承载业务东西向流量,因为对等连接数量会随 VPC 数量平方增长,路由表也会迅速膨胀。当 VPC 超过 5 个或需要跨多个区域时,应改用 Transit Gateway + 路由表分段,把“谁和谁通”收敛到 TGW 路由表里管理。
五、一个可执行的规划检查清单
在动手创建 VPC 之前,建议逐项确认以下内容,避免返工:
| 检查项 | 判断标准 | 示例 |
|---|---|---|
| 区域角色 | 主/备/共享是否明确 | prod-vpc 主,dr-vpc 备 |
| CIDR 不重叠 | 所有 VPC 两两不重叠 | 10.10/16 与 10.20/16 |
| 子网容量 | 每层每 AZ 可用地址 ≥ 预期 2 倍 | /20 提供 4091 个 |
| 路由隔离 | 数据层无默认路由 | 仅本地 + 应用层 |
| 对等连接用途 | 仅复制/管理/共享服务 | 不承载业务东西向 |
| 预留空间 | 至少保留一个 /18 | 10.10.192.0/18 |
把这张清单在规划评审时过一遍,比事后改路由、拆子网、重建对等连接要省力得多。VPC 灾备设计的本质,是在地址空间这个不可变约束下,提前把区域、层级、路由和连接关系安排清楚,让切换时只需要改路由指向,而不需要动网络骨架。