当 EC2 在 http 上没有响应时,如何自动停止和启动 EC2

How can I stop and start EC2 automatically, when it not responding on http

我有一个带有 HTTP 服务器的 EC2;我想在 2 分钟后它在 HTTP 端口上没有响应时自动停止并启动它。

在不使用规模组和弹性负载均衡器 (ELB) 的情况下,在 AWS 上实施的最佳方式是什么。

如前所述,我不需要创建新实例,只需停止并启动即可。

  • 首先考虑在 monit 或其他监控服务的帮助下重新启动服务而不是停止和启动实例,因为重新启动实例需要时间而不是一个好主意。

  • 但是如果担心实例宕机的情况,可以配置自动修复(https://aws.amazon.com/blogs/aws/new-auto-recovery-for-amazon-ec2/)。

  • 另一种自定义方法是,在实例内部使用 curl 进行简单的问候检查并存储响应日志并将其安排在 cron 中,将日志同步到 cloudwatch,然后在 cloudwatch 中您可以绘制使用日志度量,并配置警报如果度量计数低于阈值 2 分钟,您可以编写 lambda 函数来重启实例,并将 lambda 关联到警报。(https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/)。既然你已经提到你只有一个实例,这种方法就可以工作,如果你有多个实例,你需要处理命名空间,但是再次重启实例不是一个好主意。

我正在使用 Route53 healthcheck,当它被触发时,它会向 SNS 主题发送通知,触发 Lambda 函数来重启服务器。