ECS Fargate + 网络负载均衡器健康检查

ECS Fargate + Network Load Balancer Healthcheck

我遇到以下设置问题:

API 网关 -> VPC Link -> 私有 NLB -> 目标组 -> AWS ECS Fargate

如果我在指定端点上将 NLB 的健康检查设置为 TCP/HTTP,则该端点会因内部请求而被重创(没有请求通过 API 网关,我检查过):

我对这种行为的问题,除了健康端点被我自己的架构垃圾邮件外,是应用程序的功能受到影响(我一直收到缓慢的响应,四分之一的请求 API)。

我尝试将健康检查的行为修改为仅 TCP,响应速度同样缓慢。

我尝试暂时切换到 public ALB,我正在进行双重健康检查,间隔 30 秒,但我的应用程序平均响应时间为 100 毫秒。

所以,作为我所说的 "double health-checks" 的例子:

运行状况检查 1.1 在 00:00:00

运行状况检查 2.1 在 00:00:10

运行状况检查 1.2 在 00:00:30

运行状况检查 2.2 在 00:00:40

有什么想法吗?

TL/DR;

启用 "Cross-Zone Load Balancing" NLB 标志。

问题是 "cross-availability zone" 未签出。 似乎当一个请求被一个 NLB 节点处理时,该节点位于与它试图重定向的不同的 AZ 中,它会尝试在 AZ 中内部解析 IP,如果失败,它将请求重定向到适当 AZ 中的另一个 NLB 节点,它将能够这样做,从而达到目标。