You might know what you want to accomplish by clustering your servers: fault tolerance. But different types of clusters accomplish this in different ways. This article, provided by InformIT, looks at two types of clusters, failover and load-balanced, from a Microsoft point-of-view.
The most popular cluster type is called a failover cluster. A failover cluster is typically built with one to four machines, physically configured to share disk storage. Like the other cluster types, all servers within the cluster work together to form one virtual server that provides an application or service to clients.
The failover cluster, like the other cluster types, has a specific purpose. The main purpose of the failover cluster is to provide uninterrupted service in the event of a failure within the cluster. Even though it is possible to configure a failover cluster to provide a small performance boost by changing certain settings, a failover cluster is not as scalable as other types of clusters. A failover cluster is a good fit for databases, file storage, and applications that have dynamic content.
In a failover cluster, the nodes within the cluster share disk storage. The applications and data used on the cluster are stored on the shared disk so that each server can access the data in the event of a failure; however, both machines can never access data on the external storage array at the same time. There must be one owner for each physical disk used within the array. As you will see later, configuration of the cluster software entails assigning ownership of all applications on the cluster to one machine.
For example, if you chose to run SQL Server on your cluster, your SQL installation would be located on one of the disks within the external disk array. You would need to select an owner for that application and assign all of the resources necessary to run that application to that one server. Let's assume Cluster Server 1 is the owner of the SQL Server application. This means that Cluster Server 1 would respond to all SQL requests, while the other server sits idle. While Cluster Server 1 has ownership of the application, Cluster Server 2 would not be involved in the transactions and would not be able to access the drive that the data is stored on.
In the event of a failure on Cluster Server 1, all resources for the application would failover to Cluster Server 2, and it would become the new owner of the application. Once Cluster Server 2 had been granted the ownership of the application, it would be able to see the disk and access the data. Once Cluster Server 1 comes back online, the application ownership would fail back to the previous owner, and Cluster Server 1 would begin servicing requests once again.
Failover clusters share disk storage, and therefore are best suited for applications that contain dynamic content, such as databases, file storage, and mail server applications. If you want to cluster an application and the application requires changing content or transaction processing, it must be run on a failover cluster, because a failover cluster is the only cluster model that allows all nodes to share information concerning transactions and changing content.
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.
Read more about the history of clustering at InformIT.