On a Windows 2003 cluster you can only ever have one instance of MSDTC running on the cluster at any one time. For this reason and to ensure the running instance of MSDTC is available to all nodes in the cluster, it must be configured as a clustered resource as per http://support.microsoft.com/kb/301600.
In order to configure MSDTC on the cluster a shared disk is required. This disk is where the MSDTC log file is held. The log file contains details and states of open transactions. This means if the MSDTC service was to stop for any reason, it can be restarted and the transaction could continue without being lost.
As stated in the KB article 301600 you cannot use a MNS disk as the disk for the MSDTC log file.
From the article http://technet.microsoft.com/en-us/library/bb123996.aspx we also state: “In Windows Server 2003, the MSDTC cluster resource requires the use of shared storage in the cluster.”
I have come across a number of scenarios whereby we did not meet these requirements yet still require MSDTC. An example of such a scenario is a Microsoft Exchange Cluster containing only an MNS disk with no shared disk installed. On these cluster you may need MSDTC to install certain updates or even to use some custom written COM+ add-on's.
First we must specify that MNS (Majority Node Set) is not a shared disk it is more a replication method and as stated above it cannot be used for the MSDTC log file.
In order to get this working in a Microsoft supported manner there are only two solutions:
- Install a shared disk; or
- Consider moving to Windows 2008 (Windows 2008 supports an active-active MSDTC configuration).
If these solutions are really not possible for your particular case there is one other possible option. I must explicitly state that this is a non-supported and not a fully tested workaround.
The method means that MSDTC would not be highly available on the cluster. It uses a local quorum disk and means MSDTC will be allowed to come online on a single (statically defined) node.
Even though the same node is the only place MSDTC will ever come online this is still a clustered resource, meaning a call from a passive node or active node to use MSDTC should work.
In order to try such a workaround, you should create a new cluster group. Within this cluster group create a regular IP Address and Network Name Resource.
The next step is to create a Local Quorum resource, the wizard to undertake this will present you the option of which nodes this resource can be used on. Ensure you select only the one node (e.g. Node A). Once completed then a “Distributed Transaction Coordinator” resource should be created and again only be allow to come online on the same single node (e.g. Node A). The dependency of this final resource should be the three resource named above. If this has been done correctly, you will arrive at drop down box where you will be given the drives available for the MSDTC log file; the local quorum should be listed.
(I must re-iterate that in the above description MSDTC will only come online on Node A, however can be utilised by other cluster nodes when Node A is online. If Node A goes offline or fails then MSDTC would not move to another node and MSDTC would not be available until Node A is back up and running.)