目前,我们在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,但这并不完全相同。
由于其他原因,我们在ALB之前使用NLB(不适用于容器),我可以告诉您ActiveFlowCount和RequestCounts之间存在巨大差异。
要根据请求计数进行扩展,您可以将NLB设置为位于ALB的前面,但您必须处理通过Lambda刷新的目标IP(因为ALB IP不是静态的),额外费用。您可以在AWS博客上找到有关如何执行此操作的完整教程:Using static IP addresses for Application Load Balancers
我想您有充分的理由不扩展后端容器聚合的资源指标,但我认为您应该根据目标组指标(您可以通过发送自定义指标进行任意调整)来自动扩展通过AWS API从容器中删除)。这样,只有在有效地需要更多资源时,您才可以扩展。
最后,我不确定这是否对您有用,但根据文档,您可以通过AWS PrivateLink为[ECS]设置ECS的VPC终端节点:Amazon ECS Interface VPC Endpoints