我所服务的公司最近决定使用EC2实例在AWS上使用docker swarm部署新应用程序。我们将三个EC2实例的群集设置为节点(一个管理器,两个工作器),并使用堆栈来部署服务。
问题在于,尝试连接到在同一VPC上的RDS上运行的postgres数据库时,其中一项服务(django应用程序)会超时。但是仅当服务发布端口时。
不发布任何端口的服务可以很好地连接到数据库。
RDS终结点已解析为正确的IP,因此它不应该是DNS问题,并且容器可以连接到Internet。这些服务还能够在不同的节点上相互通信。
数据库的安全组定义也应该没有问题,因为EC2实例本身可以与数据库建立连接。
此外,服务可以连接到VPC内其他实例上运行的事物。
似乎这与群集(和覆盖网络)有关,因为在具有网桥网络的普通容器中运行应用程序不会引起任何问题。
堆栈似乎不是问题所在,因为即使手动创建服务,问题仍然存在。
我们在Ubuntu 18.04.4 LTS和docker-compose版本3上使用Docker CE版本19.03.8。
当您将群集子网配置为与VPC中的子网冲突时,就会出现问题。您必须将群子网更改为其他CIDR。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句