DTS基于VPN网关实现阿里云RDS和AWS EC2间的数据同步

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

如果您需要将AWS平台的数据同步至阿里云平台,您可以在AWS VPC和阿里云VPC之间建立网络连接,在VPC间实现网络互通的基础上,再通过数据传输服务 DTS(Data Transmission Service)将AWS平台的数据同步至阿里云平台。本文介绍如何建立IPsec-VPN连接(绑定VPN网关实例)实现AWS VPC和阿里云VPC之间的网络互通,并介绍如何通过DTS将AWS EC2中的数据同步至阿里云云数据库 RDS中。

场景示例

image

本文以上图场景为例。某企业在AWS平台的欧洲(法兰克福)地域拥有一个VPC,VPC中使用EC2部署了MySQL数据库。同时,企业在阿里云德国(法兰克福)地域也拥有一个VPC,并且VPC下已创建RDS MySQL实例。因业务需要,企业需要将AWS EC2中的数据实时同步至阿里云RDS MySQL实例中。

企业可以先使用IPsec-VPN(绑定VPN网关)在AWS VPC和阿里云VPC之间建立网络连接,在两个VPC内资源支持互通的情况下,再使用DTS将ECS2中的数据同步至阿里云RDS MySQL实例中。

前提条件

在开始操作前,请确保您已经拥有以下环境并且已获得对应的资源信息:

  • 在AWS平台欧洲(法兰克福)地域拥有一个VPC,VPC下使用EC2部署了MySQL数据库。具体操作,请咨询AWS平台

  • 在阿里云平台德国(法兰克福)地域拥有一个VPC,VPC下已经创建了RDS MySQL版数据库。具体操作,请参见快速创建RDS MySQL实例

  • 您已知VPC间要互通的网段信息以及要进行数据同步的2个数据库账号信息。

    重要

    资源

    要互通的网段

    IP地址

    数据库账号

    阿里云VPC

    10.0.0.0/16

    RDS MySQL实例的内网地址:rm-gw8x4h4tg****.mysql.germany.rds.aliyuncs.com

    如何获取RDS MySQL实例的内网地址,请参见查看和管理实例连接地址和端口

    • 用户名:AliyunUser

    • 密码:Hello1234****

    AWS VPC

    192.168.0.0/16

    数据库所属EC2实例的IP地址:192.168.30.158

    • 用户名:AWSUser

    • 密码:Hello5678****

    • 数据库提供服务端口号:3306

  • 单击查看本文中要同步的示例数据库。

    AWS表

配置步骤

image

步骤一:在阿里云创建VPN网关实例

您需要先在阿里云创建一个VPN网关实例,VPN网关实例创建完成后,系统会为VPN网关实例分配2个IP地址,这2个IP地址用于与AWS平台建立IPsec-VPN连接。

  1. 登录VPN网关管理控制台

  2. 在顶部菜单栏,选择VPN网关的地域。

    VPN网关的地域需和待绑定的VPC实例的地域相同。

  3. VPN网关页面,单击创建VPN网关

  4. 在购买页面,根据以下信息配置VPN网关,然后单击立即购买并完成支付。

    以下仅列举本文强相关的配置,其余配置项保持默认值或为空。更多信息,请参见创建和管理VPN网关实例

    配置项

    说明

    本文示例值

    实例名称

    输入VPN网关实例的名称。

    输入VPN网关。

    地域和可用区

    选择VPN网关实例所属的地域。

    选择德国(法兰克福)

    网关类型

    选择VPN网关实例的网关类型。

    选择普通型

    网络类型

    选择VPN网关实例的网络类型。

    选择公网

    隧道

    系统直接展示当前地域IPsec-VPN连接支持的隧道模式。

    • 双隧道

    • 单隧道

    关于单隧道和双隧道的说明,请参见绑定VPN网关场景双隧道IPsec-VPN连接说明

    本文保持默认值双隧道

    VPC

    选择VPN网关实例关联的VPC实例。

    选择阿里云德国(法兰克福)地域的VPC实例。

    虚拟交换机

    从VPC实例中选择一个交换机实例。

    • IPsec-VPN连接的隧道模式为单隧道时,您仅需要指定一个交换机实例。

    • IPsec-VPN连接的隧道模式为双隧道时,您需要指定两个交换机实例。

      IPsec-VPN功能开启后,系统会在两个交换机实例下各创建一个弹性网卡ENI(Elastic Network Interfaces),作为使用IPsec-VPN连接与VPC流量互通的接口。每个ENI会占用交换机下的一个IP地址。

    说明
    • 系统默认帮您选择第一个交换机实例,您可以手动修改或者直接使用默认的交换机实例。

    • 创建VPN网关实例后,不支持修改VPN网关实例关联的交换机实例,您可以在VPN网关实例的详情页面查看VPN网关实例关联的交换机、交换机所属可用区以及交换机下ENI的信息。

    选择VPC实例下的一个交换机实例。

    虚拟交换机2

    从VPC实例中选择第二个交换机实例。

    • 您需要从VPN网关实例关联的VPC实例下指定两个分布在不同可用区的交换机实例,以实现IPsec-VPN连接可用区级别的容灾。

    • 对于仅支持一个可用区的地域 ,不支持可用区级别的容灾,建议您在该可用区下指定两个不同的交换机实例以实现IPsec-VPN连接的高可用,支持选择和第一个相同的交换机实例。

    说明

    如果VPC实例下没有第二个交换机实例,您可以新建交换机实例。具体操作,请参见创建和管理交换机

    选择VPC实例下的第二个交换机实例。

    IPsec-VPN

    选择开启或关闭IPsec-VPN功能。默认值:开启

    选择开启IPsec-VPN功能。

    SSL-VPN

    选择开启或关闭SSL-VPN功能。默认值:关闭

    选择关闭SSL-VPN功能。

  5. 返回VPN网关页面,查看创建的VPN网关实例。

    刚创建好的VPN网关实例的状态是准备中,约1~5分钟左右会变成正常状态。正常状态表明VPN网关已经完成了初始化,可以正常使用。

    系统为VPN网关实例分配的2个IP地址如下表所示:

    VPN网关实例的名称

    VPN网关实例ID

    IP地址

    VPN网关

    vpn-gw8dickm386d2qi2g****

    IPsec地址1(默认为主隧道地址):8.XX.XX.130

    IPsec地址2(默认为备隧道地址):47.XX.XX.27

步骤二:在AWS平台部署VPN

为在AWS VPC和阿里云VPC之间建立IPsec-VPN连接,您需要根据以下信息在AWS平台部署VPN,具体操作请咨询AWS平台。

说明

本文中AWS VPC和阿里云VPC之间的IPsec-VPN连接使用的是静态路由方式,如果您需要使用BGP动态路由方式,请参见通过IPsec-VPN实现阿里云VPC和AWS VPC互通

  1. 创建客户网关。

    您需要在AWS侧创建2个客户网关,将阿里云VPN网关实例的2个IP地址作为客户网关的IP地址。客户网关

  2. 创建虚拟私有网关。

    您需要在AWS侧创建虚拟私有网关,并将虚拟私有网关绑定到需要和阿里云互通的VPC实例上。虚拟私有网关

  3. 创建站点到站点VPN连接。

    重要
    • 阿里云和AWS平台下的IPsec-VPN连接均支持双隧道模式,但由于AWS平台的两条隧道默认关联至同一个客户网关,而阿里云侧两条隧道拥有不同的IP地址,导致AWS平台和阿里云侧的两条隧道无法做到一一对应建立连接。为确保阿里云侧IPsec-VPN连接下两条隧道同时启用,您需要在AWS平台创建两个站点到站点的VPN连接,每个站点到站点VPN连接关联不同的客户网关。

    • 为站点到站点VPN连接配置路由时,您除了要指定阿里云VPC网段外,还需要指定100.104.0.0/16网段,DTS服务将使用该网段下的地址同步数据。

    下图展示其中一个站点到站点VPN连接的配置,隧道选项配置使用默认值。另一个站点到站点VPN连接关联与当前VPN连接不同的客户网关,其余配置与当前VPN连接相同。VPN连接

    站点到站点VPN连接创建完成后,您可以查看VPN连接下的隧道地址信息,用于后续在阿里云侧创建IPsec-VPN连接。隧道地址

    本文中,2个VPN连接隧道1的外部IP地址以及关联的客户网关IP地址如下表所示:

    站点到站点VPN连接

    隧道

    外部IP地址

    关联的客户网关IP地址

    站点到站点VPN连接1

    Tunnel 1

    3.XX.XX.5

    8.XX.XX.130

    站点到站点VPN连接2

    Tunnel 1

    3.XX.XX.239

    47.XX.XX.27

  4. 配置路由传播。

    您需要在虚拟私有网关关联的VPC实例的路由表下开启路由传播,以确保站点到站点VPN连接下的路由可以自动传播到VPC实例的路由表中。AWS路由传播.png

    AWS VPC路由表中将包含阿里云VPC网段以及DTS服务使用的网段。VPC路由表

步骤三:在阿里云部署VPN网关

在AWS平台完成VPN配置后,请根据以下信息在阿里云侧部署VPN网关,以便AWS VPC和阿里云VPC之间建立IPsec-VPN连接。

  1. 创建用户网关。

    1. 登录VPN网关管理控制台

    2. 在左侧导航栏,选择网间互联 > VPN > 用户网关

    3. 在顶部菜单栏选择用户网关的地域。

      用户网关地域需和VPN网关实例的地域相同。

    4. 用户网关页面,单击创建用户网关

    5. 创建用户网关面板,根据以下信息进行配置,然后单击确定

      您需要创建两个用户网关,并将AWS平台站点到站点VPN连接的隧道外部IP地址作为用户网关的IP地址,以建立两个加密隧道。以下仅列举本文强相关配置项,其余配置保持默认值或为空。更多信息,请参见创建和管理用户网关

      重要

      仅使用每个站点到站点VPN连接的Tunnel1的外部IP地址作为用户网关的地址。每个站点到站点VPN连接的Tunnel2的外部IP地址默认不使用,IPsec-VPN连接创建完成后,每个站点到站点VPN连接的Tunnel2默认不通。

      配置项

      说明

      用户网关1

      用户网关2

      名称

      输入用户网关的名称。

      输入用户网关1

      输入用户网关2

      IP地址

      输入AWS平台隧道的外部IP地址。

      输入3.XX.XX.5

      输入3.XX.XX.239

  2. 创建IPsec连接。

    1. 在左侧导航栏,选择网间互联 > VPN > IPsec连接

    2. 在顶部菜单栏选择IPsec连接的地域。

      IPsec连接的地域需和VPN网关实例的地域相同。

    3. IPsec连接页面,单击创建IPsec连接

    4. 创建IPsec连接页面,根据以下信息配置IPsec连接,然后单击确定

      配置项

      说明

      本文示例值

      名称

      输入IPsec连接的名称。

      输入IPsec连接

      资源组

      选择VPN网关实例所属的资源组。

      选择默认资源组。

      绑定资源

      选择IPsec连接绑定的资源类型。

      选择VPN网关

      VPN网关

      选择IPsec连接关联的VPN网关实例。

      选择已创建的VPN网关

      路由模式

      选择路由模式。

      • 目的路由模式:基于目的IP地址路由和转发流量。

      • 感兴趣流模式:基于源IP地址和目的IP地址精确的路由和转发流量。

      选择感兴趣流模式

      本端网段

      输入VPN网关实例关联的VPC实例下的网段。

      输入以下两个网段:

      • VPC网段:10.0.0.0/16

      • DTS网段:100.104.0.0/16

      重要

      您需要将DTS使用的地址段也添加到本端网段中,以便DTS通过VPN网关访问对端的数据库。

      关于DTS地址段的更多信息,请参见添加DTS服务器的IP地址段

      对端网段

      输入VPN网关实例关联的VPC实例要访问的对端的网段。

      输入192.168.0.0/16

      立即生效

      选择IPsec连接的配置是否立即生效。取值:

      • :配置完成后立即进行协商。

      • :当有流量进入时进行协商。

      选择

      启用BGP

      如果IPsec连接需要使用BGP路由协议,需要打开BGP功能的开关,系统默认关闭BGP功能。

      本文保持默认值,即不开启BGP功能。

      Tunnel 1

      为隧道1(主隧道)添加VPN相关配置。

      系统默认隧道1为主隧道,隧道2为备隧道,且不支持修改。

      用户网关

      为主隧道添加待关联的用户网关实例。

      选择用户网关1

      预共享密钥

      输入主隧道的认证密钥,用于身份认证。

      • 密钥长度为1~100个字符,支持数字、大小写英文字母及右侧字符~`!@#$%^&*()_-+={}[]\|;:',.<>/?

      • 若您未指定预共享密钥,系统会随机生成一个16位的字符串作为预共享密钥。

      重要

      隧道及其对端网关设备配置的预共享密钥需一致,否则系统无法正常建立IPsec-VPN连接。

      当前隧道的认证密钥需和连接的AWS平台隧道的密钥一致。

      加密配置

      添加IKE配置、IPsec配置、DPD、NAT穿越等配置。

      • IKE配置SA生存周期(秒)需与AWS平台保持一致,本文设置为28800。

      • IPsec配置SA生存周期(秒)需与AWS平台保持一致,本文设置为3600。

      其余配置项使用默认值。关于默认值的说明,请参见创建和管理IPsec连接(双隧道模式)

      Tunnel 2

      为隧道2(备隧道)添加VPN相关配置。

      用户网关

      为备隧道添加待关联的用户网关实例。

      选择用户网关2

      预共享密钥

      输入备隧道的认证密钥,用于身份认证。

      当前隧道的认证密钥需和连接的AWS平台隧道的密钥一致。

      加密配置

      添加IKE配置、IPsec配置、DPD、NAT穿越等配置。

      • IKE配置SA生存周期(秒)需与AWS平台保持一致,本文设置为28800。

      • IPsec配置SA生存周期(秒)需与AWS平台保持一致,本文设置为3600。

      其余配置项使用默认值。关于默认值的说明,请参见创建和管理IPsec连接(双隧道模式)

      标签

      为IPsec连接添加标签。

      保持为空。

    5. 创建成功对话框中,单击取消

  3. 配置VPN网关路由。

    创建IPsec连接后需要为VPN网关实例配置路由。创建IPsec连接时,如果路由模式您选择了感兴趣流模式,在IPsec连接创建完成后,系统会自动在VPN网关实例下创建策略路由,路由是未发布状态。您需要执行本操作,将VPN网关实例下的策略路由发布至VPC中。

    1. 在左侧导航栏,选择网间互联 > VPN > VPN网关

    2. 在顶部菜单栏,选择VPN网关实例的地域。

    3. VPN网关页面,单击目标VPN网关实例ID。

    4. 在VPN网关实例详情页面单击策略路由表页签,找到目标路由条目,在操作列单击发布

    5. 发布路由对话框,单击确定

    阿里云VPC的路由表中将会包含AWS VPC的网段。VPC路由表1

步骤四:测试网络连通性

完成上述配置后,阿里云VPC和AWS VPC下的资源已经可以互相通信了,您可以通过以下步骤验证阿里云VPC和AWS VPC之间的网络连通性。

重要

在测试连通性前,请确保您已经了解阿里云VPC和AWS VPC所应用的安全组规则,并确保安全组规则允许VPC下的资源互相通信。

  1. 登录AWS EC2实例。具体操作,请咨询AWS平台。

  2. 在EC2实例中执行ping命令,访问阿里云RDS MySQL实例的内网地址。

    ping <阿里云RDS MySQL实例内网地址>

    如果EC2实例可以收到如下所示的回复报文,则证明阿里云VPC和AWS VPC下的资源可以正常通信。测试连通性

步骤五:创建DTS数据同步任务

VPC之间的资源可以互相通信后,您可以开始创建DTS数据同步任务。DTS数据同步任务配置完成后可以将EC2中的数据同步至阿里云RDS MySQL实例中。

  1. 进入同步任务的列表页面。

    1. 登录DMS数据管理服务

    2. 在顶部菜单栏中,单击集成与开发

    3. 在左侧导航栏,选择数据传输(DTS) > 数据同步

    说明
  2. 同步任务右侧,选择同步实例所属地域。

    说明

    新版DTS同步任务列表页面,需要在页面左上角选择同步实例所属地域。

  3. 单击创建任务,配置源库及目标库信息。

    警告

    选择源和目标实例后,建议您仔细阅读页面上方显示的使用限制,否则可能会导致任务失败或数据不一致。

    类别

    配置

    说明

    任务名称

    DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。

    源库信息

    数据库类型

    选择MySQL

    接入方式

    选择专线/VPN网关/智能网关

    实例地区

    选择源MySQL数据库所属地域。

    本文选择德国(法兰克福)

    是否跨阿里云账号

    选择不跨账号

    已和源端数据库联通的VPC

    选择VPN网关实例关联的VPC实例。

    DTS将通过IPsec-VPN连接访问AWS EC2下的数据库。

    IP地址或域名

    输入源MySQL数据库主机IP地址。

    本文输入AWS EC2的私网IP地址192.168.30.158

    端口

    输入源MySQL数据库的服务端口。本文输入3306

    数据库账号

    输入源MySQL数据库的账号。

    数据库密码

    输入该数据库账号对应的密码。

    连接方式

    本文使用默认值非加密连接

    目标库信息

    数据库类型

    选择MySQL

    接入方式

    选择云实例

    实例地区

    选择阿里云RDS MySQL实例所属的地域。

    本文选择德国(法兰克福)

    是否跨阿里云账号

    选择不跨账号

    RDS实例ID

    选择阿里云VPC下的RDS MySQL实例。

    数据库账号

    输入RDS MySQL实例的数据库账号。

    数据库密码

    输入该数据库账号对应的密码。

    连接方式

    本文使用默认值非加密连接

  4. 配置完成后,单击页面下方的测试连接以进行下一步。在DTS服务器访问授权对话框,单击测试连接

    请确保阿里云VPC和AWS VPC所应用的安全组规则允许DTS访问。例如,在安全组规则的入方向允许100.104.0.0/16网段的资源通过。关于DTS使用的地址段的更多信息,请参见添加DTS服务器的IP地址段

    • 如果系统测试VPC下的数据库可以正常连通,则表明数据库之间的网络连通性正常,系统会跳转至配置任务对象页面。

    • 如果系统测试VPC下的数据库无法正常连通,则不会跳转至下一个页面,请根据页面提示排查问题。更多信息,请参见如何解决使用VPN将数据库实例接入DTS时报错

  5. 配置任务对象页面,选择AWS EC2下要同步至阿里云的数据库,其余配置项及后续配置均保持默认配置。更多信息,请参见专线、VPN网关或智能网关接入的自建MySQL同步至RDS MySQL

    同步的表

    配置完成后,DTS会自动开始数据同步任务,您可以登录阿里云RDS MySQL实例中,查看数据同步结果。数据同步结果

相关文档