【问题标题】:Dynamic auto scaling AWS based on messages in SQS基于 SQS 中的消息动态自动扩展 AWS
【发布时间】:2016-02-05 05:19:24
【问题描述】:

用例:

每天早上 SQS 都会被填充(只有一次,消息的数量可能会有很大差异),我想根据队列中的消息数量生成新实例。

例如:对于 200000 条消息 4 个实例,400000 个 8 个实例。

有什么方法可以实现吗?

【问题讨论】:

    标签: amazon-web-services amazon-sqs autoscaling


    【解决方案1】:
    1. 您可以在您的服务器上设置一个 cron 作业或一个时间触发的 Lambda 来查询 SQS 以找出队列中可见消息的数量。如果您使用 AWS CLI,您将运行 aws sqs get-queue-attributes 并读取 ApproximateNumberOfMessages 响应字段以获取队列中的项目数。然后,您将使用该数字来计算实例数并调用aws ec2 run-instances --count 4 加上其余参数。一切完成后,您将终止实例。

    2. 另一种方法是利用自动缩放和警报。您可以设置一个 ScaleOut 策略,将 1 个服务器添加到您的 AutoScaling 组,并在 SQS ApproximateNumberOfMessages >= 某个阈值时使用 CloudWatch 警报触发该策略。此选项不会等待早上处理队列,您会一直运行它。当 ApproximateNumberOfMessages

    【讨论】:

    • 谢谢 Max,会尽力回复您。在第二种方法中,缩放只会启动 1 次,对吗?它如何生成消息数量所需的实例?
    • 在你的扩展策略中设置一个冷却时间,例如。 10分钟。只要您的警报被触发(>= x 条消息),它就会继续尝试触发扩展策略,但冷却会确保它每 10 分钟最多只能使用一次服务器。如果在这 10 分钟内队列被清空,您的警报将转换为 OK 状态并停止调用扩展策略
    • 好的,谢谢,我们将采用第一种方法,因为我们对系统有了更多的控制权。
    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 2016-02-14
    • 2018-08-20
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 2022-09-29
    • 2013-02-06
    相关资源
    最近更新 更多