Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AWS load balancer and maintenance page

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!

like image 918
Vladimir Mikhaylovskiy Avatar asked Sep 02 '15 01:09

Vladimir Mikhaylovskiy


People also ask

What are the 3 types of load balancers in AWS?

Elastic Load Balancing supports the following types of load balancers: Application Load Balancers, Network Load Balancers, and Classic Load Balancers.

What is AWS load balancer used for?

A load balancer serves as the single point of contact for clients. The load balancer distributes incoming application traffic across multiple targets, such as EC2 instances, in multiple Availability Zones. This increases the availability of your application. You add one or more listeners to your load balancer.

What is the difference between ELB and ALB in AWS?

An Application Load Balancer (ALB) only works at layer 7 (HTTP). It has a wide range of routing rules for incoming requests based on host name, path, query string parameter, HTTP method, HTTP headers, source IP, or port number. In contrast, ELB only allows routing based on port number.


1 Answers

I've been searching for a quick way to do this. We need to return a 503 error to the world during DB upgrade, but white list a few IPs of developers so they can test it before opening back up to public.

Found a one spot solution:: Go to the Loader Balancer in EC2 and select the load balancer you would like to target. Below, you should see Listeners. Click on a listener, and edit the rule. Create a rule like this:

My rule set up Now everyone gets a pretty maintenance page returned with a 503 error code, and only two IP addresses in the first rule will be able to browse to the site. Order is important, where the two IP exceptions are on top, then it goes down the list. The last item is always there by default.

Listener Rules for Your Application Load Balancer: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-update-rules.html

like image 153
Atno Avatar answered Sep 20 '22 16:09

Atno