AWS负载均衡器和维护页面

Vla*_*kiy 17 load-balancing amazon-ec2 amazon-web-services maintenance-mode

我正在使用AWS Load Balancer和3台EC2服务器,而我正在尝试在网站维护时提供维护页面.

此页面需要返回503 HTTP代码,因为它是维护模式的正确代码,可以防止SEO的可能问题.

当我从任何服务器返回503代码时,Load Balancer将其设置为"Not In Service",当所有服务器返回503时,网站返回一个空白页面(因为所有服务器都断开连接).

我的问题是:

1)如果没有健康的服务器,有没有办法为负载均衡器的访问者提供带有消息的自定义静态页面?

2)或者如何配置Load Balancer的健康检查它不会将503视为将服务器标记为"不健康"的原因?

谢谢!

jar*_*mod 12

你可以在app服务器中实现一个额外的路由,比方说/ hcm(用于健康检查维护),总是响应200 OK.在维护时,您以编程方式修改ELB运行状况检查以使用/ hcm目标,该目标返回200 OK而不是/或/index.html,这两者都返回503 Service Unavailable.退出维护时还原这些更改.


小智 12

我一直在寻找一种快速的方法来做到这一点。我们需要在数据库升级期间向全世界返回 503 错误,但将开发人员的一些 IP 列入白名单,以便他们可以在重新向公众开放之前对其进行测试。

找到了一个单一的解决方案:转到 EC2 中的 Loader Balancer 并选择您想要定位的负载均衡器。在下面,您应该会看到 Listeners。单击侦听器,然后编辑规则。创建这样的规则:

我的规则设置 现在每个人都会得到一个漂亮的维护页面,返回一个 503 错误代码,并且第一条规则中只有两个 IP 地址能够浏览到该站点。顺序很重要,两个 IP 例外在最前面,然后在列表中。默认情况下,最后一项始终存在。

应用程序负载均衡器的侦听器规则:https : //docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-update-rules.html

  • 对我来说,这比从 EC2 处理它更好。我希望腾出双手来进行**任何**类型的升级,包括 DB/EC2 等。感谢分享。 (2认同)

小智 5

可能不满足您的 503 要求,但使用 s3 和 dns 故障转移是一个不错的选择:https : //aws.amazon.com/blogs/aws/create-a-backup-website-using-route-53-dns-failover -and-s3-website-hosting/