4. 跨区域网络连通性工程
跨区域网络连通性工程的核心问题不是“能不能通”,而是“用什么方式通、故障域如何切分、成本与运维复杂度如何权衡”。在 AWS 中,跨区域组网主要有三条路径:跨区域 VPC Peering、Transit Gateway Peering(TGW Peering)以及跨区域 PrivateLink。三者并非互相替代,而是分别对应不同的连接语义、路由模型和故障边界。理解它们的差异,才能在设计多区域灾备时做出正确选择。
一、三种跨区域连接的本质差异
跨区域 VPC Peering 是两个 VPC 之间的点对点连接,路由通过各自 VPC 的路由表指向 peering connection。它不经过任何中转网关,延迟最低,但连接数量随 VPC 数量呈平方增长,且不支持传递路由——A 与 B 对等、B 与 C 对等,A 并不能自动访问 C。跨区域 Peering 的流量走 AWS 骨干网,加密由底层保障,但安全组引用不能跨区域使用,必须用 CIDR 作为源/目标。
Transit Gateway Peering 是把两个区域的 TGW 对接,每个 TGW 再挂载本区域的 VPC、VPN、Direct Connect。它解决了 VPC Peering 的网状爆炸问题,形成“区域枢纽—区域枢纽”的两级结构。TGW Peering 支持路由传播,但跨区域路由不会自动传播到对端 TGW 的挂载,需要在 TGW 路由表中显式配置静态路由或启用路由传播。它的故障域更大:一个 TGW 的路由表错误会影响该区域所有挂载。
跨区域 PrivateLink 是服务消费模型,不是网络对等模型。服务提供方在本地区域创建 NLB 并发布为 VPC Endpoint Service,消费方在另一区域创建 Interface VPC Endpoint,通过 PrivateLink 访问该服务。它只暴露单个服务端口,不暴露整个 VPC 的 CIDR,因此故障域最小、安全性最高,但只支持单向服务访问,不能用于任意主机间通信。
二、跨区域 VPC Peering 的工程要点
跨区域 VPC Peering 的创建需要指定对端区域和 VPC ID,接受后双方路由表各加一条指向 peering connection 的路由。关键限制有三点:第一,CIDR 不能重叠,否则无法建立;第二,安全组不能跨区域引用,必须用 CIDR 或前缀列表;第三,不支持边缘到边缘路由,即 A-B 对等、B-C 对等时 A 无法经 B 访问 C。
以一个双区域灾备为例:主区域 VPC 网段 10.1.0.0/16,备区域 VPC 网段 10.2.0.0/16。创建 peering 后,主区域路由表添加 10.2.0.0/16 → pcx-xxxx,备区域路由表添加 10.1.0.0/16 → pcx-xxxx。安全组入站规则需放行对端 CIDR 的所需端口。验证时从主区域 EC2 执行 ping 10.2.1.10 或 nc -zv 10.2.1.10 3306,若不通则依次检查路由表、安全组、NACL 和 peering 状态是否为 active。
三、Transit Gateway Peering 的路由设计
TGW Peering 的典型结构是每个区域一个 TGW,本区域 VPC 挂载到本地 TGW,两个 TGW 之间建立 peering attachment。路由配置分两层:TGW 路由表决定挂载之间的转发,peering attachment 的路由决定跨区域可达性。跨区域路由不会自动传播,需要在 TGW 路由表中为对端 CIDR 添加静态路由指向 peering attachment,或启用路由传播(若对端 TGW 支持)。
假设主区域 TGW-A 挂载 VPC-A(10.1.0.0/16),备区域 TGW-B 挂载 VPC-B(10.2.0.0/16)。在 TGW-A 的路由表中添加 10.2.0.0/16 → tgw-attach-peering,在 TGW-B 的路由表中添加 10.1.0.0/16 → tgw-attach-peering。若还有 VPC-A2(10.3.0.0/16)挂在 TGW-A 下,要让 TGW-B 侧访问它,还需在 TGW-B 路由表添加 10.3.0.0/16 → peering,并在 TGW-A 路由表确保 VPC-A2 的路由已传播。这种“路由逐条显式”的特性,正是 TGW Peering 故障域较大的原因:一条遗漏的路由会导致整个网段不可达。
四、跨区域 PrivateLink 的服务暴露模型
PrivateLink 跨区域使用时,服务提供方在本地区域创建 NLB,监听目标端口(如 443),然后创建 VPC Endpoint Service 并关联 NLB。消费方在另一区域创建 Interface VPC Endpoint,选择该 Endpoint Service 的 ARN,系统会在消费方 VPC 的多个子网中创建 ENI,并分配私有 IP。消费方通过该 ENI 的 DNS 名称或私有 IP 访问服务。
关键参数包括:Endpoint Service 的接受策略(自动接受或手动接受)、消费方 Endpoint 的子网选择(建议至少两个 AZ)、安全组(控制谁可以访问 ENI)。PrivateLink 不暴露服务提供方的 VPC CIDR,消费方也无法访问提供方的其他资源,因此故障域被限制在单个服务端点。若提供方在多个区域部署了相同服务,消费方可创建多个 Endpoint 并配置 DNS 轮询或 Route 53 健康检查实现故障切换。
五、故障域分析与选型建议
从故障域角度看:VPC Peering 的故障域是单条连接,一条 peering 中断只影响两个 VPC 之间的流量;TGW Peering 的故障域是整个 TGW 路由表或 peering attachment,影响该区域所有挂载的跨区域通信;PrivateLink 的故障域是单个服务端点,影响范围最小。
选型时建议遵循以下原则:核心业务服务跨区域暴露优先用 PrivateLink,因为它安全边界清晰、故障隔离好;区域间大规模 VPC 互联用 TGW Peering,避免网状连接爆炸;少量 VPC 之间点对点低延迟通信用 VPC Peering。实际工程中三者常组合使用:TGW Peering 承载区域间基础网络,PrivateLink 承载关键服务暴露,VPC Peering 处理特殊点对点需求。
六、跨区域连通性检查清单
| 检查项 | VPC Peering | TGW Peering | PrivateLink |
|---|---|---|---|
| CIDR 是否重叠 | 必须不重叠 | 必须不重叠 | 不涉及 |
| 路由配置位置 | VPC 路由表 | TGW 路由表 + attachment 路由 | Endpoint ENI 自动 |
| 安全组引用 | 不可跨区域 | 不可跨区域 | 消费方安全组控制 ENI |
| 路由传播 | 不支持 | 需显式配置 | 不涉及 |
| 故障域 | 单条连接 | 整个 TGW 路由表 | 单个服务端点 |
| 典型验证命令 | ping / nc | tgw route 查询 + ping | curl / openssl s_client |
实际排障时,建议按“物理层→路由层→安全层→应用层”顺序排查:先确认 peering/attachment 状态为 available,再检查路由表是否有目标 CIDR 条目,然后检查安全组和 NACL 是否放行,最后用 traceroute 或 VPC Flow Logs 确认流量是否到达目标 ENI。跨区域场景下,Flow Logs 需在两端 VPC 分别开启,才能完整追踪流量路径。