What is Load Balancer?
Load Balancer is a virtual machine or appliance that balances your web application load that could be Http or Https traffic that you are getting in. It balances a load of multiple web servers so that no web server gets overwhelmed.
Application Load Balancer
- An Amazon Web Services (AWS) launched a new load balancer known as an Application load balancer (ALB) on August 11, 2016.
- It is used to direct user traffic to the public AWS cloud.
- It identifies the incoming traffic and forwards it to the right resources. For example, if a URL has /API extensions, then it is routed to the appropriate application resources.
- It is operated at Layer 7 of the OSI Model.
- It is best suited for load balancing of HTTP and HTTPs traffic.
- Application load balancers are intelligent, sending specific requests to specific web servers.
- If we take an example of TESLA. We have three models of TESLA, i.e., TESLA Model X, TESLA Model S, and TESLA Model 3 and TESLAs have onboard computing facility. You will have a group of web servers that serve the Model X, a group of web servers that serve the Model S, and similarly for Model 3. We have one Load balance that checks whether the incoming traffic comes from either Model X, Model S or Model 3, and then sends it to the intended froup of servers.
Network Load Balancer
- It is operated at the Layer 4 of the OSI model.
- It makes routing decisions at the transport layer (TCP/SSL), and it can handle millions of requests per second.
- When a load balancer receives a connection, it then selects a target from the target group by using a flow hash routing algorithm. It opens the TCP connection to the selected target of the port and forwards the request without modifying the headers.
- It is best suited for load balancing the TCP traffic when high performance is required.
Classic Load Balancer
- It is operated at Layer 4 of the OSI model.
- It routes the traffic between clients and backend servers based on IP address.
- For example, an Elastic Load balancer receives a request from a client on TCP port 80, it will then routes the request to a specified port of backend servers. The port on which the Load Balancer routes to the target server will be having port number 80. The backend server will then send the requested data back to the ELB, which will then forward the Backend server reply to the client. According to the client's perspective, the request has been fulfilled by the ELB, not by the backend server.
- Classic Load balancers are legacy Elastic load balancers.
- It can also be used for load balancing the HTTP or HTTPs traffic and use layer 7-specific features, such as X-forwarded and sticky sessions.
- You can also use the Layer 4 load balancing for applications that rely purely on the TCP protocol.
Load Balancer Errors
If you get an error 504, this is a gateway timeout error. A Load balancer is still available, but it has a problem in communicating with the EC2 instance. If your application stops responding, the ELB (Classic Load Balancer) responds with a 504 error. This means that the application is having issues and it could be either at the web server layer or the Database layer.
In order to troubleshoot where the application is failing, and scale it up or out where possible.
The X-Forwarded-For-Header is used to determine the IP address of a client when you use a classic load balancer.
Working of X-Forwarded-For-Header
- A user is on the Ipv4 address, i.e., 18.104.22.168.
- A user is sending a request to the classic load balancer which in turn folded the request into an EC2 instance. An EC2 instance is going to use the private address, i.e., 10.0.0.23 and this is the only address which is seen by an EC2 instance.
- An EC2 instance is capturing only private address as Classis Load balancer encompasses the Public IP address. The public address is needed as it provides valuable information such as "who are using your website".
- An EC2 instance gets the Ipv4 address in the form of X-Forwarded-For request Header from the Classic load balancer.