【问题标题】:Docker container on ECS times out when communicating RDS Postgres与 RDS Postgres 通信时,ECS 上的 Docker 容器超时
【发布时间】:2019-04-18 06:47:35
【问题描述】:

我在 ECS 上有一个 dockerized nodejs 应用程序,它应该连接到位于 Amazon RDS 上的 postgres 实例。

在本地,我可以运行 docker 容器并连接(读/写)到 RDS 数据库

当我将容器部署到 ECS 时,尝试读取/写入 RDS Postgres DB 时出现超时。

我像这样构建了我的 docker 容器

docker build -t my-app .

然后我运行了我的 docker 应用程序

docker run -p 80:3000 XXXXXXX

我的 RDS 实例在 myappdb.ceonhqpz1vl1.us-east-1.rds.amazonaws.com:5432/appdb 运行

我认为这一定是端口问题,但我如上所述发布了端口。所以我认为这必须有效。但是当我通过 AWS 上的浏览​​器运行应用程序并尝试读取/写入数据库时​​,请求需要很长时间然后超时。

我现在不知道在哪里调试,我对 docker 有点陌生

【问题讨论】:

  • 您是否确保正确配置 AWS 安全组以允许通信?
  • 嗯,我没有。您能指出我可以查看的正确位置吗?快速搜索后,我看到了一些关于 VPC 的信息。我应该确保 ECS/RDS 在同一个 VPC 下吗?
  • 这取决于您的 RDS 实例是否可公开访问,但两者位于同一 VPC 中可能更有意义。同一 VPC 中的两台机器仍需要正确配置其安全组以确保连接性。
  • 我确保我的 RDS 实例是公开可用的。当我运行我的 docker 容器本地时,我能够连接和读/写我的 RDS 实例。我现在对是否应该在我的 docker 容器上发布端口 5432 感到困惑,以便像我的 RDC 表这样的外部服务可以通信。
  • 感谢@Matthew,我通过安全组找到了解决方案

标签: postgresql amazon-web-services docker amazon-rds amazon-ecs


【解决方案1】:

有一个 RDS 实例入站流量源设置为我的本地 IP;这意味着 Postgres RDS 实例的流量仅限于个人 IP 地址。我对其进行了更改,因此入站流量可以来自anywhere0.0.0.0。这就是我想要的用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-14
    • 2020-11-15
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多