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-A 10.1.0.0/16 VPC-B 10.2.0.0/16 Peering 点对点 · 不传递路由 安全组不可跨区域引用 故障域:单条连接 N 个 VPC → N(N-1)/2 条连接 Transit Gateway Peering TGW-A TGW-B Peering VPC-A1/A2 VPC-B1/B2 区域枢纽 · 支持路由传播 故障域:整个 TGW 路由表 跨区域路由需显式配置 跨区域 PrivateLink 服务提供方 NLB + Endpoint Svc 服务消费方 Interface Endpoint PrivateLink 单向服务访问 · 不暴露 CIDR 故障域:单个服务端点 仅支持 TCP 端口级暴露 安全性最高 · 故障隔离最好 故障域与切换影响分析 VPC Peering 故障 影响:单条连接 切换:改路由指向备用 恢复:分钟级 TGW Peering 故障 影响:区域间全部流量 切换:需备用 TGW 路径 恢复:依赖路由收敛 PrivateLink 故障 影响:单个服务端点 切换:多端点 DNS 轮询 恢复:秒级至分钟级 推荐组合 核心服务:PrivateLink 区域互联:TGW Peering 点对点:VPC Peering 故障域越小,切换粒度越细,但连接数量与运维成本越高;需按业务 RTO/RPO 权衡 跨区域流量均走 AWS 骨干网,延迟主要取决于地理距离,与连接方式无关 注意:TGW Peering 跨区域路由不自动传播,必须显式配置静态路由或路由传播

二、跨区域 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 处理特殊点对点需求。

跨区域流量无论走哪种方式,都经过 AWS 全球骨干网,延迟主要由地理距离决定。选择连接方式时,应优先考虑故障域、安全边界和运维复杂度,而非延迟差异。
TGW Peering 的跨区域路由不会自动传播到对端 TGW 的挂载。若遗漏静态路由,会出现“peering 状态正常但流量不通”的典型故障。排障时先查 TGW 路由表,再查 peering attachment 路由。

六、跨区域连通性检查清单

检查项VPC PeeringTGW PeeringPrivateLink
CIDR 是否重叠必须不重叠必须不重叠不涉及
路由配置位置VPC 路由表TGW 路由表 + attachment 路由Endpoint ENI 自动
安全组引用不可跨区域不可跨区域消费方安全组控制 ENI
路由传播不支持需显式配置不涉及
故障域单条连接整个 TGW 路由表单个服务端点
典型验证命令ping / nctgw route 查询 + pingcurl / openssl s_client

实际排障时,建议按“物理层→路由层→安全层→应用层”顺序排查:先确认 peering/attachment 状态为 available,再检查路由表是否有目标 CIDR 条目,然后检查安全组和 NACL 是否放行,最后用 traceroute 或 VPC Flow Logs 确认流量是否到达目标 ENI。跨区域场景下,Flow Logs 需在两端 VPC 分别开启,才能完整追踪流量路径。