在 none 响应系统的情况下自动 Start/Stop AWS 实例

Auto Start/Stop of AWS instance in case of a none responsive system

有时我遇到 AWS 实例正在使用 100% 的 CPU 资源 - 因为硬件和软件虚拟化之间存在冲突。更确切地说,是名为 "System interrupts" 的进程消耗了所有 CPU 资源。这可以通过停止实例简单地解决,等待一段时间然后再次启动实例(因此它将在其他硬件上启动 - 只是重新启动是行不通的)。

我现在的问题是:停止 AWS 实例并在 1 分钟后当系统 none 响应时自动重新启动实例的最简单方法是什么?这能以某种方式在 AWS 生态系统本身内完成吗?

不太简单的方法是让另一个系统对服务器执行 ping 操作,如果它没有响应 - 那么我可以执行包含所需操作的自定义脚本。但我希望有更简单的解决方案?

当实例在 CPU 中达到特定百分比时创建 CloudWatch 警报。

在 AlertState 期间添加触发器以触发 Lambda。 Lambda 将调用 AWS CLI 以 运行 StopInstance 方法,然后休眠 1 分钟,然后 运行 StartInstance 方法。

示例函数:https://www.howtoforge.com/aws-lambda-function-to-start-and-stop-ec2-instance/

您可以在 Amazon EC2 管理控制台中创建 Amazon CloudWatch 警报

  • Select EC2 实例
  • 转到监控选项卡
  • 单击创建警报
  • 配置Take the action: Reboot this instance

这将尝试正常重启操作系统,但如有必要将强制重启。

您可以将警报配置为在给定的 100% 时间段后触发 CPU。请注意,当实例只是在做 "real" 工作时,它不会触发。您可能需要调整闹钟设置才能恰到好处。