Introduction to Cluster Server Programming

As a programmer using the Cluster Server SDK, you may perform one or more of the following tasks:

A cluster-aware application is any application that runs on a cluster node and is managed and administered as a cluster resource. A cluster-aware application is aware of its environment and is designed to take advantage of the features that clustering offers. When a cluster-aware application detects that it is running on a cluster node, it provides special functionality or performs additional tasks made available through the Cluster API.

Most applications can be made cluster-aware. Only applications that do not use TCP/IP as a network protocol, maintain data in a configurable location, or support transaction processing cannot be made cluster-aware. Typical cluster-aware applications include database applications, transaction processing applications, file and print server applications, and other groupware applications.

Although it is possible to use the resource DLLs provided by Cluster Server to manage your cluster-aware application, it is recommended that you create your own. By creating a resource type that fits your specific needs, you can have more control and flexibility in how Cluster Server handles your application. Creating a custom resource type enables the Resource Monitor to manage your application in ways that are specific to the application.

To create a custom resource type, you build a resource DLL using the Resource API and, as an option, a DLL to allow Cluster Administrator to include property sheets for your application. The resource DLL contains implementations of entry point functions defined in the Resource API for handling the communication between the application and the Resource Monitor. The Cluster Administrator extension DLL uses the interface methods of the Cluster Administrator Extension API to allow the application to be administered with Cluster Administrator. Providing a Cluster Administrator extension DLL simplifies the job of the network administrator; it enables him or her to work with your application, its dependent resources, and any other standard resources using an integrated, consistent user interface.

You can also create a cluster management application with the Cluster Server SDK. A cluster management application is an application written specifically to manage one or more clusters. Cluster management applications can typically run locally on one of the cluster nodes or remotely on a non-clustered system. Cluster Administrator is an example of a cluster management application as is the command-line tool, CLUSTER.EXE. If you need to create your own cluster management application that runs as a stand-alone application or in conjunction with Cluster Administrator, you can do so using the Cluster API.

Although Cluster Server programming applies primarily to cluster-aware and cluster management applications, Cluster Server supports a third type of application, the cluster-unaware application. A cluster-unaware application resembles a cluster-aware application in that both run on a cluster node and are managed and administered as cluster resources. The difference between applications that are cluster-aware and those that are not is in their knowledge of their environment. A cluster-unaware application has no inherent knowledge of its existence in a cluster; its functionality is the same regardless of whether or not it is running in a cluster. Cluster-unaware applications are typically managed as Generic Application or Generic Service resources, but it is possible to also manage them as custom resource types.