首页 > 解决方案 > 在网站不可用时重启 EC2 实例

问题描述

我有一个托管在 EC2 服务器上的网站。如果网站在特定时间范围内(比如 60 秒)不可用,我想监控网站端点并重新启动 EC2 实例。我在 AWS 中使用了哪些工具以及如何实现这一点?

标签: amazon-web-servicesamazon-ec2

解决方案


这不是推荐的方法。

首先,如果网站不可用,您可能需要调查原因,而不仅仅是重新启动实例。您的目标应该是通过消除问题的根本原因来运行稳定的系统,而不是通过一直重新启动来忽略问题。

推荐的设计是在高可用配置中运行:

  • 在至少两个可用区的至少两台服务器上运行的应用程序(以防 AZ 发生故障)。这不一定更昂贵,因为每台服务器都可以小于单个大型服务器。
  • 实例前面的负载均衡器,将流量分配给实例。负载均衡器还执行持续的健康检查,并停止向未通过健康检查的服务器发送请求
  • 一个Auto Scaling 组,可以终止运行状况不佳的实例并自动启动替换服务器。如果可用区失败,这也很有效。

在此设计中,将终止(停止和销毁)不健康的实例,并使用预定义的磁盘映像和启动脚本创建一个新实例。或者,您可以选择将不良实例移出 Auto Scaling 组以调查问题,并启动一个新实例来代替它。

如果您的应用程序需要数据库,则数据库应位于实例外部,以便所有实例都可以连接到数据库,并且替换应用程序实例不会导致任何数据丢失。

至于在服务器上发现问题的速度,负载均衡器可以每隔几秒执行一次检查。另一方面,Amazon CloudWatch 至少需要一分钟来检测问题(可能需要更长的时间,因为指标是在一段时间内计算的,而不是“现在”指标)。


推荐阅读