

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为复制实例设置网络
<a name="CHAP_ReplicationInstance.VPC"></a>

AWS DMS 始终在基于 Amazon VPC 的 VPC 中创建复制实例。您可以指定复制实例所在的 VPC。您可以为您的账户和 AWS 地区使用默认 VPC，也可以创建新的 VPC。

确保为复制实例的 VPC 分配的弹性网络接口与安全组关联。此外，请确保此安全组的规则允许所有端口上的所有流量流出（出口）VPC。使用此方法，如果端点上启用了正确的传出规则，就允许从复制实例与您的源和目标数据库端点通信。我们建议您为终端节点使用默认设置，这允许在所有端口上传出到所有地址。

源和目标终端节点连接到 VPC 或者位于 VPC 内部，以此来访问位于 VPC 内部的复制实例。数据库端点必须包括允许从复制实例进行传入访问的网络访问控制列表 (ACLs) 和安全组规则（如果适用）。如何进行此项设置取决于您使用的网络配置。您可以使用复制实例 VPC 安全组、复制实例的私有或公有 IP 地址或者 NAT 网关的公有 IP 地址。这些连接构成了您用于数据迁移的网络。

**注意**  
由于 IP 地址可能会因底层基础设施的变化而发生变化，因此我们建议您使用 VPC CIDR 范围，或者通过与 NAT GW 关联的弹性 IP 路由复制实例的出站流量。有关创建 VPC（包括 CIDR 块）的更多信息，请参阅 *Amazon Virtual Private Cloud 用户*指南中的使用[ VPCs 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html)。有关弹性 IP 地址的更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》**中的[弹性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-ip-addresses-eip.html)。

## 数据库迁移的网络配置
<a name="CHAP_ReplicationInstance.VPC.Configurations"></a>

您可以在 D AWS atabase Migration Service 中使用几种不同的网络配置。以下是用于数据库迁移的常见网络配置。

**Topics**
+ [一个 VPC 中具有所有数据库迁移组件的配置](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioAllVPC)
+ [多重配置 VPCs](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer)
+ [共享配置 VPCs](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCShared)
+ [使用 Direct Connect 或 VPN 配置到 VPC 的网络](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioDirect)
+ [使用 Internet 连接 VPC 的网络配置](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioInternet)
+ [使用不在 VPC 中的 RDS 数据库实例与 VPC 中的数据库实例进行配置 ClassicLink](#CHAP_ReplicationInstance.VPC.Configurations.ClassicLink)
+ [连接到 AWS 服务的网络的配置](#CHAP_ReplicationInstance.VPC.Configurations.networkconnecting)
+ [使用 VPC 终端节点连接到 AWS 服务的网络的配置](#CHAP_ReplicationInstance.VPC.Configurations.vpcendpoints)
+ [使用互联网连接到 AWS 服务的网络的配置](#CHAP_ReplicationInstance.VPC.Configuration.networkconnectingusinginternet)

如果可行，我们建议您在与目标端点所在的相同区域以及相同 VPC 或子网中创建 DMS 复制实例。

### 一个 VPC 中具有所有数据库迁移组件的配置
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioAllVPC"></a>

对于数据库迁移而言，最简单的网络是源终端节点、复制实例和目标终端节点都位于同一个 VPC 中。当源和目标端点均位于 Amazon RDS 数据库实例或 Amazon EC2 实例上时，此配置非常合适。

下图显示了位于 Amazon EC2 实例上的数据库连接到复制实例并将数据迁移到 Amazon RDS 数据库实例的配置。

![\[AWS Database Migration Service 一体化 VPC 示例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioAllVPC.png)


此配置中使用的 VPC 安全组必须允许从复制实例向数据库端口的传入。可以通过多种方式执行此操作。您可以确保复制实例使用的安全组可以传入端点。或者，如果您正在使用复制实例，则可以允许复制实例的 VPC CIDR 范围、NAT GW 弹性 IP 或私有 IP 地址。但是我们不建议您使用复制实例的私有 IP 地址，因为如果复制 IP 地址发生变化，它可能中断您的复制。

### 多重配置 VPCs
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer"></a>

如果您的源终端节点和目标终端节点不同 VPCs，则可以在其中一个中创建复制实例 VPCs。然后，您可以使用 VPC 对等连接将两 VPCs 者联系起来。

VPC 对等连接是两者之间的网络连接 VPCs ，它允许使用每个 VPC 的私有 IP 地址进行路由，就像它们在同一个网络中一样。您可以在自己的 VPCs、与另一个 AWS 账户中的 VPC 或不同 AWS 区域的 VPC 之间创建 VPC 对等连接。有关 VPC 对等连接的更多信息，请参阅《Amazon VPC 用户指南》中的 [VPC 对等连接](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html)**。

下图显示了一个使用 VPC 对等连接的示例配置。在此处，VPC 中 Amazon EC2 实例上的源数据库通过 VPC 对等连接来连接到 VPC。此 VPC 包含 Amazon RDS 数据库实例上的复制实例和目标数据库。

![\[AWS 数据库 Migration Service 复制实例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioVPCPeer.png)


要实现 VPC 对等连接，请按照《Amazon Virtual Private Cloud VPC 对等连接》**文档中的[使用 VPC 对等连接](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html)说明进行操作。请确保一个 VPC 的路由表中包含另一个 VPC 的 CIDR 块。例如，如果 VPC A 使用目标 10.0.0.0/16，而 VPC B 使用目标 172.31.0.0，则 VPC A 的路由表应包含 172.31.0.0，VPC B 的路由表必须包含 10.0.0.0/16。有关更多详细信息，请参阅《Amazon Virtual Private Cloud VPC 对等连接》**文档中的[更新 VPC 对等连接的路由表](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html)。

此配置中使用的 VPC 安全组必须允许从复制实例向数据库端口的传入，还应允许具有对等关系的 VPC 上 CIDR 块的传入。

### 共享配置 VPCs
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCShared"></a>

AWS DMS 将共享给组织中参与客户账户的子网视为同一账户中的普通子网。下面描述了如何 AWS DMS 处理 VPCs、子网以及如何使用共享 VPCs。

您可以将网络配置配置为在自定义子网中运行，也可以 VPCs 通过创建`ReplicationSubnetGroup`对象进行配置。创建 `ReplicationSubnetGroup` 时，您可以选择指定账户中特定 VPC 的子网。您指定的子网列表必须包括至少两个位于不同可用区的子网，并且所有子网都必须位于同一 VPC 中。在创建时`ReplicationSubnetGroup`，客户只能指定子网。 AWS DMS 将代表您确定 VPC，因为每个子网仅链接到一个 VPC。

创建 AWS DMS `ReplicationInstance`或时 AWS DMS `ReplicationConfig`，您可以选择指定在其中运行`ReplicationInstance`或无服务器复制的 VPC 安全组。`ReplicationSubnetGroup` and/or 如果未指定，则 AWS DMS 选择客户默认值`ReplicationSubnetGroup`（如果未为默认 VPC 中的所有子网指定，则代表您 AWS DMS 创建）和默认 VPC 安全组。

您可以选择在您指定的可用区中运行迁移，也可以选择在 `ReplicationSubnetGroup` 中的任何可用区中运行迁移。当 AWS DMS 尝试创建复制实例或启动无服务器复制时，它会将您的子网的可用区转换为核心服务账户中的可用区，以确保即使两个账户之间的可用区域映射不相同，我们也能在正确的可用区中启动实例。

如果您使用共享 VPC，则需确保创建映射到您希望从共享 VPC 使用的子网的 `ReplicationSubnetGroup` 对象。创建 `ReplicationInstance` 或 `ReplicationConfig` 时，必须为共享 VPC 指定 `ReplicationSubnetGroup`，并在创建请求中指定您为共享 VPC 创建的 VPC 安全组。

请注意以下有关使用共享 VPC 的注意事项：
+ VPC 所有者不能与参与者共享资源，但参与者可以在所有者的子网中创建服务资源。
+ VPC 所有者无法访问参与者创建的资源（例如复制实例），因为所有资源都是特定于账户的。但是，只要您在共享 VPC 中创建复制实例，并且复制端点或任务具有正确的权限，它就可以访问 VPC 中的资源，而不管拥有哪个账户。
+ 由于资源是特定于账户的，因此其他参与者无法访问其他账户拥有的资源。您无法向其他账户授予任何权限，允许他们使用您的账户访问在共享 VPC 中创建的资源。

### 使用 Direct Connect 或 VPN 配置到 VPC 的网络
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioDirect"></a>

远程网络可以使用多种选项连接到 VPC，例如 Di AWS rect Connect 或软件或硬件 VPN 连接。这些选项通常将内部网络扩展到 AWS 云来集成现有现场服务，例如监控、身份验证、安全、数据或其他系统。使用此类型的网络扩展，您可以无缝连接到 AWS托管的资源，例如 VPC。

下图显示了源终端节点是公司数据中心内本地数据库的配置。它使用 Direct Connect 或 VPN 连接到 Amazon RDS 数据库实例上包含复制实例和目标数据库的 VPC。

![\[AWS 数据库 Migration Service 复制实例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioDirect.png)


在此配置中，VPC 安全组必须包含一个路由规则，即，将以 VPC CIDR 范围或特定 IP 地址为目标的流量发送到主机。此主机必须能够将流量从 VPC 桥接到本地 VPN 中。在这种情况下，NAT 主机包括自己的安全组设置。这些设置必须允许来自复制实例的 VPC CIDR 范围、私有 IP 地址或安全组的流量进入 NAT 实例。但是我们不建议您使用复制实例的私有 IP 地址，因为如果复制 IP 地址发生变化，它可能中断您的复制。

### 使用 Internet 连接 VPC 的网络配置
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioInternet"></a>

如果您不使用 VPN 或 Direct Connect 不连接 AWS 资源，则可以使用互联网迁移数据库。在这种情况下，您可以迁移到 Amazon EC2 实例或 Amazon RDS 数据库实例。此配置涉及到带有 Internet 网关的 VPC 中的公有复制实例，该 VPC 中包含目标终端节点和复制实例。

![\[AWS 数据库 Migration Service 复制实例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioInternet.png)


要将互联网网关添加到 VPC，请参阅《Amazon VPC 用户指南》中的[连接互联网网关](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Attach_Gateway)**。

VPC 路由表必须包含一个路由规则，即，将并非以 VPC 为目标的流量默认发送到互联网网关。在此配置中，与终端节点的连接将显示为来自复制实例的公有 IP 地址，而非私有 IP 地址。有关更多信息，请参阅《Amazon VPC 用户指南》中的 [VPC 路由表](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html)**。

### 使用不在 VPC 中的 RDS 数据库实例与 VPC 中的数据库实例进行配置 ClassicLink
<a name="CHAP_ReplicationInstance.VPC.Configurations.ClassicLink"></a>


|  | 
| --- |
| 我们将于 2022 年 8 月 15 日停用 EC2-Classic。我们建议您从 EC2-Classic 迁移到 VPC。有关更多信息，请参阅《Amazon EC2 用户指南》中的[从 EC2-Classic 迁移到 VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) 和博客 [EC2-Classic Networking is Retiring – Here’s How to Prepare](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/)。 | 

要将不在 VPC 中的 Amazon RDS 数据库实例连接到 DMS 复制服务器和 VPC 中的数据库实例 ClassicLink ，您可以使用代理服务器。

ClassicLink 使您能够将 EC2-Classic 数据库实例关联到同一 AWS 区域内您账户中的 VPC。在您创建了链接之后，源数据库实例可以与 VPC 中的复制实例通过其私有 IP 地址进行通信。

由于 VPC 中的复制实例无法使用直接访问 EC2-Classic 平台上的源数据库实例 ClassicLink，因此您可以使用代理服务器。代理服务器将源数据库实例连接到包含复制实例和目标数据库实例的 VPC。代理服务器用于连接 ClassicLink 到 VPC。代理服务器上的端口转发允许源数据库实例与 VPC 中的目标数据库实例之间的通信。

![\[AWS 数据库迁移服务使用 ClassicLink\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioClassicLink.png)


#### 使用 D AWS atabas ClassicLink e Migration Service
<a name="CHAP_ReplicationInstance.VPC.Configurations.ClassicLink.Using"></a>

您可以将不在 VPC 中的 Amazon RDS 数据库实例连接到位于 VPC 中的 AWS DMS 复制服务器和数据库实例。为此，您可以将 Amazon EC2 ClassicLink 与代理服务器一起使用。

以下过程说明如何 ClassicLink 用于此目的。此过程将不在 VPC 中的 Amazon RDS 源数据库实例连接到包含 AWS DMS 复制实例和目标数据库实例的 VPC。
+ 在 VPC 中创建 AWS DMS 复制实例。（所有复制实例都是在中创建的 VPCs。）
+ 将 VPC 安全组与复制实例和目标数据库实例关联。当两个实例共享一个 VPC 安全组时，默认情况下，它们可以相互通信。
+ 在 EC2 Classic 实例上设置代理服务器。
+ 在代理服务器和 VPC ClassicLink 之间使用创建连接。
+ 为源数据库和目标数据库创建 AWS DMS 端点。
+ 创建 AWS DMS 任务。

**用于 ClassicLink 将不在 VPC 中的数据库实例上的数据库迁移到 VPC 中数据库实例上的数据库**

1. 创建 AWS DMS 复制实例并分配 VPC 安全组：

   1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2/)/上打开 AWS DMS 控制台。

      如果您以 AWS Identity and Access Management (IAM) 用户身份登录，请确保您拥有相应的访问权限 AWS DMS。有关数据库迁移所需权限的更多信息，请参阅 [使用所需的 IAM 权限 AWS DMS](security-iam.md#CHAP_Security.IAMPermissions)。

   1. 在**控制面板**页中，选择**复制实例**。按照[步骤 1：使用 AWS DMS 控制台创建复制实例](CHAP_GettingStarted.Replication.md#CHAP_GettingStarted.Replication.ReplicationInstance)中的说明操作来创建复制实例。

   1.  创建 AWS DMS 复制实例后，打开 EC2 服务控制台。从导航窗格中选择**网络接口**。

   1. 选择*DMSNetwork接口*，然后从 “**操作**” 菜单中选择 “**更改安全组**”。

   1. 选择要用于复制实例和目标数据库实例的安全组。

1.  将最后一步中的安全组与目标数据库实例关联：

   1. 打开 Amazon RDS 服务控制台。从导航窗格中选择**实例**。

   1.  选择目标数据库实例。在**实例操作**中，选择**修改**。

   1. 对于**安全组**参数，请选择在上一步中使用的安全组。

   1. 选择**继续**，然后选择**修改数据库实例**。

1. 步骤 3：使用 NGINX 在 EC2 Classic 实例上设置代理服务器。使用您选择的 AMI 启动 EC2 Classic 实例。下面的示例基于 AMI Ubuntu Server 14.04 LTS (HVM)。

   在 EC2 Classic 实例上设置代理服务器

   1. 使用以下命令连接到 EC2 Classic 实例并安装 NGINX：

      ```
      Prompt> sudo apt-get update
      Prompt> sudo wget http://nginx.org/download/nginx-1.9.12.tar.gz
      Prompt> sudo tar -xvzf nginx-1.9.12.tar.gz 
      Prompt> cd nginx-1.9.12
      Prompt> sudo apt-get install build-essential
      Prompt> sudo apt-get install libpcre3 libpcre3-dev
      Prompt> sudo apt-get install zlib1g-dev
      Prompt> sudo ./configure --with-stream
      Prompt> sudo make
      Prompt> sudo make install
      ```

   1.  使用以下代码编辑 NGINX 守护程序文件 `/etc/init/nginx.conf`：

      ```
      # /etc/init/nginx.conf – Upstart file
      
      description "nginx http daemon"
      author "email"
      
      start on (filesystem and net-device-up IFACE=lo)
      stop on runlevel [!2345]
      
      env DAEMON=/usr/local/nginx/sbin/nginx
      env PID=/usr/local/nginx/logs/nginx.pid
      
      expect fork
      respawn
      respawn limit 10 5
      
      pre-start script
              $DAEMON -t
              if [ $? -ne 0 ]
                      then exit $?
              fi
      end script
      
      exec $DAEMON
      ```

   1. 在 `/usr/local/nginx/conf/nginx.conf` 中创建 NGINX 配置文件。在配置文件中，添加以下内容：

      ```
      # /usr/local/nginx/conf/nginx.conf - NGINX configuration file
      
      worker_processes  1;
      
      events {
          worker_connections  1024;
      }
      
      stream {
        server {
          listen DB instance port number;
      proxy_pass DB instance identifier:DB instance port number;
          }
      }
      ```

   1. 从命令行中，使用以下命令启动 NGINX：

      ```
      Prompt> sudo initctl reload-configuration
      Prompt> sudo initctl list | grep nginx
      Prompt> sudo initctl start nginx
      ```

1. 在代理服务器和包含目标数据库实例和复制实例的目标 VPC 之间创建 ClassicLink 连接：

   1. 打开 EC2 控制台，并选择正在运行代理服务器的 EC2 Classic 实例。

   1. 对于 “**操作**”，选择 **ClassicLink**，然后选择 “**链接到 VPC**”。

   1.  选择本过程中前面使用的安全组。

   1. 选择**链接到 VPC**。

1. 步骤 5：使用中的步骤创建 AWS DMS 端点。[步骤 2：指定源和目标端点](CHAP_GettingStarted.Replication.md#CHAP_GettingStarted.Replication.Endpoints)在指定源端点时，请确保将代理的内部 EC2 DNS 主机名作为服务器名称。

1. 使用中的步骤创建 AWS DMS 任务。[步骤 3：创建任务并迁移数据](CHAP_GettingStarted.Replication.md#CHAP_GettingStarted.Replication.Tasks)

### 连接到 AWS 服务的网络的配置
<a name="CHAP_ReplicationInstance.VPC.Configurations.networkconnecting"></a>

要连接 AWS 服务，请使用互联网连接或虚拟私有云 (VPC) 终端节点。这适用于以下情况：

您的源端点或目标端点使用以下 AWS 服务：  
+ AWS Secrets Manager
+ Amazon Simple Storage Service

您的目标终端节点是一项 AWS 服务，例如：  
+ Amazon S3
+ Amazon Kinesis
+ Amazon DynamoDB
+ Amazon Redshift
+ 亚马逊 OpenSearch 服务
+ Amazon Athena

### 使用 VPC 终端节点连接到 AWS 服务的网络的配置
<a name="CHAP_ReplicationInstance.VPC.Configurations.vpcendpoints"></a>

VPC 终端节点可在您的 AWS 资源之间提供安全的连接，无需访问互联网即可将 VPC 资源连接到 AWS 服务。私有子网中的应用程序可以访问 AWS 服务，同时保持在 AWS 网络内，从而提高安全性并减少延迟。请参考下图：

![\[\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/aws_dms_vpc_endpoints.jpg)


有关更多信息，请参阅[将 VPC 终端节点配置为 AWS DMS 源和目标终端节点和](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_VPC_Endpoints.html)[配置 s AWS DMS ecrets Manager VPC 终端节点](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Advanced.Endpoints.secretsmanager.html)。

### 使用互联网连接到 AWS 服务的网络的配置
<a name="CHAP_ReplicationInstance.VPC.Configuration.networkconnectingusinginternet"></a>

在数据迁移期间，复制实例需要访问互联网才能连接 AWS 资源。

有关 VPC 内私有子网和公有子网的更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》**中的[示例：在私有子网中部署服务器并且具有 NAT 中的 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html)。您必须确保测试您的网络配置，以确保其能连接到任何必需的服务。

## 创建复制子组
<a name="CHAP_ReplicationInstance.VPC.Subnets"></a>

作为数据库迁移所用网络的一部分，您需要指定计划在虚拟私有云（VPC）中使用的子网。此 VPC 必须基于 Amazon VPC 服务。*子网* 是在指定可用区中您的 VPC 内的 IP 地址范围。这些子网可以分布在您的 VPC 所在 AWS 区域的可用区中。

在 AWS DMS 控制台中创建复制实例或实例配置文件时，您可以使用您选择的子网。

您创建复制子网组来定义要使用的子网。您必须指定至少位于两个可用区中的子网。

**创建复制子网组**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2/)/上打开 AWS DMS 控制台。

   如果以 IAM 用户身份登录，请确保具有适当的 AWS DMS访问权限。有关数据库迁移所需权限的更多信息，请参阅 [使用所需的 IAM 权限 AWS DMS](security-iam.md#CHAP_Security.IAMPermissions)。

1. 在导航窗格中，选择**子网组**。

1. 选择 **Create subnet group (创建子网组)**。

1. 在**创建复制子网组**页中，指定您的复制子网组信息。下表描述了设置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html)

1. 选择 **Create subnet group (创建子网组)**。

## 使用 DNS 解析域端点
<a name="CHAP_ReplicationInstance.VPC.Route53"></a>

通常， AWS DMS 复制实例使用 Amazon EC2 实例中的域名系统 (DNS) 解析器来解析域终端节点。如果您需要 DNS 解析，可以使用 Amazon Route 53 Resolver。有关使用 Route 53 DNS 解析程序的更多信息，请参阅 [Route 53 Resolver 入门](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-getting-started.html)。

有关如何使用您自己的本地名称服务器通过 Amazon Route 53 Resolver 解析某些端点的信息，请参阅[使用您自己的本地名称服务器](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver)。