亚马逊AWS官方博客

使用Amazon Site-to-site VPN建立SAP高可用链路

一、背景介绍

客户是一家跨国生物合成领军企业,在海外拥有生产基地和办公场所。客户采用 SAP 作为企业的供应链平台,SAP 部署在亚马逊云科技 新加坡区域,为方便新加坡员工访问 SAP,需要在公司和 SAP 之间建立安全稳定的链路。

二、解决方案

方案基于 Amazon Site-to-site VPN 和 Amazon Transit Gateway 实现。由于在 Amazon 云端部署的 SAP 采用了 RISE with SAP 方案,而客户没有 SAP RISE 账号的管理权,因此客户注册了自己的Amazon 账号以使用上述服务来建立链路。

2.1 环境规划

以下为本文的测试环境网络规划情况,

  • on-premises:CIDR 192.168.0.0/16。并有两个 IPSec VPN 网关,其配置如下:
    • 公网 IP 地址分别是:IP A 和 IP B
    • BGP Local ASN 都是:65000
    • 均启用非对称路由
  • SAP RISE VPC:CIDR 10.0.0.0/16

2.2 整体架构

其中涉及多个 Amazon 网络功能,这些功能的概念和用途如下:

  • Customer Gateway:Amazon 中用于代表客户本地 IPSec VPN 网关的逻辑资源。通过 Customer Gateway 定义客户本地的 IPSec VPN 网关的公网 IP 地址以及 BGP ASN 等
  • Transit Gateway:Amazon 提供的 region 级别网络中枢服务,用于集中连接和转发多个网络。通过 Transit Gateway 把 VPC、Site-to-Site VPN 集中互联
  • Transit Gateway VPN Attachment:代表 VPN 与 TGW 之间的逻辑绑定关系。用户创建的 Transit Gateway VPN Attachment 在 Amazon 会自动随之创建一个 VPN Connection
  • VPN Connection:Amazon 与 Customer Gateway 之间建立的一条 Site-to-Site VPN 连接。通过 VPN Connection 定义 IPsec VPN 的加密参数和认证方式
  • VPN Tunnel:VPN Connection 中的单条 IPsec 加密隧道。通过 VPN Tunnel 提供实际的数据加密传输通道
  • Transit Gateway VPC Attachment:代表 VPC 与 TGW 之间的逻辑绑定关系

2.3 方案优势

  • 管理简化
    • 绝大部分网络配置在客户的 Amazon 账户中管理,从而使客户拥有更多控制权
    • Transit Gateway 集中管理 VPC、Site-to-Site VPN 等多个网络的拓扑和路由转发
  • 传输安全
    • 云上与云下连接的 Site-to-Site VPN 使用标准的 IPSec 协议族,确保数据在互联网传输时不会被窃听或篡改
  • 高可用
    • 两个 Customer Gateway 双活部署,避免 on-premises 环境的 IPSec VPN 网关单点故障
    • 四条 VPN Tunnel 流量分担,借助 ECMP 聚合多个 VPN Tunnel 获得更高的 VPN 带宽

三、具体方案实现

3.1 客户 Amazon 账号内的配置过程

1、创建一个 transit gateway,注意启用 “VPN ECMP 支持” 选项,便于能在 transit gateway 的 VPN 连接上使用 ECMP 路由。

2、创建两个 customer gateway,其 IP Address 分别对应 on-premises 环境的两个 IPSec VPN 网关的公网 IP 地址(也就是 IP A 和 IP B),BGP ASN 是 on-premises 环境的 ASN。

3、创建两个 VPN attachment,将 transit gateway 和两个 customer gateway 分别连接起来。因为本文的 on-premises 环境中,IPSec VPN 网关支持BGP动态路由功能,这里创建 VPN attachment 时 “routing options” 选项应选择了 Dynamic,否则选择 Static。

4、稍等几分钟以后,会看到 Amazon 自动创建了两个 Site-to-Site VPN Connection,对应上一步的两个 VPN attachment

5、在 Site-to-Site VPN Connection 详情页面选择 “Download Configuration”,有多个设备厂商的配置模板可供下载。配置模板中含有 IPSec、BGP 相关配置参数。

6、使用配置模板在 on-premises 环境的 IPSec VPN 网关完成配置之后,两个 Site-to-Site VPN Connection 下的共计四条 VPN tunnel 都将变为 UP 状态。

    • 并且transit gateway 也自动学习到了 on-premises 环境的路由(168.0.0./16)。

7、在 transit gateway 的详情页面,通过 Amazon RAM 将其共享给 SAP RISE 账号。

3.2 SAP RISE 账号内的配置过程

1、在 Amazon RAM 中接受从客户 Amazon 账号共享的 transit gateway 之后,创建一个 VPC attachment,将 transit gateway 和 SAP RISE VPC 连接起来。

2、修改 SAP RISE VPC 的子网路由表,添加一条路由,设定去往 on-premises 的流量都走 transit gateway。

3.3 客户 Amazon 账号内确认 VPC Attachment

在 Transit gateway attachments 菜单中找到处于 pending acceptance 状态的 attachment,点击接受以后即可看到 transit gateway 自动学习到了 SAP RISE VPC 的路由(10.0.0.0/16)。

3.4 连通性验证

  • on-premises 环境(左)和 SAP RISE VPC (右)内的两台机器互 ping,可见连通性正常。
  • 在 on-premises 环境的测试机和 SAP RISE VPC 内的测试机之间使用 iperf 测试网络带宽,可见带宽达到 3Gbps 以上,表明 VPN ECMP 成功实现了在多条最大带宽为1.25Gbps 的 VPN Tunnel 上的流量分担。

四、高可用测试

4.1 关闭 on-premises 环境内其中的一台 IPSec VPN 网关,模拟 IPSec VPN 网关异常的场景

Amazon 上其中的一个 Site-to-Site VPN Connection 下的两条 VPN Tunnel,随后显示都 down 掉了。

但是从 SAP RISE VPC 到 on-premises 环境的双向互 ping 没有观察到丢包。

4.2 修改另外一个 VPN Connection 下的 Tunnel1 的 Pre-shared key,模拟 Amazon 设备的例行维护场景

当测试场景触发时,Amazon 上从原有的四条 UP 状态的 VPN Tunnel 变成只剩下一条 UP 状态的了。

从 SAP RISE VPC 到 on-premises 环境的双向互 ping,观察到了短暂的丢包,而后迅速恢复,所有的流量都走剩下的唯一一条 UP 状态的 VPN Tunnel。

五、总结

在客户的 Amazon 账号使用 Transit Gateway + Site-to-Site VPN 连接 on-premises 环境与 SAP RISE VPC,可实现混合架构下网络的连通;使用 VPN ECMP 聚合多条 VPN Tunnel,可实现流量分担和高可用。整体方案简洁可靠、可扩展。

六、参考材料

https://aws.amazon.com/cn/blogs/networking-and-content-delivery/scaling-vpn-throughput-using-aws-transit-gateway/

https://repost.aws/questions/QUskuBM-VnSkOfQTfDl3EJpw/active-active-vpn-site-to-site-configuration-to-aws

https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-transit-gateway-vpn.html

本篇作者

张铭

10年+ 开发和设计经验,在边缘计算、大规模集群性能优化等领域有丰富的实战经验,擅长系统架构、云原生技术。

何建桥

10+软件开发和设计经验,擅长云原生以及大数据相关应用的架构设计与实现。


AWS 架构师中心:云端创新的引领者

探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用