在 EC2 实例停机期间显示维护页面的最简单方法

在 EC2 实例停机期间显示维护页面的最简单方法

我需要进行一些维护,这涉及我的 EC2 生产服务器的停机时间。同时,我想提供一些用户友好的维护页面。

我能想到的最简单的解决方案就是获取一些简单的微型实例 AMI,在那里设置静态页面,并在维护期间将我们的公共弹性 IP 关联到该实例。

问题是:

(1) 有没有更简单的方法(即从 s3 提供一些静态页面,而不需要 EC2 实例)?[请注意,我不希望有任何 DNS 缓存延迟,我更喜欢像使用 ec2-associate-address 那样立即切换]

(2) 如果没有更简单的方法,那么从哪个 AMI 开始(以便它可以在微实例上运行并且最好从 EBS 启动,这样就可以轻松持久)?


更新:

为了记录,以下是我使用的解决方案:

  1. 从找到的任何 ami 创建微实例http://alestic.com/
  2. 安装 nginx:sudo aptitude install nginx
  3. 现在你可以使用以下方式启动/停止/重新启动它sudo /etc/init.d/nginx start/stop/restart
  4. 编辑 Nginx 配置文件 sudo pico /etc/nginx/nginx.conf
  5. 在该include /etc/...行中粘贴以下内容:
server {   root        /var/www/nginx-default;

  location / {
       if (-f $document_root/error503.html) {
            return 503;
       }   }

 # error 503 redirect to error503.html
    error_page 503 @maintenance;
    location @maintenance {
          rewrite ^(.*)$ /error503.html break;
    }
  1. 创建页面(文件夹应该已经存在)/var/www/nginx-default/error503.html并删除/var/www/nginx-default/index.html
  2. 启动/重新启动 Nginxsudo /etc/init.d/nginx start
  3. 现在您已完成,您可以使用它ec2-associate-address YOUR-IP -i YOUR-INSTANCE-ID在生产服务器和此维护页面服务实例之间映射您的公共 IP。

答案1

唯一最快的方法就是您已经提到的方法,即创建一个小型 AMI 并在其上托管一个静态维护页面,方法是将弹性 IP 附加到它。对于在这种情况下应该使用哪种 AMI,没有硬性规定。Debian/RHEL/Ubuntu 的任何微型实例都可以正常工作。

答案2

我猜想,如果您已经有第二个 Amazon EC2 实例,则只需重定向附加到目标实例的 Elastic IP,并将其附加到第二个 VM 即可,仅用于停机时间。 带有重定向规则的新 vhost 可以捕获对此维护页面的所有请求,这应该可以解决问题。

相关内容