Load balancing is the ability to distribute processing or communications across multiple nodes to minimize the possibility of overworking one machine. This is often referred to as a server cluster, server farm, or Web farm. Most companies that deploy high-traffic Internet sites utilize the load-balanced cluster in one form or another.
Load-balanced clusters differ from failover clusters in that they provide not only fault tolerance and reliability, but also scalability and performance. Load-balanced clusters are not limited to a handful of machines that co-operate as a virtual server; machines can be added as needed to increase performance and the system can scale to meet the needs of any application it is providing.
Deploying an application utilizing a load-balanced cluster server model has the following benefits:
Load balancing of incoming requests.
High availability and automated recovery from single machine failures.
The ability to add machines to the cluster as needed for scalability and performance.
Unlike the failover cluster, which must have an "owner" for each application, the load-balanced cluster distributes the load of the application requests across multiple machines simultaneously. This allows administrators to configure multiple machines to provide the same application. Like other clusters, the nodes within a load-balanced cluster create a virtual server that responds to all requests. This virtual server distributes the client requests across all of the machines within the cluster.
Servers within a load-balanced cluster are configured to operate as a group of servers providing the same service or application. In the past, load balancing required expensive hardware to route requests to the appropriate server, and the servers within the cluster did not communicate with each other because the clustering logic was maintained within the hardware. Microsoft has eliminated the need for hardware solutions by providing an NLB service within the Windows 2000 Advanced Server operating system.
Load-balanced clusters provide high performance due to the number of servers that can be added to the cluster to provide a service or application. They provide scalability through the addition of nodes to the cluster, and they provide fault tolerance by dynamically removing from the cluster machines that fail, so that those machines do not receive client requests.
Although it may sound as if the load-balanced cluster has all of the benefits of the failover cluster and more, there is one drawback to consider. Load-balanced clusters do not share disk storage, so data or applications that they provide to clients have to be static and must be the same on every machine in the cluster. Because the nodes within the cluster do not share information with one another, transaction tracking and programs that require dynamic content, such as databases, are not possible.
Load balancing, in recent years, has been used mostly for Web servers, due to its robust performance and scalability. But load balancing can be used for any application or service that does not have dynamically changing content. Most companies use a combination of load-balanced clusters and failover clusters to provide applications to clients. The failover cluster is typically used for database hosting or file storage, while the load-balanced clusters are used for the front-end Web application.