当 CPU 低于某个水平时停止(不终止)EC2 实例
Posted
技术标签:
【中文标题】当 CPU 低于某个水平时停止(不终止)EC2 实例【英文标题】:Stop (not terminate) an EC2 Instance when CPU drops below certain level 【发布时间】:2015-12-20 19:35:42 【问题描述】:我有两台服务器(上面有我的应用程序)已经在运行......从 Ubuntu AMI 创建。 在使用自动缩放时,它使用 AMI 启动新实例。
我可以使用自动缩放来仅停止实例吗(不终止;这样我以后启动服务器时就不需要 AMI);然后在 CPU 增加到 x% 以上时启动实例(我已停止的旧实例)!
如果不是自动缩放;我也可以接受任何其他解决方案。我可以使用 Cloudwatch 停止实例,但如何重新启动它?
【问题讨论】:
【参考方案1】:我认为您可以通过以下方式做到这一点:
CloudWatch 指标:记录 CPU 使用率 CloudWatch 警报:当 CPU 指标高于/低于时发出警报 一些门槛 SNS 主题:触发 CloudWatch 警报时发送通知 Lambda 函数:由 SNS 调用以停止/启动相关 EC2 实例参见与Invoking Lambda from SNS相似的Scaling ECS文章。
【讨论】:
这个答案比我的好。 是的,这是正确的答案。它比我有更多的细节。【参考方案2】:目前无法使用 AutoScaling 停止实例。 AutoScaling 只能根据 CloudWatch 警报等启动新实例和终止实例。
要做您想做的事,您需要停止使用 AutoScaling 并使用另一个“工作”EC2 实例来替换 AutoScaling。该“工作”实例需要 24/7 全天候运行,它将监控您的其他 EC2 实例的 CPU 并适当地启动和停止它们。
【讨论】:
【参考方案3】:AutoScaling 无法做到这一点。您可以禁用 AutoScaling 并让 CloudWatch 触发一些 Lambda 函数来启动/停止您的实例。
【讨论】:
通过 cloudwatch 我们可以停止实例.. 但是我们如何通过 Cloudwatch 启动实例呢? @Deepak 你读过我说你会使用 Lambda 的部分吗?以上是关于当 CPU 低于某个水平时停止(不终止)EC2 实例的主要内容,如果未能解决你的问题,请参考以下文章
如何实现并行,以这样的方式延迟,当输出低于阈值时并行化 for 循环停止?