【问题标题】:Two ECS tasks connectivity in one EC2 Host一台 EC2 主机中的两个 ECS 任务连接
【发布时间】:2020-08-24 15:18:03
【问题描述】:
我有 2 个 ECS 服务以 EC2 启动类型和桥接网络模式运行。每个服务都有 1 个任务,并且两个任务都在同一个 EC2 容器主机上运行。
在同一 ECS 主机上,第一个任务中的 API 容器正在尝试通过主机名和端口号(例如:http://abc-def:5000)与第二个任务中的数据库容器通信。有什么方法可以做到这一点?
【问题讨论】:
标签:
amazon-web-services
docker
amazon-ecs
service-discovery
【解决方案1】:
您的选择是:
-
将所有内容放在一个任务定义中。然后您可以使用link 属性使容器A 与容器B 进行通信,就像B:port 一样。请注意,link 不支持循环关系,这意味着如果 A 可以与 B 对话,B 也不能这样做。
-
切换到网络模式host。这样你就可以和localhost交流了。
-
使用 Consul 或 AWS ECS 服务发现等工具进行适当的服务发现。我对后者没有经验。见here。
-
将您的任务置于 ALB 之后,并使用此负载均衡器在任务之间进行通信。