Host clustering are recommended for adapters that requires a single host instance running at a time like FTP or POP3 to avoid duplicate messages while providing high availability.
Failure to implement this will result in either having to deal with duplicate messages or implementing manual processes for performing failover.
Due to the nature of some protocols it is impossible to guarantee high availability, scalability and failover. So we normally disable one of the host instances to prevent duplicate messages.
This only provides manual failover, so it is recommended to cluster the hosts where this adapters run. Windows Clustering will guarantee that at least one host instance is running and that no more than one is working.
Prerequisites:
- At least two BizTalk Servers in a BizTalk group as members of a Windows Server cluster.
- You must be logged on as a member of the BizTalk Administrators group to cluster or uncluster a host.
- A BizTalk Server must be configured as a node in a Windows Server failover cluster to run an instance of a clustered BizTalk host on the BizTalk Server
- You cannot fail over a clustered BizTalk host to a host instance that has the option Disable host instance from starting set.
When clustering a BizTalk host, ensure that the cluster group, clustered service or application that you are adding the host to contains a Network Name and IP Address resource as the Network Name resource is added as a dependency to the clustered BizTalk host. If these resources are not available, then the BizTalk host will not function correctly as a clustered resource.
Procedures to configure a BizTalk host as a cluster resource
- Ensure that you have created an instance of the host on every node in cluster group before adding the BizTalk host to that cluster group.
- Now you need to create a BizTalk host same way as you create for non-clustered Host.
- Once you have created all of the host instances, select the Host that you want to cluster, right mouse click and select “Cluster”.
- Select the cluster group that you would like to run the host in from the drop-down list of available cluster groups.
- As soon as a host is clustered, it is brought online and will begin processing documents for any adapter handlers or orchestrations that are configured to run in the host.
If you unconfigure a BizTalk server/cluster node that is listed as a possible owner of a clustered BizTalk host, the cluster resource for the host instance is taken offline in Windows Cluster.
If you need to unconfigure a BizTalk Server computer that is listed as a possible owner of a clustered BizTalk host without taking the cluster resource for the host instance offline, follow these steps:
- In the Windows Server Failover Cluster Management interface, fail over the clustered host to a BizTalk Server computer other than the BizTalk Server computer that you will unconfigure.
- In the BizTalk Server Administration console, select the instance of the clustered BizTalk host that corresponds to the BizTalk Server computer which is to be unconfigured.
- Delete the host instance. If prompted with an error choose the option to forcefully delete the host instance.
- Unconfigure BizTalk Server.
When a BizTalk host is configured as a clustered host, a corresponding cluster resource is created in the specified cluster resource group on the cluster.
BizTalk uses MSDTC for different communication and it’s therefor important that this is configured correctly, depending on the clustering method.
For active / passive we have to cluster the MSDTC.
But when it comes to an active / active cluster we need to make sure all active machines have their own versions of MSDTC running, it should not be a part of the cluster as a resources.
If you do have it as a resource you will end up with errors during configuration of BizTalk, these errors usually states problem with communication for different databases or services like analysis server or other elements during configuration that requires MSDTC.
If you have both non-clustered and clustered hosts, in a BizTalk group then you need to setup a clustered MSDTC resource for the clustered BizTalk hosts.
So as long as you want a clustered active/passive AND active/active you need to cluster MSDTC.
Resources:
https://msdn.microsoft.com/en-us/library/aa578376.aspx
http://kentweare.blogspot.in/2009/04/clustering-biztalk-hosts.html
http://biztalkadmin.com/biztalk-active-active-cluster-and-msdtc/
http://tjthompson5150.blogspot.in/2010/06/how-to-cluster-biztalks-msmq-receive.html
Gautam
Very good post. One question I do have is you statement “If you have both non-clustered and clustered hosts, in a BizTalk group then you need to setup a clustered MSDTC resource for the clustered BizTalk hosts”. I can’t find in any of the Microsoft documentation that states this.
I am also looking at this Microsoft document which states you do not have to cluster MSDTC https://docs.microsoft.com/en-gb/archive/blogs/alwaysonpro/msdtc-recommendations-on-sql-failover-cluster#Why-would-I-create-a-MSDTC-instance-for-each-SQL-Server-Instance
Regards
Stewart Joyce