【发布时间】:2020-10-22 14:06:43
【问题描述】:
我工作的公司最近决定使用 EC2 实例在 AWS 上部署一个带有 docker swarm 的新应用程序。我们设置了一个由三个 EC2 实例组成的集群作为节点(一个管理器,两个工作人员),我们使用堆栈来部署服务。
问题是其中一项服务(一个 django 应用程序)在尝试连接到在同一 VPC 中的 RDS 上运行的 postgres 数据库时遇到超时。但仅当服务发布端口时。
不发布任何端口的服务可以很好地连接到数据库。
RDS 端点被解析为正确的 IP,因此它不应该是 DNS 问题,并且容器可以连接到 Internet。这些服务还能够在不同的节点上相互交谈。
数据库的安全组定义也不应该有问题,因为 EC2 实例本身可以连接到数据库。
此外,这些服务可以连接到 VPC 内其他实例上运行的事物。
似乎它与 swarm(和覆盖网络)有关,因为在具有桥接网络的普通容器中运行应用程序不会导致任何问题。
堆栈似乎不是问题,因为即使手动创建服务,问题仍然存在。
我们在 Ubuntu 18.04.4 LTS 和 docker-compose 版本 3 上使用 Docker CE 版本 19.03.8。
【问题讨论】:
标签: amazon-web-services docker amazon-rds docker-swarm docker-stack