AWS ECS Fargate 和端口映射

Posted

技术标签:

【中文标题】AWS ECS Fargate 和端口映射【英文标题】:AWS ECS Fargate and port mapping 【发布时间】:2018-06-15 18:46:53 【问题描述】:

我有两个容器,它们暴露同一个端口。我想在同一个任务中运行它们,因为它们是同一个系统的一部分。但我无法使用 Fargate 执行此操作,因为没有端口映射,并且主机端口应与 awsvpc 网络模式的容器端口相同(仅受 Fargate 支持)。

这是 Docker 的基本功能,奇怪的是 Fargate 似乎不支持它。真的没有办法做到这一点还是我错过了什么?

【问题讨论】:

您是否尝试联系亚马逊支持?你找到解决方案了吗? 不,我没有解决方案,也没有亚马逊支持。 @AntonZherdev 您找到解决此问题的方法了吗?我也是这种情况,找不到合适的解决方案。谢谢! @StéphanePéchard 不。我认为它不起作用。 你能解释一下为什么容器不能使用不同的端口运行吗?如果它们是同一任务的一部分,在 Fargate 上,它们将被视为在同一台机器上运行,或者至少是在同一个“本地主机”网络上运行,该网络应该是超快的。如果它们需要一起运行,那么不同的端口似乎是最简单的解决方案。否则,他们需要完成两项任务,并且您需要额外的发现设置等。 【参考方案1】:

对您的服务使用应用程序负载平衡器,并在目标组中设置您的自定义端口,并且主机端口应设置为与容器端口相同。这是我们经过测试的解决方案。

【讨论】:

如何在一个系统中运行两个使用相同端口的容器? 我有不同的容器使用同一个端口。我想在一个系统中启动它们,因为它们将相互交互并且不能单独存在。我不需要负载均衡器,因为我只需要每个容器的一个实例。 这为我节省了无数时间。谢谢!【参考方案2】:

您将不得不切换到基于 ec2 的 ecs 而不是 Fargate。您还可以在不同的端口上运行并使用 Fargate 中的服务发现功能相互通信。可能需要更改代码。

【讨论】:

以上是关于AWS ECS Fargate 和端口映射的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 AWS ECS EC2 实例中的端口

如何让 AWS ECS 自动将我的容器的端口映射到主机(EC2)

AWS ECS Fargate 模式 - 自动扩展

AWS ECS Fargate ALB 错误(请求超时)

CDK Fargate:将子域映射到不同的容器端口

AWS 目标组在同一个 ECS 任务上注册 2 个目标?