【问题标题】:Amazon RDS Postgres name or service not knownAmazon RDS Postgres 名称或服务未知
【发布时间】:2023-04-07 05:12:01
【问题描述】:

我有 2 个 Amazon EC2 实例。我正在使用一个进行开发。我开始了一个新的,我想让它正常工作,这样我就可以使用这个更清洁的来制作一个 AMI。我在 RDS 实例中使用带有 Postgres 后端的 Django。 RDS 实例正在运行 Postgresql 9.4.4。开发 EC2 实例(这是一个有效的实例)正在运行 Postgresql 9.3.9。新实例正在运行 Postgresql 9.3.10。

在开发实例上,我可以通过命令行轻松连接和使用 RDS 实例:

psql --host django.xxxxxxxxx.us-east-1.rds.amazonaws.com  --port 5432 --username django_login  --dbname django_db

但是如果我在新实例上使用相同的命令,我会得到 ​​p>

psql:无法将主机名“django.xxxxxxxxx.us-east-1.rds.amazonaws.com”转换为地址:名称或服务未知

两个 EC2 实例都在同一个安全组 (launch-wizard-1) 中。 RDS 有一个安全组,所有 TCP、所有 UDP 和所有 IMCP 都设置为 launch-wizard-1 作为源。

开发实例位于 us-east-1d。新实例位于 us-east-1c 中。 RDS 实例位于 us-east-1d 中。我怀疑这可能是问题所在,但据我了解 RDS 文档应该没问题。但是,如果这就是问题所在,您知道如何更改 EC2 实例的可用区吗?

我已尝试将 RDS 实例设置为私有,然后再设置为公共。并没有什么不同。

任何想法都会受到赞赏。

【问题讨论】:

  • 新服务器有公网IP吗?
  • 我尝试将 RDS 设为公开和私有,结果相同。 EC2 实例具有公有地址和私有地址。我正在使用 ssh 使用私有 ip 登录这两个实例。

标签: postgresql amazon-web-services amazon-ec2 rds


【解决方案1】:

问题正如我所怀疑的那样。该实例位于不同的子网中。我从 us-east-1c 中的实例创建了一个 ami,从 ami 在 us-east-1d 子网中创建了一个新实例。现在我可以从新实例进行连接了。

顺便说一句 - 当您创建一个实例时,您应该设置子网以匹配您的其他实例并不是很明显。在实例配置页面上查找该选项。

【讨论】:

  • 您的 RDS 实例应该可以从多个子网访问,除非您已采取措施锁定其他子网中的流量。在默认 VPN 配置中,您将能够从所有子网访问您的 RDS 实例,这是可取的,因为您希望将实例分布在子网/可用区中以实现冗余。
  • 你是对的。这就是我从文档中了解到的。我以为我已经检查了 RDS 安全组和 EC2 安全组的每个配置。我会再次检查是否有错误的设置。我不想再做一个实例来验证。
  • EC2 实例共享 launch-wizzard-1。所以我不认为这是问题所在。无奈之下,我什至将 RDS sg 设置为接受所有流量。这是 RDS 的 sg: 所有 TCP TCP 0 - 65535 sg-xxxxxxxx (launch-wizard-1) PostgreSQL TCP 5432 sg-xxxxxxxx (launch-wizard-1) 所有流量 所有 所有 sg-xxxxxxxx (launch-wizard-1 ) 所有 UDP UDP 0 - 65535 sg-xxxxxxxx (launch-wizard-1) 所有 ICMP 所有 N/A sg-xxxxxxxx (launch-wizard-1)
  • 很确定这不是安全组问题。您应该查看 VPC 中的子网 ACL 和路由表。
  • 感谢您的帮助。 RDS 使用默认 VPC,列出了所有四个子网。 ACL 也是所有四个子网的默认设置。
猜你喜欢
  • 2016-11-10
  • 2013-08-08
  • 2016-01-06
  • 2019-07-07
  • 1970-01-01
  • 2021-08-19
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多