据我所知,我们处于上述答案不适用或不理想的情况。
我们有一个在 64 位 Amazon Linux/2.9.0 上运行 Puma 和 Ruby 2.3 的 Rails 应用程序,它似乎带有(经典)ELB。
所以 ALB 503 处理不是一种选择。
我们还有各种硬件客户端,我不相信它们总是尊重 DNS TTL,所以 Route53 是有风险的。
似乎运行良好的是平台附带的 nginx 上的辅助端口。
我将此添加为.ebextensions/maintenance.config
files:
"/etc/nginx/conf.d/maintenance.conf":
content: |
server {
listen 81;
server_name _ localhost;
root /var/app/current/public/maintenance;
}
container_commands:
restart_nginx:
command: service nginx restart
并将https://gist.github.com/pitch-gist/2999707的副本放入public/maintenance/index.html
现在要设置维护,我只需将我的 ELB 侦听器切换为指向端口 81 而不是默认的 80。没有额外的实例、s3 存储桶或等待客户端访问新的 DNS。
beantalk(可能主要等待后端的云形成)只需要大约 15 秒左右即可申请。