The standard advice on offering high availability with IIS is to use network load balancing (NLB) rather than the Cluster Service. You can’t use both of these clustering techniques on the same servers. NLB works at the network level by distributing client requests to a number of clustered servers (up to 32 in a single cluster). Should a single server fail, this will be detected by the other servers, and new connections will be automatically distributed among the remaining servers.

NLB is a good option for many Web servers running IIS, and because more than two servers can be used with Windows 2000 Advanced Server, it provides for true scaling. However, there may be occasions when you want to use Cluster Service with IIS instead, such as when you want fault tolerance between only two servers and are already using Cluster Service for other resources.

It’s also important to remember that NLB works only at the network level, so if, for example, the IIS service stopped or crashed but the server itself remained up, NLB would still direct users to the failed service because it would be unable to verify resources at the application level.

Issues with the Cluster Service and IIS
When using the Cluster Service with IIS, you must take the following issues into consideration:

  • Using the IIS Server Instance resource, you can cluster the WWW service or FTP service, but you must be running the WWW service even if you want to cluster only FTP. SMTP and NNTP have their own cluster resources (SMTP Server Instance and NNTP Server Instance).
  • Microsoft FrontPage Server Extensions are not supported on clustered Web sites.
  • Failed ASP or FTP sessions will not successfully fail over to the other server. The client will have to restart these on the second server. So it’s worth remembering that in most cases, a failover will require the user to reestablish the connection.
  • If your Web site uses the MS DTC (for transaction processing), you must run Comclust.exe on each server to install the MS DTC resource, and you should configure this to depend on the IP address that will be used for your IIS virtual server.
  • You should make sure that IIS is not configured for the default of All Unassigned IP Addresses but for specific addresses. Your clustered IIS site should be configured to use the virtual server address you will assign with the Cluster Service.
  • If using anonymous authentication with IIS, you should change the anonymous user account from a local account to a domain account, which will be accessible to both servers (for the same reason that NTFS permissions with File Share resources should not use local accounts).
  • If you want to use host headers with a clustered Web site, you must set the ServerAutoStart property for that site. For more information, see “Contents of Internet Information Server 5.0 Release Notes” [Q250979] and search for ServerAutoStart.
  • The IIS resource has only one dependency: the IP Address. However, if your clients will be accessing the site by name, it would be a good idea to add the Name Resource and configure it to have a dependency on the IP Address.
  • You can use the IISSync utility to synchronize IIS configuration between the two servers. See “Using IISSYNC to Synchronize Clustered Web Sites on Windows 2000” [Q249603] for instructions. Or simply manually set up the two servers with the same configuration.

Configuring the IIS Server Instance
Before configuring your clustered IIS resource, decide whether you want to keep any related data local to each server or whether you will put the data on the shared disk. Both are valid options, and the choice depends on whether you need to maintain dynamic data and how often it changes.

For example, a read-only Web site or an FTP site that offered a stable list of files to download would qualify for a local configuration of the data (copied to both servers). If the data changed infrequently, you would need to manually update the other server. However, if the content changed frequently, it would be better to put the data on the shared storage.

If you decide to put the data on the shared storage, remember to include the Physical Disk resource in the IIS group and make it a dependency of the IIS Server Instance resource. If you decide to keep the data local to each server (exactly the same location on each) you do not need to include the Physical Disk resource, but you must remember to manage data replication between the two servers.

Figure A shows the configuration options available when creating an IIS Server Instance resource. In this example we’re clustering a Web site, and the IIS Server drop-down list will display all the configured sites on the server. If you want to cluster a specific site rather than a virtual directory off the Default Web Site, make sure that you configure this in the IIS MMC in advance.

Figure A
Configuring a clustered WWW Site

Final word
Using the Cluster Service, you can cluster a couple of IIS Web servers at the application level instead of using NLB to cluster large numbers of servers at the network level. This can be especially useful for a departmental intranet server that is crucial for business productivity but that does not get a ton of traffic.