我们正在使用EC2自动缩放以应对负荷高峰。 在我们的例子中,我们想扩大基于一个SQS队列大小实例,然后打倒队列大小规模得到控制回来。 每个SQS消息定义一个潜在的长时间运行的工作(有时高达每一个用于消息20分钟为单位)必须完成实例可以被终止之前。
我们的软件处理关机过程正常,所以发行sudo service ourapp stop
将等待应用程序完成后才返回。
我的问题; 自动缩放开始时缩小它发出终止(这显然是像打了电源按钮),将它等待我们的应用程序完全实例之前退出是“关机”?
https://forums.aws.amazon.com/message.jspa?messageID=180674 < -这和其他的东西,我发现似乎表明,它不
在大多数较新的AMI的,机器被赋予相当于一个“停止”(或“shutdown -h now中”命令,以使服务正常关闭。只要你的程序与启动/关机脚本很好的发挥,你应该没事的 - 但是,如果你的程序需要超过20秒终止,您可能会遇到,亚马逊将彻底杀灭实例。
亚马逊的文档有关于他们的自动缩放不指定进程终止,但是,AWS的文档在一般EC2不包含关于在端接过程会发生什么-那机器被赋予了“关机”命令,默认的关机时间在大多数系统中是30秒。
在2014年中期引入AWS“生命周期钩”,其允许终止过程的完全控制。
我们的高级别向下规模过程是:
- 自动缩放将消息发送到一个SQS队列对实例ID
- 控制器应用拾取消息
- 控制器应用程序发出“停止实例的要求
- 控制器应用程序重新排队的SQS消息,而实例停止
- 如果该实例已停止(或重新队列消息稍后重试)控制器应用程序再次拾取消息,支票
- 控制器应用程序通知自动缩放到“PROCEED”与终止
- 控制器应用程序将删除从SQS队列消息
更多细节: http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html
使用自动缩放replaceunhealty选项。
参考: http://alestic.com/2011/11/ec2-schedule-instance
特别是看到此评论 。