AWS load balancer and maintenance page

2019-04-19 02:50发布

I'm using AWS Load Balancer with 3 EC2 servers, and I'm trying to serve a Maintenance page when site is under maintenance.

This page need to return 503 HTTP code, because it is a proper code for a maintenance mode and will prevent possible problems with SEO.

When I return 503 code from any of my servers, Load Balancer makes it "Not In Service", and when all servers return 503, website returns a blank page (because all servers are disconnected).

My questions are:

1) Is there any way to serve a custom static page with a message for visitors from Load balancer if there is no healthy servers?

2) Or how to configure Load Balancer's Health Check that it will not consider 503 as a reason to mark server as "unhealthy"?

Thanks!

3条回答
家丑人穷心不美
2楼-- · 2019-04-19 03:20

Might not meet your 503 requirement but a good option for this is using s3 and dns failover: https://aws.amazon.com/blogs/aws/create-a-backup-website-using-route-53-dns-failover-and-s3-website-hosting/

查看更多
何必那么认真
3楼-- · 2019-04-19 03:26

You could implement an additional route in your app server, let's say /hcm (for health check maintenance), that always responds 200 OK. When it's time for maintenance, you programmatically modify the ELB health check to use the /hcm target which returns 200 OK rather than / or /index.html, which both return 503 Service Unavailable. Revert these changes when exiting maintenance.

查看更多
仙女界的扛把子
4楼-- · 2019-04-19 03:37

The load balancer will serve a 503 for you when you no longer have any healthy server behind it so you should not do anything special.

If you return anything but a 200 on the health check, ELB will take the machine out of the load balancer after it fails the configured number of health checks.

So to recap, you can potentially serve 503 from your app when in maintenance, but you have to return 200 for health checks all the time. If you don't care about the content of the page, you can simply remove the machines from the load balancer (or fail health checks) and the LB will do the right thing for you.

查看更多
登录 后发表回答