如何将目标跟踪策略与 SQS 队列一起使用?

How can you use target tracking policies with SQS queues?

我已经设置了一个应用程序,它使用基于步进和简单扩展策略的自动扩展架构,使用消息 SQS 队列而不是负载平衡器。示例:如果队列中的可用消息超过 10 条,则从我的启动模板启动一个新实例,总共 2 条。同样,如果它们少于 10 条,则简单扩展策略将 运行 实例的数量设置为等于 1.

我注意到目标跟踪缩放策略是简单和逐步缩放策略的更好替代方案。关于如何设置的任何 ideas/tips?

我不是 100% 确定您使用的是 EC2、Fargate 等,但这里有相当多的指南:https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html。有很多注意事项需要考虑,我建议在开始之前阅读所有内容。那里也有一些使用 CLI 的示例。

既然您想使用自定义指标,您应该看看 https://docs.aws.amazon.com/autoscaling/plans/APIReference/API_CustomizedScalingMetricSpecification.html,它允许您指定要从 cloudwatch 使用的指标。我不记得 QueueLength 是否是默认指标。如果不是,那么您将需要创建一个预定的 lambda 或类似的东西,以定期将其作为自定义指标进行读取。

就我个人而言,我有一个类似的用例,我有一些可扩展服务处理的 SQS 队列(大约 30 个)。我更喜欢使用 Lambda 来检查队列的长度并根据最大队列的长度进行缩放。我发现它很可靠,如果你已经设置好了,改变它可能不会有太大好处。此外,有时我们的服务需求激增,以至于如果我允许 AWS 根据需要进行扩展,数据库就会在负载下“崩溃”。确保在缩放配置中考虑到这一点。