我是 Amazon Ec2 的新手。如果我的网站由于 Amazon Ec2 故障而关闭,我希望显示停机通知页面。但我的疑问是,如果 Ec2 出现故障,那么我可能无法访问我的服务器。因此我该如何处理这种情况。我该如何通知通过浏览器访问的最终用户?
答案1
如果“EC2 已关闭”,则意味着您的服务器处于离线状态 - 这意味着它无法提供页面(当然,您也无法访问它)。
在这种情况下,为了向用户显示任何内容,您需要 EC2 实例外部的某些内容。例如,典型的设置可能在实例前面运行负载均衡器(例如 HAProxy)- 如果实例关闭,负载均衡器将提供错误页面。(前提是负载均衡器已启动)
理论上,所有 AWS 服务同时宕机的可能性不大(但没有什么是不可能的)。如果你在不同区域运行多个实例,那么即使其他实例宕机,其中一个实例也很有可能正常运行。
另一方面,还有另一种可能性,但它不会立即生效(这实际上是一个非常糟糕的解决方案)。可以重新映射 DNS 设置以从 S3 提供文件。不幸的是,对 DNS 的更改需要时间才能传播 - 因此在打开和关闭页面上都会有延迟。
(虽然看起来你可以拥有多个服务器和多个提供商,但物流会困难得多,如果这样的设置是必要的,那么人们必须质疑是否不需要更实质性的东西。你无法将同一个 IP 映射到不同提供商的服务器,因此你必须在 DNS 中实施更改 - 我认为在每个服务器上运行一个名称服务器,这样当一个服务器出现故障时,另一个服务器就可以接管 - 但这不是我的专业领域)。
因此,我的建议是,如果您使用的是 EC2,那么您必须希望所有 AWS 都不会瘫痪。以这样的方式设计您的设置,如果任何一台服务器发生故障,您可以保持在线(例如使用自动缩放,或者如果您运行多个服务器,可以使用 Corosync/Pacemaker 之类的东西);并确保您可以轻松地将另一台服务器在另一个位置联机(即使用弹性 IP 地址,保存一个可以“按原样”运行的 AMI,并拥有(定期)良好的备份(例如 EBS 快照),您可以从中创建 EBS 卷)。这样,如果您收到通知(例如使用监控服务,如 Pingdom 或 Cloudwatch 警报等)您的服务器已关闭(并且您尚未设置自动启动新服务器),您将在另一个区域启动 AMI 和关联的 EBS 卷,并重新映射弹性 IP 以重新联机。