Download (direct link):
requests among all the real servers. If the algorithm is perfect, the capacity of the virtual server will be equal to the aggregate processing capacity of all real servers. But this is seldom the case due to several factors, including efficiency of load-distribution algorithms. Nevertheless, even if the virtual server capacity is about
The Server Farm with a Load Balancer
80-90 percent of the aggregate processing capacity of all real servers, this provides for excellent scalability.
Availability. The load balancer continuously monitors the health of the real servers and the applications running on them. If a real server or application fails the health check:, the load balancer avoids sending any client requests to that server. Although any existing connections and requests being processed by a failed server are lost, the load balancer will direct all further requests to one of the healthy real servers. If there is no load balancer, one has to rely on a network-monitoring tool to check the health of a server or application, and redirect clients manually to a different real server. Because the load balancer does this transparently on the fly, the downtime is dramatically minimized. Once the failed server is repaired, the load balancer detects the change in the health status and starts forwarding requests to the server.
• If a server’s hardware needs to be upgraded, or its operating system or application software must be upgraded to a newer version, the server must be taken down. Although the upgrade can be scheduled at off-peak hours to minimize the impact of downtime, there will still be downtime. Some businesses may not be able to afford that downtime. Some may not really be able to find any off-peak hours, especially if the server is accessed by users around the globe in various time zones. By deploying a load balancer, we can transparently take the server offline for maintenance without any downtime.
The load balancers can perform a graceful shutdown of a server whereby the load balancer stops giving new requests to that server and waits for any existing connections to terminate. Once all the existing connections are closed, the server can safely be taken offline for maintenance. This will be completely transparent to the clients, as the load balancer continues to serve the requests addressed to the VIP by distributing them across the remaining real servers.
• Load balancers also help manageability by decoupling the application from the server. For example, let’s say we have ten real servers available and we need to run two applications: Web (HTTP), and File Transfer Protocol (FTP). Let’s say we chose to run the FTP on two servers and the Web server on eight servers because there is more demand for the Web server. Without a load balancer, we would be using DNS to perform round-robin between the two server IP addresses for FTP, and between eight server IP addresses for HTTP. If the demand for FTP suddenly increases, and we need to run it on another server, we must now modify DNS to add the third server IP address. This can take a long time to take effect, and may not address the performance issues right away. If we instead use a load balancer, we only need to advertise one VIP. We can configure the load balancer to associate the VIP with servers 1 and 2 for FTP, and servers 3 through 8 for Web applications. This is referred to as binding. All FTP requests are received on well-known FTP port 21. The load balancer recognizes the request type based on the destination TCP port and directs it to the appropriate server. If the demand for FTP increases, we can enable server 3 to run the FTP application, and bind server 3 to the VIP for FTP application. The load balancer now recognizes that there are three servers running FTP, and distributes the requests among the three, thus immediately increasing the aggregate processing capacity for FTP requests. The ability to move the application from one server to another or add more servers for a given application with no server interruption to clients is a powerful tool for server administrators.
• Load balancers also help with managing large amounts of content, known as content management. Some Web servers may have so much content to serve that it cannot possibly fit on just one server.
We can organize servers into different groups, where each group of servers is responsible for a certain part of the content, and have the load balancer direct the requests to the appropriate group based on the URL in the HTTP requests.
• Load balancers are operating system agnostic because they operate based on standard network protocols. Load balancers can distribute the load to any server irrespective of the server operating system. This allows the administrators to mix and match different servers, yet take advantage of each server to scale the aggregate processing capacity.
Basic Packet Flow in load balancing
Security. Because load balancers are the front end to the server farm, load balancers can protect the servers from malicious users. Many load-balancing products come with several security features that stop certain types of attacks from reaching the servers. The real servers can also be given private IP addresses, as defined in RFC 1918, to block any direct access by outside users. The private IP addresses are not routable on the Internet. Anyone in the public Internet must go through a device that performs network address translation (NAT) in order to communicate with a host that has a private IP address. The load balancer can naturally be that intermediate device that performs network address translation as part of distributing and forwarding the client requests to different real servers. The VIP on the load balancer can be a public IP address so that Internet users can access the VIP. But the real servers behind the load balancer can have private IP addresses to force all communication to go through the load balancer.