我在ECS上有3个容器: web,api和nginx。基本上,nginx将流量代理到web和api容器:
upstream web {
server web-container:3000;
}
upstream api {
server api-container:3001;
}但每次我重新部署web或api时,它们都会改变它们的IP,所以我需要在之后重新部署nginx,以便让它能够“拾取”新的IP。
有没有办法避免这种情况,这样我就可以更新,比方说api服务和nginx服务将自动代理到正确的IP地址?
发布于 2021-09-21 10:30:12
我假设这些容器属于3个不同的任务定义,并最终属于3个不同的任务(或者更好的3个不同的服务)。
如果这就是设置,那么您需要使用service discovery。这只适用于ECS服务,其思想是创建3个不同的服务,每个服务中都有1+任务。您为服务命名(例如nginx、web、api),其中的每个容器都将能够通过指向fqdn (例如api.local)来解析其他容器。当nginx服务中的容器尝试连接到api.local时,服务发现会将该名称解析为ECS服务api中某个任务的IP。
如果您想查看如何设置的示例,可以查看此demo app,尤其是this CloudFormation template
https://stackoverflow.com/questions/69264466
复制相似问题