ECS 根据每个目标的请求计数在 NLB 后面自动缩放

ECS autoscaling behind NLB based on request count per target

我们目前在 ALB 后面有 ECS 服务。我们的自动缩放基于 RequestCountPerTarget 指标 (https://aws.amazon.com/about-aws/whats-new/2017/07/application-load-balancer-adds-support-for-new-requestcountpertarget-cloudwatch-metric/)

由于我们需要将服务公开为 VPC 端点,我们正在考虑迁移到 NLB 而不是 ALB。使用 NLB 时是否可以根据每个目标的请求计数自动缩放?

据我所知,根据 cloudwatch 文档:https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-cloudwatch-metrics.html 没有公开此类指标,但我可能遗漏了一些东西。

据我所知,没有 NLB 的请求计数这样的指标。如果您想了解负载均衡器,您可以使用 ActiveFlowCount 或 ProcessedBytes activity,但这并不完全相同。

出于其他原因,我们在 ALB 之前使用了 NLB(不使用容器),我可以告诉您,ActiveFlowCount 和 RequestCounts 之间存在巨大差异。

要根据请求计数进行扩展,您可以将 NLB 设置在 ALB 前面,但您必须处理通过 Lambda 刷新的目标 IP(因为 ALB IP 不是静态的)并且你会有额外的费用。您在 AWS 博客上有关于如何执行此操作的完整教程:Using static IP addresses for Application Load Balancers

我猜你有充分的理由不扩展你的后端容器聚合资源指标,但在我看来你应该根据你的目标组指标自动扩展(你可以通过通过 AWS API 从您的容器发送自定义指标)。这样,您只会在有效需要更多资源时才进行扩展。

最后,我不确定这是否对您有用,但根据文档,您可以通过 AWS PrivateLink 为您的 ECS 设置 VPC 端点:Amazon ECS Interface VPC Endpoints