How can I make a Windows service which is not cluster-aware highly available?

Solution 1:

The most generic method I can think of to do this would be to virtualise the middle-teir service in a hypervisor that supports high availability (such as VMWare vSphere).

Of course, this is only easy if you:

  • Have an existing virtual environment
  • Have existing shared storage
  • Have HA-compatible hardware

Otherwise it's difficult and expensive, but it's at least guaranteed to work with any non-cluster aware software.

Solution 2:

Install the service on both nodes of the cluster. Create a new resource group and put the name and IP address in there. Add in a Generic Service and point it to the service you wish to cluster. Configure the services that need to access the service to point to the cluster name that you put in the resource group.

I've done this for a number of non-cluster aware services.