AWS DMS 与 RDS 上的 Postgresql 的连接问题

问题描述 投票:0回答:4

我有 2 个 Aws RDS 实例(在 Postgresql 上运行)。两者都在不同的帐户和不同的地区。我想使用 AWS DMS 在它们之间设置数据复制。 我尝试过进行 VPC 对等互连。 我看到了以下视频来启用 VPC 对等互连:-

https://www.youtube.com/watch?v=KmCEFGDTb8U

问题:- 当我尝试创建 AWS DMS 服务时,我为源添加主机名、用户名和密码等(存在于其他账户上),当我点击

Test Connection
时,出现以下错误。

Test Endpoint failed: Application-Status: 1020912, Application-Message: Failed to connect Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]timeout expired ODBC general error.

令我惊讶的是,当我点击同一帐户中的目标 RDS 实例的

Test Connection
时,我收到了类似的错误。即:-

Test Endpoint failed: Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]timeout expired ODBC general error.

Google 建议我们使用某种防火墙,但查看 NACL,我可以看到我们允许两个 VPC 都使用 0.0.0.0/0。

postgresql amazon-web-services amazon-rds amazon-vpc aws-dms
4个回答
3
投票

以下解决方案对我有用。

  1. 创建复制实例,然后创建端点。
  2. 如果测试端点失败 - 请确保从实例中获取私有 IP(如果 DMS 复制实例和数据库位于同一 VPC 内)并将其添加到相应安全 ID 的入站规则中。
  3. 如果 VPC 位于不同区域,您可能需要 VPC 对等来进行排序。

由于我的两者都在同一个 VPC 中运行,因此将私有 IP 添加到入站规则工作正常,并且连接成功。


2
投票

如果您尝试从一个 IP 中的私有 IP 范围访问另一 IP,除了创建 VPC 对等连接之外,您还必须:

  • 在两个 VPC 中创建路由表条目,以通过对等连接将流量路由到远程 VPC 的 IP 范围,
  • 允许安全组内的连接,无论是来自目标安全组中的源 CIDR 范围,还是在其出站规则中过滤来自源的传出连接。 请注意,您不能使用安全组 ID 来允许此流量,因为它不适用于跨区域对等互连;
  • 允许底层软件中的连接(可能默认允许),
  • 允许网络 ACL 传递流量(您已验证默认情况下也是允许的)

由于您看到超时,我怀疑安全组规则。 但是,这也可能是一条糟糕的路线。


0
投票

按照此处的建议https://aws.amazon.com/premiumsupport/knowledge-center/dms-endpoint-connectivity-failures/

修改用于测试与 Endpoint 连接的 Replication Instance 时,请注意:

  1. 私有IP地址
  2. VPC 安全组

将安全组更改为合适的安全组,或编辑正在使用的安全组,添加入站规则以允许来自复制实例的私有 IP 地址的 PostgreSQL 流量类型


0
投票

我也遇到了同样的错误,我正在尝试将 DMS 从 EC2 PG 14 迁移到 RDS PG 16。这是一个误导性错误,我通过将目标 RDS PG 版本设置为 14 来修复它。似乎 DMS 可能不支持比 PG14 更新的版本,因为现在。

© www.soinside.com 2019 - 2024. All rights reserved.