系统无响应时自动启动/停止AWS实例

时间:2020-05-05 10:11:11

标签: amazon-web-services amazon-ec2 interrupt

有时候,我遇到一个AWS实例使用100%的CPU资源的情况-由于硬件和软件虚拟化之间存在冲突。更确切地说,是称为“系统中断”的过程,它消耗所有CPU资源。只需停止实例,等待一会儿然后再次启动实例即可解决此问题(因此它将在其他硬件上启动-仅重新启动无法正常工作)。

我的问题现在是:停止AWS实例的最简单方法是什么?在系统无响应时1分钟后自动重新启动实例?可以在AWS生态系统本身中以某种方式完成此操作吗?

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

  • 选择EC2实例
  • 转到监控标签
  • 点击创建警报
  • 配置Take the action: Reboot this instance

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

您可以将警报配置为在给定的100%CPU时间后触发。请注意,当实例只是在执行“真实”工作时,它不会触发。您可能需要调整闹钟设置才能使其正确设置。