Evaluating Cluster Technologies
Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2
If you decide to deploy clustering with Windows Server 2003, choosing a cluster technology depends greatly on the application or service that you want to host on the cluster. Server clusters and Network Load Balancing both provide failover support for IP-based applications and services that require high scalability and availability. Each type of cluster, however, is intended for different kinds of services. Your choice of cluster technologies depends primarily on whether you run stateful or stateless applications:
Server clusters are designed for stateful applications. Stateful applications have long-running in-memory state, or they have large, frequently updated data states. A database such as Microsoft® SQL Server™ 2000 is an example of a stateful application.
Network Load Balancing is intended for stateless applications. Stateless applications do not have long-running in-memory state. A stateless application treats each client request as an independent operation, and therefore it can load-balance each request independently. Stateless applications often have read-only data or data that changes infrequently. Web front-end servers, virtual private networks (VPNs), and File Transfer Protocol (FTP) servers typically use Network Load Balancing.
Server clusters provide high availability for more complex, stateful applications and services by allowing the failover of resources. Server clusters also maintain client connections to applications and services. If your application is stateful, with frequent changes to data, a server cluster is a more appropriate solution. Server clusters run on Windows Server 2003, Enterprise Edition, and Windows Server 2003, Datacenter Edition.
Server clusters, which use the Cluster service, maintain data integrity and provide failover support and high availability for mission-critical applications and services on your back-end servers, including databases, messaging systems, and file and print services. Organizations can use server clusters to make applications and data available on multiple servers that are linked together in a server cluster configuration. Back-end applications and services, such as messaging applications like Microsoft Exchange or database applications like Microsoft SQL Server, are ideal candidates for server clusters.
In server clusters, nodes share access to data. Nodes can be either active or passive, and the configuration of each node depends on the operating mode (active or passive) and how you configure failover in the cluster. A server that is designated to handle failover must be sized to handle the workload of the failed node in addition to its own workload.
In Windows Server 2003, Enterprise Edition, and Windows Server 2003, Datacenter Edition, server clusters can contain up to eight nodes. Each node is attached to one or more cluster storage devices, which allow different servers to share the same data. Because nodes in a server cluster share access to data, the type and method of storage in the server cluster is very important.
For information about server clusters, including resource groups, failover and failover policies, storage configurations, cluster-aware applications, and optimizing your network for server clusters, see "Planning your server cluster" in Help and Support Center for Windows Server 2003 and "Designing and Deploying Server Clusters" in this book.
Network Load Balancing
If your application is stateless or can otherwise be cloned with no decline in performance, consider deploying Network Load Balancing. Network Load Balancing provides failover support for IP-based applications and services that require high scalability and availability. Network Load Balancing can run on all editions of Windows Server 2003.
Network Load Balancing addresses bottlenecks caused by front-end services, providing continuous availability for IP-based applications and services that require high scalability. Network Load Balancing clusters are used to provide scalability for Web services and other front-end servers, such as VPN servers and firewalls. Organizations can build groups of clustered computers to support load balancing of TCP and User Datagram Protocol (UDP) traffic requests.
Network Load Balancing clusters are groups of identical, typically cloned computers that, through their numbers, enhance the availability of Web servers, Microsoft® Internet Security and Acceleration (ISA) servers (for proxy and firewall servers), and other applications that receive TCP and UDP traffic. Because Network Load Balancing cluster nodes are usually identical clones of each other and can therefore operate independently, all nodes in a Network Load Balancing cluster are active.
You can scale out Network Load Balancing clusters by adding additional servers. As demand on the cluster increases, you can scale out Network Load Balancing clusters to as many as 32 servers if necessary. Each node runs a copy of the IP-based application or service that is being load balanced and stores all the data necessary for the application or service to run on local drives.
In clusters, stateless applications are typically cloned, so that multiple instances of the same code are executed on the same dataset. Figure 6.5 shows a cloned application (called "App") deployed in a cluster. Each instance of the cloned application is self-contained, so that a client can make a request to any instance and will always receive the same result.
Figure 6.5 Cloned Application
Changes made to one instance of a cloned stateless application can be replicated to the other instances, because the dataset of stateless applications is relatively static. Because stateful applications such as Microsoft Exchange or Microsoft SQL Server are updated with new data frequently, they cannot be easily cloned and they are not good candidates for hosting on Network Load Balancing clusters.
For more information about Network Load Balancing, see "Designing Network Load Balancing" and "Deploying Network Load Balancing" in this book.
Component Load Balancing
CLB clusters address the unique scalability and availability needs of middle-tier (business) applications that use the COM+ programming model. Organizations can load balance COM+ components over more than one node to dramatically enhance the availability and scalability of software applications. CLB clusters, however, are a feature of Microsoft Application Center 2000. For information about CLB clusters, see your Microsoft Application Center 2000 documentation.