ECS 是不是支持 AWS NLB?

Posted

技术标签:

【中文标题】ECS 是不是支持 AWS NLB?【英文标题】:Is AWS NLB supported for ECS?ECS 是否支持 AWS NLB? 【发布时间】:2020-05-21 22:52:45 【问题描述】:

问题

具有动态端口映射的 ECS 是否支持 NLB?

背景

似乎有人尝试将 NLB 与 ECS 一起使用,但运行状况检查出现问题。

Network Load Balancer for inter-service communication Health check interval for Network Load Balancer Target Group NLB Target Group health checks are out of control

在与 AWS 交谈时,他们承认 NLB 的健康检查间隔文档并不准确,因为 NLB 有多个实例分别发送健康检查,因此 ECS 任务进行健康检查的时间间隔不是根据 HealthCheckIntervalSeconds。

ECS 任务页面还专门说明了 ALB 使用动态端口映射。

因此,我认为 ECS 不支持 NLB?如果有说明 ECS 支持 NLB 的文档,请提出建议。


更新

Why are properly functioning Amazon ECS tasks registered to ELB marked as unhealthy and replaced?

Elastic Load Balancing 反复将正常运行的 Amazon Elastic Container Service (Amazon ECS) 任务标记为不正常。这些错误标记的任务将停止,并启动新任务以替换它们。我该如何解决这个问题?

change the Health check grace period to an appropriate time period for your service

【问题讨论】:

所以docs.aws.amazon.com/AmazonECS/latest/developerguide/… 不算数? @MichaelHausenblas,感谢您的指出。我认为文档可能需要更新有关由于 NLB 的健康检查失败而导致 ECS 任务失败的健康检查间隔。据我了解,除非将来自 NLB 实例的健康检查修改为同步,以便 ECS 任务在一个时间间隔内仅接收 1 次健康检查,否则 ECS 任务可以在一个时间间隔内获得多次检查。 例如,一个ECS任务可能需要70秒才能启动,如果可以接受3次90秒的检查,则认为它是健康的。指定失败标准 30 秒间隔的 3 次检查可能会失败,因为任务可以在 30 秒内从 NLB 实例背靠背地获得 3 次检查。 谢谢@mon,我会确保将此反馈发送到正确的位置。 【参考方案1】:

网络负载平衡器在传输层 (TCP/SSL) 做出路由决策。它每秒可以处理数百万个请求。负载均衡器收到连接后,会使用流哈希路由算法从目标组中选择一个目标作为默认规则。它尝试在侦听器配置中指定的端口上打开到选定目标的 TCP 连接。它转发请求而不修改标头。网络负载均衡器支持动态主机端口映射。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb

【讨论】:

以上是关于ECS 是不是支持 AWS NLB?的主要内容,如果未能解决你的问题,请参考以下文章

为 AWS EB 应用程序的网络负载均衡器 (NLB) 使用静态 IP?

AWS NLB 到 ALB IP 白名单

AWS ECS Fargate 和端口映射

Amazon ECS LogConfiguration返回“不支持的属性logConfiguration”

Docker 在 AWS ECS 中运行

在 Terraform 的 aws_ecs_task_definition 资源中设置 ulimit 堆栈大小