Web Server Clustering
By David Grant
Microsoft Internet Information Server
This white paper is an overview of clustering technologies as they relate to Web servers, specifically Microsoft® Internet Information Server (IIS), Windows Clustering, Microsoft Windows® 2000 Advanced Server Network Load Balancing (NLB), Microsoft Windows NT® Load Balancing Service (WLBS), and other industry standards as they are defined by their associated Request for Comments (RFC) documents.
This white paper describes different techniques for implementing your highly available Internet presence.
This white paper assumes that you are familiar with Microsoft Windows NT Server 4.0, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Datacenter Server, Internet Information Server, Transmission Control Protocol/Internet Protocol (TCP/IP), and Domain Name System (DNS). You should also be familiar with the World Wide Web Consortium (W3C) and Request for Comments (RFC).
On This Page
Description of a Server Cluster Internet Information Server on MSCS For More Information
Description of a Server Cluster
A server cluster is a group of independent servers that are managed as a single system for higher availability, easier manageability, and greater scalability.
In a Web server environment, server clusters can be defined in two basic ways:
There are multiple independent, redundant servers
The load is distributed through round-robin DNS
The load is balanced by a load-balancing solution (for example, WLBS)
Multiple servers are configured to provide a service
Only a single server provides the service at any given time
Other servers serve as hot-spares in case of a server (service) problem
Round-Robin DNS—RFC 1794
Round-robin DNS is a method for managing server congestion by distributing requests between multiple servers.
By using the round-robin DNS method, multiple DNS 'A' records are created for the Fully Qualified Domain Name (FQDN) that the client is trying to access. Each 'A' record lists the FQDN and the individual IP address for each node in the Web farm. Each client request resolves to a different IP address (based on the number of 'A' records). This allows incoming requests to be mapped to different servers in the Web farm.
Round-robin is not typically considered load balancing. Load balancing distributes connection loads across multiple servers, giving preference to those servers with the least amount of congestion. By using the round-robin method, server distribution remains on a rotating basis, one IP address to one user, with no regard to server congestion. DNS simply responds with the next 'A' record in the entry for that FQDN.
Round-robin DNS provides no fault tolerance or fault detection. That is, if a server stops working, DNS continues to distribute that server's IP address.
A load balancer processes requests and relays them to server address clusters. A server address cluster has the following properties:
Has an FQDN in the domain namespace (for example, www.microsoft.com)
Has a pool of valid IP addresses to computers that can fulfill the requested service that is associated with the FQDN. That is, if the FQDN is to provide Web services, each IP address must correspond to an HTTP server (for example, Internet Information Server). These IP addresses can be valid IP addresses that are assigned by Internet Assigned Numbers Authority to you, or they can be IP addresses in the private address space as defined by RFC 1918: Address Allocation for Private Internets. For example:
Class A (10.0.0.0 through 10.255.255.255)
Class B (172.16.0.0 through 172.31.255.255)
Class C (192.168.0.0 through 192.168.255.255)
Uses a load specification from a list of predetermined load formulas. (For specific details, see the documentation for your load-balancing solution.)
Optional features to be provided by the specific solution include:
A TCP port that is designated to test for a server heartbeat. These tests only verify that the server is responding on the TCP level. For example, a server heartbeat for Internet Information Server (IIS) can perform an HTTP trace request (RFC 2069, Section 9.8), which checks to verify if the programs that are requested (in this case, HTTP services) are available on the requested server.
A specification for a fail-over server in the event that all computers become unavailable.
A balance interval to determine how much time to wait between balance cycles.
Windows NT Load Balancing Service and Windows 2000 Network Load Balancing
Windows NT Load Balancing Service (WLBS), a component of Windows NT Server 4.0, Enterprise Edition, allows for the balancing of many TCP or IP-based services, including, but not limited to, WWW and FTP. This runs on a single Windows NT Server 4.0-based computer, and balances the request between any number of individual servers that provide a TCP or IP service.
For additional information about WLBS, see the following Web site:
For Windows 2000, load balancing is implemented in Windows 2000 Advanced Server as Network Load Balancing (NLB).
Windows NT Server 4.0 supports two-node clustering through Microsoft Cluster Server (MSCS), which is included as a component of Windows NT Server 4.0, Enterprise Edition. Additional information about MSCS is available in the MSCS FAQ, which is located at:
Windows 2000 Advanced Server supports two-node clustering. Clustering information for Windows 2000 Advanced Server is available at:
Microsoft Windows 2000 Datacenter Server supports four-node clustering. Windows 2000 Datacenter Server information is available on the following Web site:
A node is defined as a single installation of Windows NT Server 4.0, Enterprise Edition, on a server that has the following characteristics:
Has local hardware (RAM, CPU, local boot, and system partitions for Windows NT)
Has a network connection that enables it to communicate with an additional node
Has a means to share a disk resource (for example, shared SCSI or Fibre Channel)
Internet Information Server on MSCS
IIS is designed as a high performance, highly scalable, highly extensible way to provide Web content. Depending on your definition of Web content, your recommended solution may be different. If you want to enlist static HTML with client-side scripting, or static content available to FTP users, you can use IIS as a standalone server to meet your needs. If you want to use IIS as a basis for Web programs, including ASP pages (or other server-side scripting), server-side COM objects, Microsoft Site Server, or Microsoft Commerce Server, and you want multiple redundant servers to meet the need for high availability, WLBS with multiple individual Web servers can help you to meet your goals.
For information about installing IIS on MSCS, see the white paper located at:
This white paper contains instructions on how to install and configure the WWW and FTP services for failover between two nodes.
Having these services (and other services) on the cluster provides high availability for those resources.
In this white paper, resources are defined as basic system components that provide a service to clients in a client or server environment. These services can move freely from one node in the cluster to the other, but can only be online on one node at a time.
In its simplest form, an IIS server is basically the following five resources:
An IP address
A network name
A Disk resource
An IIS server instance
A Microsoft Distributed Transaction Coordinator (MSDTC)
These resources are maintained in a virtual state and owned by the active (owning) node of the cluster. They are virtual, in that they are reliant on the Cluster service and their individual resource DLLs, rather than an actual installation of Windows NT Server 4.0, Enterprise Edition.
Content is maintained on the shared disk resource, so that it remains available in the event that a node becomes unavailable.
Connections to resources are made through the virtual IP addresses. Therefore, the FQDN in DNS points to the IP address resource to which you have bound your IIS server instance.
Microsoft Cluster Server provides an ideal environment for backend applications such as Microsoft SQL Server or Microsoft Exchange Server. However, MSCS is not ideal for IIS and a highly available Web presence. WLBS is more suited to the requirements of that environment.
IIS and MSCS Implementation
The SMTP and NNTP services in Microsoft Windows NT Option Pack on Windows NT Server 4.0 are not cluster-aware. That is, although you can install them, they do not fail over because they do not have a resource DLL. If you require e-mail and news services in a clustered environment, use Exchange Server. For additional information, see the following Web page:
Windows 2000 Advanced Server provides a resource DLL for the SMTP and NNTP services. Therefore, these services are cluster-aware in Windows 2000.
Microsoft Outlook® Web Access is not supported on a cluster.
For additional information about other Exchange Server components that are not supported in a cluster environment, see the Docs\Word_Docs\Clustering\Cluster.doc file on the Exchange Server 5.5 CD.
ASP pages (and other server-side scripting) work in a cluster environment; however, because you must implement these as server-side COM objects that must exist and be registered on each node, their extensibility is limited. If you require Active Server Pages (ASP) in the Web server environment, use WLBS.
Microsoft FrontPage® Server Extensions and Microsoft Index Server are not supported on MSCS.
Site Server is not supported on MSCS. For additional information, see the following article in the Microsoft Knowledge Base:
228999: Site Server 3.0 Services Cannot Be Configured to Work with MSCS
Active/Passive is the only way to use IIS on MSCS.
Windows NT Load Balancing Service
Load balancing in a Web farm is the preferred method for creating a highly available Web presence.
Windows Load Balancing Service (WLBS) is a software-based load-balancing solution that is installed as a virtual Network Adapter driver that filters traffic to the physical adapter to which it is bound. At this layer, it distributes the requests based on the driver setup. This allows a client's requests to be passed unchanged to the server that can fulfill the client's request.
WLBS provides the ability to assign client affinity to requests. This allows sessions to be maintained between client requests. This is in contrast to the round-robin DNS method in which every incoming request is sent to the next 'A' record in the DNS servers.
The following list of resources provides information about the differences between using IIS on a cluster and WLBS for your high-availability Web site.
For a Web environment, the concept of a Web server cluster is best described in the following article:
The following links contain a feature overview and a technical overview of WLBS:
For Web farm content, there is no single disk resource for maintenance of your content, unless you point to a single file share; however, pointing to a single file share would likely create a network bottleneck. Therefore, content (and metadata) must be replicated between servers. You can accomplish this by using Site Server Content Replication and metabase deployment.
Because of the nature of a Web farm (each server is independent of the other), the nodes in a Web farm do not communicate with one another to ensure responsiveness (as the heartbeat does in MSCS). WLBS automatically detects and removes unresponsive servers.
The Microsoft Internet Information Server Resource Kit contains a utility (HTTPMon) that provides a graphical (Web-based) interface from which to monitor the servers in your Web farm.
Maintaining Session State in Web Server Clusters
HTTP (HTTP/1.1—RFC 2068) is a stateless (and connectionless) protocol. Therefore, to a Web server, each HTTP request is separate and unrelated to all other requests. There must be a way for the page to identify one user request from another outside of the protocol that is being used to make the request. Cookies are used for this.
To overcome some of the shortcomings of cookies, session-aware load balancing through software or hardware is possible.
You can accomplish session management while using round-robin DNS by using software in the form of IIS and ASP (a Session object), and the Session_OnStart event when used in a Web program's Global.asa file.
The following article contains additional information about the management of sessions through ASP pages:
Another software-based session-management mechanism is instituted through Site Server Personalization, which uses a database server (SQL) that houses a User Property database that is a backend server that is available to all Web servers in the Web farm. For additional information, see the following Web site:
For additional information about using Site Server to manage your sessions, see the following Web site:
Hardware-based session management is controlled through session-distribution algorithms that are built into the hardware load-balancing solution. These algorithms map to servers in the Web farm based on an examination of the packet for the client IP address, port, and so on. This is done without modification to the packet. For example, in WLBS, this is controlled through affinity. For basic load balancing, you must set the Affinity setting to None; to maintain state, choose Single of Class C. On Local Director from Cisco Systems, Inc., use the Sticky setting to maintain this.
For More Information
Microsoft Knowledge Base Articles
For additional information about possible support issues, see the following Microsoft Knowledge Base articles.
IIS and MSCS
191138 How to Install the NTOP on Cluster Server
223258 How to Install the NTOP on MSCS 1.0 with SQL Server 6.5 or 7.0
218922 Installing NTOP on Cluster Server with SP4 Causes Event IDs 1009
223397 Event Log Error 3221229574 from Service Control Manager
197218 INFO: Stand Alone Distributed Transaction Coordinator Setup
224801 Deciphering IISSYNC Status Codes
243342 IISSYNC Returns a Status of 214598801
241573 How to Install IIS 4.0 onto a Single Node of MSCS 1.0
252641 Resolving MSDTC Conflicts During NTOP Installation on Cluster Server
255184 NT 4.0 Option Pack Installation Errors on MSCS Running MSDTC
244220 Computer Stops Responding When Creating IIS Server Instance
168801 How to Enable Cluster Logging in Microsoft Cluster Server
249603 Using IISSYNC to Synchronize Clustered Web Sites on Windows 2000
168321 Creating a DNS Record for a Host with Two or More IP Addresses
168322 Creating a DNS Alias Record
WLBS (NLB—Windows 2000)
248654 List of Articles About Windows NT Load Balancing Service
197992 How to Configure WLBS Using a Single Network Interface Card
197991 How to Configure WLBS Using Multiple Network Interface Cards
232000 How to Configure WLBS with Multiple Virtual IP Addresses
219277 Load Balancing HTTP with WLBS
219285 Load Balancing FTP with WLBS
248986 How To Set Up Windows Media Services with Windows Load Balance
240997 Configuring Network Load Balancing
232711 How Cluster Integrity Is Monitored in WLBS
234151 WLBS Does Not Detect Program or Service Problems
Site Server Content Deployment
181162 Site Server 3.0 Content Deployment FAQ
226524 How to Use FrontPage and Site Server Deployment
Microsoft Web Sites
For additional information about the topics in this article, see the following resources:
Deploying Notes for Windows NT Load Balancing Service
Windows NT Load Balancing Service (WLBS) Technical Overview
Clustering with Microsoft Exchange Server
Managing Session State in a Web Farm
Maintaining Session State on Your Web Farm
Working on a Web Farm