amazon-web-services - 使用 UDP ECS 服务对 NetworkLoadBalancer 进行健康检查
问题描述
我正在尝试部署仅使用 UDP 端口的 ECS 服务。通过 NetworkLoadBalancers 添加了对 UDP 负载平衡的支持,因此我部署了我的服务,允许为我的任务分配动态主机端口,并使用适当的侦听器和目标组设置 NLB。
我遇到的问题是 NLB 显然必须进行健康检查,并且必须基于 TCP。对于运行状况检查端口,您可以保留默认的“目标”端口(它适用于动态主机端口分配),或者您可以指定一个端口。我不能做的是为 TCP 公开的端口与我的负载均衡器目标 UDP 端口不同。我可以让我的容器在同一个端口上同时监听用于生产的 UDP 和用于运行状况检查的 TCP,但任务定义似乎不允许这样做,即使 Docker 支持它也很好。
这似乎使 UDP NLB 对 ECS 服务毫无用处,除非我遗漏了什么?我想出的唯一替代方法是使用静态配置的主机端口,这样我就可以在受控主机端口上为 TCP 公开第二个端口,并将其作为 NLB 运行状况检查的目标。这样做的问题是,由于无法在一个实例上运行多个任务,我们现在已经失去了 ECS 的所有可扩展性优势。
解决方案
推荐阅读
- html - Tweeter 与自动化代码不同的 Twitter 组件中的 data-testid 是什么?
- r - 将 R 中的大型数据集与不同的列合并
- python - 0 轴是使用 pcolormesh 和 matplotlib.pyplot.subplots 生成的
- casting - 使用 rdrand 指令生成给定范围的随机数
- graphql - Graphql Apollo Federation - 基于实现服务解析计算域
- javascript - p5.play 不会在 repl.it 上运行
- typescript - 将 const 导出为超类型
- ruby-on-rails - 安装 rails 时出错:找不到“ruby/config.h”文件(Catalina 10.15.7)
- video - 达芬奇解析找不到任何支持 openCL 的 GPU
- c# - C# LINQ - 仅当它不为空时才包含 Where 条件