我们正在考虑使用EC2自动缩放来处理负载峰值。在我们的示例中,我们希望根据SQS队列大小扩展实例,然后缩小规模,并使队列大小恢复控制。每个SQS消息都定义了一个可能长时间运行的作业(有时消息最多可达20分钟),必须在终止实例之前完成。
我们的软件可以优雅地处理关机过程,因此在返回之前发出sudo service ourapp stop
将等待应用完成。
我的问题;当自动缩放开始按比例缩小时,它会发出终止(这显然就像敲击电源按钮),是否会等待我们的应用程序在实例“关机”之前完全退出?
https://forums.aws.amazon.com/message.jspa?messageID=180674< - 我发现的那些东西似乎暗示它没有
答案 0 :(得分:24)
在大多数较新的AMI上,机器被赋予相当于'halt'(或'shutdown -h now'命令的命令,以便正常关闭服务。只要你的程序与启动/关闭脚本很好地配合使用,你应该没问题 - 但是,如果你的程序需要超过20秒才能终止,你可能会遇到亚马逊将完全杀死该实例。
亚马逊关于其自动扩展的documentation没有指定终止过程,但是,AWS的documentation通常包含关于终止过程中发生的事情 - 机器已经给出'shutdown'命令,大多数系统的默认关机时间为30秒。
答案 1 :(得分:22)
2014年中期,AWS推出了“生命周期挂钩”,可以完全控制终止流程。
我们的高水平缩小规模流程是:
更多详情:http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html
答案 2 :(得分:3)
在autoscaling中使用replaceunhealty选项。
参阅: http://alestic.com/2011/11/ec2-schedule-instance
特别参见this comment。