Performance concepts - Load balancing
To make optimal use of a horizontal scaled system, most of the time some form of load balancing is used to spread the load over various machines.
Load balancing uses multiple servers in a system to perform identical tasks (also known as a server farm). Examples would be a web server farm, a mail server farm or an FTP server farm. A load balancer automatically redirects tasks to members in the server farm. A load balancer checks the current load on each server in the farm and moves incoming requests to the least busy server.
A load balancer also increases availability: when servers in the server farm are unavailable the load balancer notices this and ensures no requests are sent to unavailable servers until they are back online again. Of course the availability of the load balancer itself becomes very important in this setting.
It is also important to realise that server load balancing introduces new challenges. The systems must be 100% identical to each other in terms of functionality. For instance, each web server in a load balancing situation must be able to have access to the same information. Furthermore, the application running on a load balanced system must be able to cope with the fact that each request can be handled by a different server. The application must be stateless for this to work.
A typical example is a web application asking the user for a username and password. When the request is sent from web server number one, and the reply (the filled-in form) is sent to web server number two by the load balancer, the web application must be able to handle this. If this is not the case the load balancer must be made more intelligent; being able to contain the states of the application.
Of course if a server in the server farm goes down, its per-session information becomes inaccessible, and any sessions depending on it are lost. In the network realm, load balancing is done to spread network load over multiple network connections.
For instance most network switches support port trunking. In such a configuration multiple Ethernet connections are combines to get a virtual Ethernet connection providing higher throughput. For instance a network switch can trunk three 100Mb/s Ethernet connections to one (virtual) 300Mb/s connection. The load on the three connections is then balanced over the three lines by the network switch.
In storage systems multiple connections are also common. Not only for increasing the bandwidth of the connections, but also to increase availability.
This entry was posted on Tuesday 17 May 2011