Load balancing (computing)
From Wikipedia, the free encyclopedia
In computer networking, load balancing is a technique (usually performed by load balancers) to spread work between many computers, processes, hard disks or other resources in order to get optimal resource utilization and decrease computing time.
Contents |
[edit] Introduction
A load balancer can be used to increase the capacity of a server farm beyond that of a single server. It can also allow the service to continue even in the face of server down time due to server failure or server maintenance.
A load balancer consists of a virtual server (also referred to as vserver or VIP) which, in turn, consists of an IP address and port. This virtual server is bound to a number of physical services running on the physical servers in a server farm. These physical services contain the physical server's IP address and port. A client sends a request to the virtual server, which in turn selects a physical server in the server farm and directs this request to the selected physical server. Load balancers are sometimes referred to as "directors"; while originally a marketing name chosen by various companies, it also reflects the load balancer's role in managing connections between clients and servers.
Different virtual servers can be configured for different sets of physical services, such as TCP and UDP services in general. Protocol- or application-specific virtual servers that may be supported include HTTP, FTP, SSL, SSL BRIDGE, SSL TCP, NNTP, SIP, and DNS.
The load balancing methods manage the selection of an appropriate physical server in a server farm.
Persistence can be configured on a virtual server; once a server is selected, subsequent requests from the client are directed to the same server. Persistence is sometimes necessary in applications where client state is maintained on the server, but the use of persistence can cause problems in failure and other situations. Further, persistence mechanisms can vary across load balancer implementations. A more common method of managing persistence is to store state information in a shared database, which can be accessed by all real servers, and to link this information to a client with a small token such as a cookie, which is sent in every client request.
Load balancers also perform server monitoring of services in a web server farm. In case of failure of a service, the load balancer continues to perform load balancing across the remaining services that are UP. In case of failure of all the servers bound to a virtual server, requests may be sent to a backup virtual server (if configured) or optionally redirected to a configured URL. For example, a page on a local or remote server which provides information on the site maintenance or outage.
Among the server types that may be load balanced are:
- Server farms
- Caches
- Firewalls
- Intrusion detection systems
- SSL offload or compression appliances
- Content Inspection servers (such as anti-virus, anti-spam)
In Global Server Load Balancing (GSLB) the load balancer distributes load to a geographically distributed set of server farms based on health, server load or proximity.
[edit] Load Balancer features
- SSL Off load and Acceleration: SSL applications can be a heavy burden on the resources of a Web Server, especially on the CPU. Due to heavy transactions on the servers, they will not be able to handle SSL connections and non-SSL connections at the same time and the end users will see a slow response. To resolve these kinds of issues, a Load Balancer capable of handling SSL Off loading is used. When Load Balancers are taking the SSL connections, the burden on the Web Servers is reduced and performance will not degrade for the end users.
- Secure Remote Access (SSL VPN):
- Distributed Denial of Service Attack (DDoS) Protection
- Compression
- TCP off Load
- Client Keep-alive
- TCP Buffering
- Consolidated Logging
- Application Caching
- TCP Compression
- Content Filtering
- Priority Queuing
- Content Switching
- Cache Redirection
- Global Server Load Balancing
- Link Load Balancing
[edit] Methods
- Least connections
- Round robin DNS
[edit] Web server methods
One major issue for large Internet sites is how to handle the load of the large number of visitors they get. This is routinely encountered as a scalability problem as a site grows. There are several ways to accomplish load balancing; an example of a site using the approach is the Wikimedia Foundation and its projects. In June 2004 the load was balanced using a combination of:
- Round robin DNS distributed page requests evenly to one of three Squid cache servers.
- Squid cache servers used response time measurements to distribute page requests between seven web servers. In addition, the Squid servers cached pages and delivered about 75% of all pages without ever asking a web server for help.
- The PHP scripts which run the web servers distribute load to one of several database servers depending on the type of request, with updates going to a master database server and some database queries going to one or more slave database servers.
Alternative methods include use of layer 4 routers, and for Linux, the Linux Virtual Server, which is an advanced open source load balancing solution for network services. Other load balancing reverse proxies for UNIX systems include XLB, HAProxy, Balance, Pen and Pound. With the appropriate modules, the Apache, Lighttpd and Nginx web servers can also act as a reverse proxy. Fastream IQ Reverse Proxy is a scalable and robust reverse proxy for Windows 2000/XP/2003/Vista. Network Load Balancing Services is a Microsoft proprietary clustering and load balancing implementation.
[edit] Networking and redundancy
When providing an online service, it is important to always have access to the Internet. You cannot limit yourself to choosing one provider and being at their mercy. They may fail or you may overload the circuit with peak traffic during the day, resulting in slower network speed. Unavailability when a site is down and slow connections can cause clients to go elsewhere, perhaps to your competitors for better service.
Many sites are turning to the multi-homed scenario; having multiple connections to the Internet via multiple providers to provide a reliable and high throughput service. Multi-homed networks are increasing in popularity because they provide networks with better reliability and performance to the end-user. Better reliability results from the fact that the network is protected in case one of the Internet links or access routers fails. Performance increases due to the fact that the network's bandwidth to the Internet is the sum of the different pipes available through the different access links.
[edit] Monitoring
Server monitoring checks the state of a server by periodic probing of the specified destination. Based on the response, it takes appropriate action. Monitors - also known as keep-alives - specify the types of request sent to the server and the expected response from the server. The load balancing system sends periodic requests to the server. The response from the servers must be received not later than configured response timeout. If the configured number of probes fail, the server is marked "DOWN" and the next probe is sent after the configured down time. The destination of the probe may be different from the server's IP address and port. A load balancer may support multiple monitors. When a service is bound to multiple monitors, the status of the service is arrived based on the results sent by all monitors.
[edit] CPE
For the end-user CPE (as opposed to ISPs, public hosts or other telco infrastructure), load balancing can be used to provide resilience or redundant backup in the case of failure of one part of WAN access. For example, a company with an ADSL line might have a secondary ADSL line, or any other kind of Internet feed. Internet traffic may be evenly distributed across both connections, giving more total net bandwidth, or traffic policies may determine specific types of data use a specific connection. Where one connection fails, all traffic can automatically route via the other connection.
[edit] References
- Tony Bourke: Server Load Balancing, O'Reilly, ISBN 0-596-00050-2
- Chandra Kopparapu: Load Balancing Servers, Firewalls & Caches, Wiley, ISBN 0-471-41550-2
- Robert J. Shimonski: Windows Server 2003 Clustering & Load Balancing, Osborne McGraw-Hill, ISBN 0-07-222622-6
- Jeremy Zawodny, Derek J. Balling: High Performance MySQL, O'Reilly, ISBN 0-596-00306-4
- Matthew Syme, Philip Goldie: Optimizing Network Performance with Content Switching: Server, Firewall and Cache Load Balancing'', Prentice Hall PTR, ISBN 0-13-101468-4
[edit] Load Balancer Market Leaders
- Astaro
- Barracuda Networks
- CAI Networks
- Cisco
- Citrix
- Coyote Point Systems
- F5 Networks
- Foundry Networks
- jetNEXUS
- Juniper Networks
- KEMP Technologies
- Nortel
- Radware
- Zeus Technology
- Sentral Systems Ltd
[edit] External links
- XLB Open Source HTTP (Layer-7) Loadbalancer
- IPVS Open Source Layer-4 Loadbalancer
- set-rule-to-create-andor-maintain-a-network-attached-server
- Dynamic Load Balancing and Scheduling
- Load Sharing and Balancing
- Load Balancing in Signaling Transfer Points
- What Is Network Load Balancing?
- Article "Load Balancing for Small Businesses" by Network Computing
- Article "BalanceNG: A simple approach to load balancing" by Anze Vidmar
- Article "Taking a load off: Load balancing with balance" by Costa Walcott
- Article "Simple webserver load balancing with Pound" by Steve Kemp
- Article "DNS Load Balancing" by Mark Henry
- Article "Making applications scalable with Load Balancing" by Willy Tarreau
- How does CORBA support load-balancing?