Amazon web services AWS负载平衡器和维护页面

Amazon web services AWS负载平衡器和维护页面,amazon-web-services,amazon-ec2,load-balancing,maintenance-mode,Amazon Web Services,Amazon Ec2,Load Balancing,Maintenance Mode,我正在使用AWS负载平衡器和3台EC2服务器,我试图在站点维护时提供维护页面 这个页面需要返回503HTTP代码,因为它是维护模式的正确代码,可以防止SEO可能出现的问题 当我从我的任何服务器返回503代码时,负载均衡器使其“不在服务中”,当所有服务器返回503代码时,网站返回一个空白页(因为所有服务器都已断开连接) 我的问题是: 1) 如果没有正常的服务器,是否有任何方法可以为自定义静态页面提供来自负载平衡器的消息以供访问者使用 < P> 2)或如何配置负载均衡器的健康检查,将不会考虑503作

我正在使用AWS负载平衡器和3台EC2服务器,我试图在站点维护时提供维护页面

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

当我从我的任何服务器返回503代码时,负载均衡器使其“不在服务中”,当所有服务器返回503代码时,网站返回一个空白页(因为所有服务器都已断开连接)

我的问题是:

1) 如果没有正常的服务器,是否有任何方法可以为自定义静态页面提供来自负载平衡器的消息以供访问者使用

< P> 2)或如何配置负载均衡器的健康检查,将不会考虑503作为将服务器标记为“不健康”的原因吗?
谢谢

你可以在你的应用服务器上实现一个额外的路由,比如说/hcm(用于健康检查维护),它总是响应200 OK。在进行维护时,您可以通过编程方式修改ELB运行状况检查,以使用返回200 OK的/hcm目标,而不是返回503 Service Unavailable的/or/index.html。退出维护时恢复这些更改。

当您不再有任何正常的服务器支持时,负载平衡器将为您提供
503
,因此您不应该做任何特殊的操作

如果在运行状况检查中返回的不是
200
,ELB将在机器未通过配置的运行状况检查次数后将其从负载平衡器中取出


综上所述,您可以在维护时从应用程序中提供
503
,但您必须始终返回
200
进行健康检查。如果您不关心页面的内容,只需从负载平衡器中删除机器(或不通过运行状况检查),LB就会为您做正确的事情。

可能无法满足您的503要求,但一个很好的选择是使用s3和dns故障切换:

我一直在寻找一种快速方法来实现这一点。我们需要在DB升级期间向世界返回503错误,但白名单中列出了一些开发人员的IP,以便他们可以在向公众开放之前对其进行测试

找到一个单点解决方案:: 转到EC2中的装载机平衡器,选择要作为目标的负载平衡器。下面,您应该可以看到侦听器。单击侦听器,然后编辑规则。创建如下规则:

现在,每个人都会得到一个返回了503错误代码的漂亮的维护页面,并且第一条规则中只有两个IP地址能够浏览到该站点。顺序很重要,当两个IP异常位于顶部时,它就位于列表的下方。默认情况下,最后一项始终存在

应用程序负载平衡器的侦听器规则:

可能重复@BMW我认为这是一个很好的答案,但要回答一个不同的问题(如何提供fail whale页面)。它似乎不符合503响应的要求,据称会导致SEO问题。我不能使用其他DNS服务,我已经使用了我的CDN中的DNS服务。如果成员服务器不工作,Rackspace允许您显示您选择的HTML页面。如果AWS不能做到这一点,这是一个相当大的失败LB返回一个带有503代码的空白页面,但我需要在维护模式期间向访问者显示一条自定义消息。我如何配置LB以返回它?我不能使用路由53,我必须使用不同的DNS服务。另一个选项是使healthcheck使用TCP而不是HTTP。它比定制专用路由更容易,并且意味着负载均衡器将考虑该实例是可用的,只要它可以连接到正确的端口。可能不能在所有情况下都工作,但对于我来说,只有两个固定服务器是完美的。我不能使用TCP进行健康检查,只有HTTP和HTTPS可用。对我来说,这比从EC2处理要好。我希望我的双手自由做任何类型的升级,包括DB/EC2等。谢谢分享。