I am currently working on a BizTalk project for a big customer in the healthcare area. When I joined the team, the BizTalk environments, up to the production system, where already up and running. It was a relative simple architecture with 2 BizTalk Nodes working in a group and a SQL Failover Cluster serving as the database engine. After we started to elaborate the requirements of the targeted solutions, it turned out that we will need some components which require special attention when you design your BizTalk architecture. I am sure everybody who knows BizTalk, will also know the components I am talking about: FTP Receive Adapter and MSMQ Receive Adapter. This adapter are not allowed to run on more than one server at a time. So we had to communicate this to the customer and he became very unhappy when be began to talk about an additional BizTalk cluster to host this services. It was not acceptable for him to order more servers and BizTalk licenses, so we began to elaborate and cost saving architecture which can server all of our needs. In this post I want to present the resulting architecture.
As you can see in the picture below, we decided to use a combination of clustering and BizTalk Groups to get the most flexible architecture possible with only two BizTalk nodes. Basically, the two nodes are in a Windows Server Cluster. Only those BizTalk hosts which runs FTP, MSMQ, MLLP or ordered delivery file adapters run within a cluster. All other hosts use the standard BizTalk Server load balancing mechanism to maximize throughput.
To be able to distribute the workload as flexible as possible, we planned a cluster group for each type of adapter (FTP, MSMQ, MLLP, ordered delivery file). This allows us to distribute the incoming workload on both BizTalk server nodes. Each cluster group must also hosts MSDTC so that a failure in MSDTC will also cause a failover of the corresponding BizTalk resource. MSDTC must also run locally on each server, so that all BizTalk hosts not running within a cluster group can use this local running version.
Please be aware that it is not possible to use Windows Network Load Balancing, when the BizTalk Servers are clustered. If you have a scenario where the BizTalk hosts services which should be accessed from outside (web services, http endpoints), you have to use an external load balancer. Windows load balancing is not supported when the servers are in a Windows cluster.
The BizTalk databases are hosted on a SQL Server cluster. We also use this cluster to host Enterprise Single Sign-On and MSDTC. There are multiple cluster groups in this cluster. One is dedicated to the BizTalk databases. MSDTC and SSO runs in one cluster group.