本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 DMS 架构转换设置网络
DMS 架构转换是一项无服务器功能。为了连接到您的数据库,它会在您的 VPC 内的子网中放置一个弹性网络接口 (ENI)。创建实例配置文件时,您需要指定要使用的 VPC、子网组和安全组。您可以为账户使用默认 VPC Amazon Web Services 区域,也可以创建新的 VPC。
为确保 DMS 架构转换与您的数据提供程序之间的正确连接,请配置以下网络组件:
-
安全组-在与 DMS 架构转换关联的安全组上配置出口规则,以允许出站流量流向您的源数据库和目标数据库网络。在数据库安全组上配置入口规则,以允许来自 DMS 架构转换安全组的入站流量。
-
网络 ACL — 如果您的子网使用网络访问控制列表,请确保它们允许 DMS 架构转换子网和您的数据库子网之间的流量。
-
路由表-确保与 DMS 架构转换子网关联的路由表具有到达您的源数据库和目标数据库的路由。这可能包括 VPC 对等路由、VPN 网关路由或 NAT 网关路由,具体取决于您的配置。
-
子网 — DMS 架构转换将 ENI 放置在您的子网组中定义的子网中。子网组必须至少包含两个位于不同可用区域的子网。
重要
由于 DMS 架构转换是无服务器的,因此 ENI IP 地址可以随时更改。请勿使用特定 IP 地址加入许可名单。取而代之的是,在数据库安全组的入口规则中引用 DMS 架构转换安全组,或者通过具有关联弹性 IP 地址的 NAT 网关路由出站流量,以实现本地连接。
您可以在 DMS 架构转换中使用多种不同的网络配置。以下是用于架构转换的网络的常见配置。如果可行,我们建议您在与目标终端节点相同的区域创建实例配置文件,并使用与目标终端节点相同的 VPC 或子网。
主题
为源和目标数据提供程序使用单个 VPC
DMS 架构转换最简单的网络配置是单个 VPC 配置。在此设置中,实例配置文件指定源数据库和目标数据库所在的相同 VPC。DMS 架构转换使用该 VPC 中的 ENI 连接到两个数据库。
下图显示了一种配置,其中源数据库连接到 DMS 架构转换,架构转换为目标数据库,所有这些都位于同一 VPC 内。
数据库上的安全组必须允许从 DMS 架构转换安全组进入数据库端口。请勿使用特定的 ENI IP 地址进行许可名单,因为 ENI IP 地址随时可能发生变化。
以下示例显示了数据库安全组的入口规则。在这些示例中,sg-1234567890abcdef0是与 DMS 架构转换关联的安全组。使用您的数据库配置为监听的端口。
| Type | 协议 | 端口范围 | 来源 | 说明 |
|---|---|---|---|---|
| Oracle-RDS | TCP | 1521 | sg-1234567890abcdef0 | Oracle 数据库 |
| MySQL/Aurora | TCP | 3306 | sg-1234567890abcdef0 | MySQL 或 Aurora MySQL 数据库 |
| PostgreSQL | TCP | 5432 | sg-1234567890abcdef0 | PostgreSQL 或 Aurora PostgreSQL 数据库 |
| MSSQL | TCP | 1433 | sg-1234567890abcdef0 | 微软 SQL Server 数据库 |
| 自定义 TCP | TCP | 你的港口 | sg-1234567890abcdef0 | 任何其他使用自定义端口的数据库 |
为源和目标数据提供程序使用多个 VPC
如果您的源数据库和目标数据库位于不同的 VPC 中,包括不同 Amazon 账户或区域中的 VPC,则可以将实例配置文件配置为使用其中一个 VPC,然后使用 VPC 对等连接将两个 VPC 关联起来。您也可以使用其他 VPC-to-VPC 连接选项,例如 T Amazon ransit Gateway。有关更多信息,请参阅 Amazon VPC-to-Amazon VPC 连接选项。
VPC 对等连接是两个 VPC 之间的网络连接,它使用每个 VPC 的私有 IP 地址激活路由,就像它们在同一个网络中一样。您可以在自己的 VPC 之间、与另一个 Amazon 账户中的 VPC 或其他账户中的 VPC 之间创建 VPC 对等连接。 Amazon Web Services 区域有关 VPC 对等连接的更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 对等连接。
下图显示了使用 VPC 对等连接的配置。在这里,一个 VPC 中的源数据库通过 VPC 对等连接至另一个包含 DMS 架构转换的 VPC 和目标数据库。
要实现 VPC 对等连接,请按照《Amazon VPC 用户指南》的使用 VPC 对等连接中的说明进行操作。请确保一个 VPC 的路由表中包含另一个 VPC 的 CIDR 块。例如,假设 VPC A 正在使用目标 10.0.0。 0/16 而且 VPC B 正在使用目标 172.31.0。 0/16。在这种情况下,VPC A 的路由表应包含 172.31.0。 0/16,而且 VPC B 的路由表必须包含 10.0.0。 0/16。有关更多详细信息,请参阅《Amazon VPC 对等连接指南》中的更新 VPC 对等连接的路由表。
数据库上的安全组必须允许从 DMS 架构转换安全组进入数据库端口。如果您的 VPC 位于不同的 Amazon 账户或不同的区域,则可能不支持安全组引用。在这种情况下,请改用对等互连 VPC 的子网 CIDR 范围。
以下示例显示了 VPC A 中源数据库的入口规则,该规则允许从 VPC B (172.31.1) 中的 DMS 架构转换子网 CIDR 范围进行访问。 0/24)。使用您的数据库配置为监听的端口。如果两个 VPC 位于同一个区域和账户中,我们建议使用安全组引用而不是 CIDR 范围,以实现更严格的访问控制。
| Type | 协议 | 端口范围 | 来源 | 说明 |
|---|---|---|---|---|
| Oracle-RDS | TCP | 1521 | 172.31.1。 0/24 | Oracle 数据库 |
| MySQL/Aurora | TCP | 3306 | 172.31.1。 0/24 | MySQL 或 Aurora MySQL 数据库 |
| PostgreSQL | TCP | 5432 | 172.31.1。 0/24 | PostgreSQL 或 Aurora PostgreSQL 数据库 |
| MSSQL | TCP | 1433 | 172.31.1。 0/24 | 微软 SQL Server 数据库 |
| 自定义 TCP | TCP | 你的港口 | 172.31.1。 0/24 | 任何其他使用自定义端口的数据库 |
为源数据提供者和目标数据提供者使用共享 VPC
Amazon Database Migration Service 将共享给组织中参与客户账户的子网视为同一账户中的普通子网。
您可以通过创建复制子网组将您的网络配置为在自定义子网或 VPC 中运行。创建复制子网组时,需要指定特定 VPC 中的子网。子网列表必须包括位于不同可用区的至少两个子网,并且所有子网必须位于同一 VPC 中。
如果您使用共享 VPC,请从共享 VPC 创建映射到您要使用的子网的复制子网组。创建实例配置文件时,请指定共享 VPC 的复制子网组和为共享 VPC 创建的 VPC 安全组。
请注意以下有关使用共享 VPC 的注意事项:
-
VPC 所有者不能与参与者共享资源,但参与者可以在所有者的子网中创建服务资源。
-
VPC 所有者无法访问参与者创建的资源,因为所有资源都是特定于账户的。但是,只要您将实例配置文件配置为使用共享 VPC,只要有正确的权限,无论拥有哪个账户,DMS 架构转换都可以访问 VPC 中的资源。
-
由于资源是特定于账户的,因此其他参与者无法访问其他账户拥有的资源。您无法向其他账户授予任何权限,允许他们使用您的账户访问在共享 VPC 中创建的资源。
使用 Amazon Direct Connect 或用于将网络配置为 VPC 的 VPN
远程网络可以使用多种选项连接到 VPC,例如软件 Amazon Direct Connect 或硬件 VPN 连接。您可以使用这些选项,通过将内部网络扩展到 Amazon Web Services 云,集成现有的现场服务。您可以集成现场服务,例如监控、身份验证、安全、数据或其他系统。通过使用这种类型的网络扩展,您可以将现场服务无缝连接到托管的资源 Amazon,例如 VPC。您可以使用此配置转换本地源数据库。
下图显示了源终端节点是公司数据中心内本地数据库的配置。它通过使用 Amazon Direct Connect 或 VPN 连接到包含 DMS 架构转换和目标数据库的 VPC。
在此配置中,设置以下网络组件:
-
与 DMS 架构转换子网关联的路由表必须包含一条将发往本地 CIDR 范围的流量发送到虚拟专用网关 (VGW) 或 Transit Gateway 的路由。
-
NAT 或网桥主机上的安全组必须允许来自所需数据库端口的 DMS 架构转换安全组的入站流量。
-
DMS 架构转换安全组必须允许本地数据库端口的出站流量。
请勿使用特定的 ENI IP 地址进行许可名单,因为 ENI IP 地址随时可能发生变化。有关更多信息,请参阅《Amazon Site-to-Site VPN 用户指南》中的创建 Site-to-Site VPN 连接。
使用互联网连接到 VPC
如果您不使用 VPN 或 Amazon Direct Connect 不连接 Amazon 资源,则可以使用互联网连接到源数据库。此配置使用具有私有子网的 VPC 和提供出站互联网访问的 NAT 网关。您可以使用此配置来转换具有公共访问权限的本地源数据库。
下图显示了一种配置,其中 VPC 中的 DMS 架构转换使用 NAT 网关通过互联网连接到本地源数据库。
要启用从您的 VPC 到可公开访问的源数据库的连接,请将 VPC 配置为通过 NAT 网关连接到互联网的私有子网。NAT 网关提供一致的公有 IP 地址,您可以将其添加到源数据库的防火墙许可名单中,从而允许私有子网中的资源通过 Internet 连接到源数据库。
VPC 路由表必须包含默认情况下将不发往 VPC 的流量发送到 NAT 网关的路由规则。在此配置中,与数据提供程序的连接似乎来自 NAT 网关的公共 IP 地址。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 路由表。
要将互联网网关添加到 VPC,请参阅《Amazon VPC 用户指南》中的连接互联网网关。
使用 DNS 解析域端点
如果您需要解析数据库的域终端节点,可以使用 Amazon Route 53 解析器。有关使用 Route 53 DNS 解析程序的更多信息,请参阅 Route 53 Resolver 入门。
有关如何使用您自己的本地名称服务器通过 Amazon Route 53 Resolver 解析某些端点的信息,请参阅使用您自己的本地名称服务器。
对 DMS 架构转换的网络问题进行故障排除
以下各节介绍在使用 DMS 架构转换时可能遇到的常见网络相关错误以及如何解决这些错误。
数据库连接错误
当 DMS 架构转换无法访问您的源数据库或目标数据库时,您可能会看到以下错误消息:
-
Could not connect to your{origin}database at '{serverName}:{port}'. Verify your network configuration, security groups, and that the database server is reachable.其中之一
{origin}是source或target,{serverName}是您的数据库服务器主机名,{port}是数据库端口号。
您也可以查看您账户中的 DMS 架构转换 Amazon CloudWatch 日志,找出连接失败的具体原因。
要解决这些错误,请检查以下内容:
-
验证服务器名称和端口-确认在数据提供程序中配置的服务器名称和端口是否正确。您可以使用 Amazon DMS 控制台或 Amazon CLI 检查数据提供程序设置。有关查找数据库终端节点和端口的更多信息,请参阅 Amazon Relational Database S ervice 用户指南中的查找 Amazon RDS 数据库实例的连接信息。
-
检查安全组规则-验证与 DMS 架构转换关联的安全组是否允许数据库端口上的出站(出口)TCP 流量。还要验证数据库上的安全组是否允许来自 DMS 架构转换安全组的入站(入口)TCP 流量。有关使用安全组规则的更多信息,请参阅 Amazon VPC 用户指南中的使用安全组规则。
-
检查网络 ACL-验证 DMS 架构转换子网和数据库子网上的网络 ACL 是否允许数据库端口上的双向流量。
-
检查路由表-验证与 DMS 架构转换子网关联的路由表是否具有到达数据库的正确路由。如果您使用 VPC 对等互连、VPN 或 Amazon Direct Connect,请确保存在相应的路由。
-
查看 DMS 架构转换 Amazon CloudWatch 日志 — 查看 DMS 架构转换日志,了解详细的错误信息。您可以在迁移项目的 “架构转换” 选项卡上找到日志链接,也可以使用 Amazon CLI 获取包含异常的日志条目。
首先,找到您的 DMS 架构转换日志组。日志组名称以以下开头
dms-tasks-sct,包括迁移项目的 ARN 的最后一块:aws logs describe-log-groups \ --log-group-name-prefix dms-tasks-sct然后,使用
filter-log-events以下命令在日志组中搜索异常:aws logs filter-log-events \ --log-group-namedms-tasks-sct-your-migration-project\ --filter-pattern "Exception" \ --start-timestart_timestamp_ms\ --end-timeend_timestamp_ms您可以
Exception用其他模式(例如ERROR或)替换"Could not connect"以缩小结果范围。--start-time和的--end-time值是以毫秒为单位的 Unix 时间戳。