AWS VPC Transit Gateway 部署:实现多 VPC(开发/测试/生产)间流量集中管控
1. 核心概念与价值
- Transit Gateway (TGW) 是 AWS 的托管式网络枢纽,支持集中连接 VPC、VPN 和 Direct Connect。
- 集中管控价值 :
- 统一路由:替代复杂的 VPC Peering 网状连接,简化 n 个 VPC 的互联(复杂度从 O(n\^2) 降至 O(n))。
- 安全隔离:通过路由表分离开发、测试、生产环境流量。
- 成本优化:减少数据传输费用,避免跨区域流量绕行。
2. 部署架构设计
graph LR
A[开发 VPC] --> TGW(Transit Gateway)
B[测试 VPC] --> TGW
C[生产 VPC] --> TGW
TGW --> D[审计 VPC]
TGW --> E[互联网网关]
- 关键组件 :
- 每个 VPC 的私有子网挂载 TGW 附件(Attachment)。
- TGW 路由表按环境隔离(开发/测试/生产各一个)。
- 集中审计 VPC 用于流量监控。
3. 部署步骤
步骤 1:创建 Transit Gateway
bash
aws ec2 create-transit-gateway \
--description "Multi-VPC Hub" \
--options AutoAcceptSharedAttachments=enable
- 启用
AutoAcceptSharedAttachments自动接受跨账户 VPC 连接。
步骤 2:连接 VPC 到 TGW
bash
# 示例:开发 VPC 连接
aws ec2 create-transit-gateway-vpc-attachment \
--transit-gateway-id tgw-123abc \
--vpc-id vpc-dev123 \
--subnet-ids subnet-aaa1 subnet-aaa2
- 重复操作连接测试 VPC (
vpc-test456) 和生产 VPC (vpc-prod789)。
步骤 3:配置路由表
-
创建环境专用路由表 :
bashaws ec2 create-transit-gateway-route-table \ --transit-gateway-id tgw-123abc \ --tag-specifications "ResourceType=transit-gateway-route-table,Tags=[{Key=Env,Value=Prod}]" -
关联路由 :
- 生产路由表:仅允许访问审计 VPC 和互联网网关。
- 开发/测试路由表:禁止访问生产 VPC(通过路由策略实现)。
步骤 4:安全加固
- 网络 ACL 规则 :
- 开发 VPC:允许 SSH (Port 22) 仅来自管理 IP。
- 生产 VPC:拒绝所有出站流量至测试 VPC CIDR。
- 安全组策略 :
- 应用层隔离:生产环境安全组拒绝非 443/80 端口入站。
4. 流量管控策略
- 路由优先级 :
- 精确 CIDR 路由优先于默认路由。
- 例如:生产到审计 VPC 流量走专用路由 \\text{Path} = \\frac{\\text{Direct Route}}{\\text{Default Route}}
- 流量监控 :
- 启用 VPC Flow Logs 并导入审计 VPC 的 Amazon ES。
- 使用 TGW 指标监控跨 VPC 流量峰值。
5. 最佳实践
- 环境隔离 :
- 为每个环境创建独立 TGW 路由表,避免路由泄露。
- 高可用 :
- 每个 VPC 至少两个 AZ 的子网连接 TGW。
- 成本控制 :
- 使用 TGW 对等连接(Peering)替代跨区域数据传输。
- 扩展性 :
- 通过 RAM (Resource Access Manager) 共享 TGW 给其他 AWS 账户。
6. 验证与排错
-
连通性测试 :
bash# 从开发环境 EC2 测试生产数据库 nc -zv prod-db.prod-vpc.internal 3306 -
路由诊断 :
bashaws ec2 search-transit-gateway-routes \ --transit-gateway-route-table-id rtb-123abc \ --filters "Name=route-search,Values=10.0.0.0/16"
关键提示:初始部署建议在测试环境验证路由策略,逐步灰度切换生产流量。结合 AWS Network Manager 可视化拓扑,可显著降低运维复杂度。