【问题标题】:How do I associate an Elastic IP with a Fargate container?如何将弹性 IP 与 Fargate 容器关联?
【发布时间】:2018-06-02 07:19:41
【问题描述】:

我正在探索为我的 ECS 容器使用新的 Fargate 选项。一个限制是,运行中的任务必须始终可以通过相同的公共 IP 地址访问。

我的第一个想法是分配一个弹性 IP,但我不知道将它与什么相关联。似乎弹性 IP 可以与实例(与 Fargate 无关)或网络接口相关联。但是,如果我将它与 ENI 关联,我看不到如何确保我的任务的容器具有该网络接口。创建服务时,我看到我可以将它放在 VPC 中,但仅此而已。

从实验中,如果我终止一个任务以便服务重新启动一个新任务,或者如果我更新服务以运行一个新的任务修订版 - 开始运行新任务的容器每次都会有一个新的 ENI。

是否有某种方法可以确保给定服务具有相同的公共 IP 地址,即使其任务被终止并重新启动?

【问题讨论】:

  • 你不能为此使用负载均衡器吗?这样,您正在运行的任务将始终在负载均衡器地址上可用,并且即使在容器或底层主机重新启动后也不会更改。
  • 你明白了吗?如果负载均衡器重新启动,IP 会有所不同。能够将主机名分配给弹性 ip 会很好。如果有任何东西重新启动,只需重新分配弹性 IP。
  • AWS支持的负载均衡器只做TCP,如果你的服务是UDP就不行

标签: amazon-web-services aws-fargate


【解决方案1】:

实际上,您可以使用网络负载均衡器来做到这一点。它是一种特殊类型的负载均衡器,可以添加弹性IP。 这个指令真的很有帮助 https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html

【讨论】:

  • 虽然网络负载均衡器与将弹性 IP 与任务直接关联几乎不是一回事,但它仍然适用于许多用例。网络负载均衡器允许使用静态 IP 地址的负载均衡器,对实际的 Fargate 任务执行 DNAT。对于使用 TCP 的入站连接,这几乎是解决方案。不要对这个答案投反对票。
  • 谢谢!我真的使用了这种技术,而且效果很好。另一种选择是创建 ec2 实例并配置 Nginx,它将请求重定向到指向 Fargate 任务的 ELB
  • 值得注意的是,LB 不是免费的。如果您运行的是小型钻机,则 LB 可能比其他服务成本更高。请务必查看价格。
  • 目前我们正在使用 nginx 将请求重定向到 fargate 服务。要为服务提供一些静态名称,请使用 Fargate 服务发现。是的,如果你有很多小服务,拥有单独的 LB 会花费你很多(LB 15 美元)。
  • 可悲可悲的是它可以分配自己的IP地址,却无法通过ENI给它自己的IP地址。 Fargate 在 IP 地址分配方面具有更大用途的潜力。当我的应用程序中需要大量 ALB 时,每个任务的 ALB 成本太高。否则,您将重新启动 EC2 以供 ECS 管理。
【解决方案2】:

Fargate 当前不支持 ENI 分配,因此无法将弹性 IP 与 Fargate 任务定义关联。

在 Fargate 中使用静态 IP 地址的唯一方法是通过具有别名的 Application Load Balancer。

【讨论】:

  • AWS forum post 确认这些答案
  • 具有别名的 ALB 不是静态 IP 地址。下面的答案是更正确的答案。
猜你喜欢
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 2018-09-14
相关资源
最近更新 更多