【问题标题】:Docker Service in Swarm cannot connect to AWS RDS when a port is published发布端口时,Swarm 中的 Docker 服务无法连接到 AWS RDS
【发布时间】: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


    【解决方案1】:

    当您配置 swarm 子网与 VPC 中的子网冲突时,就会出现问题。您必须更改您的 swarm 子网不同的 CIDR。

    【讨论】:

    • 是的,您可以通过以下命令执行此操作:docker swarm init --default-addr-pool 10.10.0.0/16
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 2017-06-04
    • 2015-06-24
    • 2017-03-02
    相关资源
    最近更新 更多