【问题标题】:AWS Classic Loadbalancer dynamic port mapping for ECS适用于 ECS 的 AWS Classic Loadbalancer 动态端口映射
【发布时间】:2018-02-15 02:54:13
【问题描述】:

目前,一台 CLB 无法对运行在同一个多节点 ECS 集群中的两个不同 TCP 服务进行负载均衡(由 AWS 支持确认)。

  • 有人知道解决办法吗?
  • AWS 中是否有人知道此功能(TCP 端口的动态端口映射)的大致日期(例如几周/月/年)?

上下文: 假设我有一个自定义 TCP 服务器。我想为每个客户运行这个服务器,每个客户一个容器实例,并将这些服务暴露给外界。 理想情况下,ECS 会为每个服务在 CLB 中添加一个 TCP 侦听器,将流量路由到特定的 EC2:port 实例(端口对无关紧要,重要的是它可以从外部访问)。

谢谢

【问题讨论】:

  • AWS 员工在这里。如果您需要了解特定服务的具体路线图请求,您应该与您的 AWS 账户的客户经理交谈,并根据相互 NDA 请求与 AWS 代表会面。否则,您应该观看 AWS 峰会和 AWS re:Invent 上发布的官方发布公告。
  • 谢谢 Nathan,虽然我还不是大客户,但我可能会尝试这样做,所以我不想强加 :) 您的技术支持已经非常高质量(实际上是我曾经做过的最好的技术支持看过)

标签: amazon-web-services docker elastic-load-balancer amazon-ecs


【解决方案1】:

您会很高兴知道刚刚发布了一种称为网络负载平衡器 (NLB) 的新型负载平衡器。这应该可以解决您的问题!

https://aws.amazon.com/blogs/aws/new-network-load-balancer-effortless-scaling-to-millions-of-requests-per-second/

【讨论】:

  • 是的,我很高兴 :),正是我需要的,今天早上在 HN 上看到了,我正要回答我自己的问题 :)
  • 报告了多个 NLB 运行状况检查问题,例如 forums.aws.amazon.com/message.jspa?messageID=805080。我想知道 NLB 实际上是一个解决方案(我无法让它在论坛主题中处理完全相同的问题)。
  • 如果您的容器由于健康检查失败(发生在我身上)而反复重启,请尝试为您的服务设置“HealthCheckGracePeriodSeconds: 600”。这告诉 ECS 在开始时忽略失败的运行状况检查。
【解决方案2】:

对于在动态端口上运行的服务之间的 TCP 通信,大多数 AWS 客户使用带有 linkerd、consul 或 weaveworks(提供覆盖网络)等解决方案的胖客户端负载平衡。您还可以使用基于 DNS 的服务发现。

这里有一个与 Amazon ECS 很好集成的服务发现机制列表:https://github.com/nathanpeck/awesome-ecs#service-discovery

【讨论】:

  • 感谢您的回复,不幸的是,这与服务间通信无关,我需要那些可以从外部访问的 tcp 端口。有点像当你在 CircleCI 中“使用 ssh 重建”时,你会得到一个可以从外部 ssh 进入的 ip/port。我需要同样的东西(虽然不是 ssh)
  • 在这种情况下,您将不得不使用带有静态分配端口的经典负载均衡器。截至目前(2017 年 9 月),目前无法通过经典负载均衡器获得动态端口。这确实限制了您只能在一个实例上运行一个特定类型的容器,但如果您有多种类型的容器,您仍然可以将它们组合在一个实例上。
猜你喜欢
  • 2018-04-08
  • 1970-01-01
  • 2020-03-21
  • 2022-07-27
  • 2018-06-15
  • 2020-08-08
  • 1970-01-01
  • 2020-01-03
  • 2021-02-14
相关资源
最近更新 更多