Cluster-Aware Applications

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

Q. What is a Cluster Aware Application?

A. A cluster-aware application is an application that calls the cluster APIs to determine the context under which it is running (such as the virtual server name etc.) and can failover between nodes for high availability.

Can applications that were not written for a cluster be made highly available?

Yes, Server clusters provide a plug-in environment that allows resource dlls to provide the necessary control and health monitoring functions to make existing applications highly available.

Server clusters provide a set of generic resource types that can be used to make existing applications failover in a cluster. In Windows 2000 there are two generic resource types:

Generic application

allows any application to be started, stopped and monitored by the cluster service

Generic Service

allows an existing Windows Service to be started, stopped and monitored.

These generic services provide very rudimentary health monitoring (for example, is the process that was started still a valid process on the system). It does not check that the application is servicing requests since this requires specific knowledge of the application. The generic resources can be used to make applications failover relatively quickly; however, to provide a more appropriate health check, Microsoft recommends that you build an application-specific resource dll.

In Windows Server 2003, we have provided an additional resource type (Generic Script) that allows the start/stop and health monitoring functions to be implemented as scripts rather than using C or C++. This makes the job of building application-specific resource plug-ins much more manageable and easier.

Q. How do I build a cluster-aware application?

A. Server clusters provides a rich API set that allows applications to recognize and utilize the cluster environment. These APIs are fully documented in the Platform SDK.

Q. Should I use the Generic Service or Generic Application resource to make my application highly available?

A. The generic services provide very rudimentary health monitoring (for example, is the process that was started still a valid process on the system). It does not check that the application is servicing requests since this requires specific knowledge of the application. The generic resources can be used to make applications failover relatively quickly; however, to provide a more appropriate health check, Microsoft recommends that you build an application-specific resource dll.

Q. Does Microsoft validate or logo software products that work with Server clusters?

A. Yes, Server clustering is an optional component of the Windows Advanced Server logo program. Applications can be logoed as working on a Server cluster.

Q. What Microsoft Applications are cluster-aware?

A. The following services shipped as part of the Windows operating system are cluster-aware:

  • DHCP Highly available DHCP server

  • MSDTC Highly available distributed transaction coordinator

  • IIS Highly available web server and FTP server*

  • File Share Highly available file share service and DFS

  • Message Queue Highly available MSMQ service

  • MSMQ triggers Highly available MSMQ trigger service (new for Windows Server 2003)

  • Print Spooler Highly available printer service

  • WINS Highly available WINS service

The following additional Microsoft Products are cluster-aware:

  • SQL Server 6.5, 7.0, 2000 and upwards

  • Exchange Server 5.5 and upwards

  • Services for Unix 3.0 and upwards

Q. Does Exchange 2000 support active/active clusters?

A. Yes, there are some caveats to supporting Exchange 2000 in an active/active configuration.

Q. Does SQL Server support active/active clusters?

A. Yes, SQL Server allows the following:

  • Multiple nodes in a cluster hosting different databases. Each database can be failed over independently.

  • Multiple nodes in a cluster hosting partitions of a single database using database views to tie the different instances into a single logical database from a client perspective.

Q. Where do I find information about writing cluster-aware applications?

A. The cluster concepts and APIs are fully documented in the Platform SDK. In addition, there are several examples in the Platform SDK that can be used to demonstrate Server cluster integration.

Q. Is Services for Macintosh (SFM) supported in a Server cluster?

A. No, Services for Macintosh is not supported in a Server cluster.

Q. Is Services for Unix (SFU) supported in a Server cluster?

A. Yes, Services for Unix supports highly available NFS shares in SFU 3.0.