【问题标题】:Amazon EC2 autoscaling down with graceful shutdown?Amazon EC2 通过正常关闭自动缩减?
【发布时间】:2012-06-27 20:40:40
【问题描述】:

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

我们的软件会优雅地处理关闭过程,因此发出sudo service ourapp stop 将等待应用完成后再返回。

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

https://forums.aws.amazon.com/message.jspa?messageID=180674

【问题讨论】:

    标签: amazon-ec2 terminate autoscaling


    【解决方案1】:

    在大多数较新的 AMI 上,机器被赋予相当于“停止”(或“关闭 -h now”)的命令,以便正常关闭服务。只要您的程序与启动/关闭脚本配合得很好,你应该没问题 - 但是,如果你的程序需要超过 20 秒才能终止,你可能会遇到亚马逊将完全杀死实例。

    Amazon 的 documentation 关于其自动缩放并没有指定终止过程,但是 AWS 的 ec2 的 documentation 通常确实包含终止过程中发生的情况——机器被给予“关闭”命令,大多数系统的默认关机时间是 30 秒。

    【讨论】:

    • 感谢伊恩的回答。看起来我们可以使用自动缩放来增加容量但不能删除容量......
    【解决方案2】:

    2014 年年中,AWS 引入了“生命周期挂钩”,允许完全控制终止过程。

    我们的高级缩减流程是:

    • Auto Scaling 向具有实例 ID 的 SQS 队列发送消息
    • 控制器应用接收消息
    • 控制器应用发出“停止实例”请求
    • 控制器应用程序在实例停止时重新排队 SQS 消息
    • 控制器应用再次获取消息,检查实例是否已停止(或重新排队消息以便稍后重试)
    • 控制器应用程序通知 Auto Scaling 终止后“继续”
    • 控制器应用从 SQS 队列中删除消息

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

    【讨论】:

    【解决方案3】:

    在自动缩放中使用 replaceunhealty 选项。

    参考: http://alestic.com/2011/11/ec2-schedule-instance

    具体见this comment

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 2018-01-29
      • 2014-07-05
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 2015-11-04
      相关资源
      最近更新 更多