Amazon EC2通过正常关机自动缩小?

dan*_*anw 32 amazon-ec2 terminate autoscaling

我们正在考虑使用EC2自动缩放来处理负载峰值.在我们的示例中,我们希望根据SQS队列大小扩展实例,然后缩小规模,并使队列大小恢复控制.每个SQS消息都定义了一个可能长时间运行的作业(有时每个消息最多20分钟),必须在终止实例之前完成.

我们的软件可以优雅地处理关机过程,因此sudo service ourapp stop在返回之前,发布将等待应用程序完成.

我的问题; 当自动缩放开始按比例缩小时,它会发出终止(显然就像敲击电源按钮),是否会等待我们的应用程序在实例"关机"之前完全退出?

https://forums.aws.amazon.com/message.jspa?messageID=180674 < - 我发现的那些东西似乎暗示它没有

Ian*_*son 25

在大多数较新的AMI的,机器被赋予相当于一个"停止"(或"shutdown -h now中"命令,以使服务正常关闭.只要你的程序与启动/关机脚本很好的发挥,你应该没关系 - 但是,如果您的程序需要超过20秒才能终止,您可能会遇到亚马逊将完全杀死该实例.

亚马逊关于其自动扩展的文档没有指定终止过程,但是,AWS的ec2 文档通常包含终止过程中发生的事情 - 机器被给予'shutdown'命令,以及默认的关闭时间在大多数系统上是30秒.


dan*_*anw 23

2014年年中,AWS推出了"生命周期钩子",可以完全控制终止过程.

我们的高水平缩小规模流程是:

  • Auto Scaling使用实例ID向SQS队列发送消息
  • 控制器应用程序接收消息
  • 控制器应用程序发出"停止实例"请求
  • 控制器应用程序在实例停止时重新排队SQS消息
  • 控制器应用程序再次获取消息,检查实例是否已停止(或重新排队消息以便稍后再次尝试)
  • 控制器应用程序通过终止将Auto Scaling通知为"PROCEED"
  • Controller app从SQS队列中删除消息

更多细节:http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html

  • 哇,确实很酷 - AWS在1000多年前引入了生命周期钩子,其他人仍然忙于发现美国=) (5认同)
  • @sebastian我将日期定为1014年至2014年,所以您的评论不再有意义。但这很有趣。 (3认同)