A lot of people with whom I talked about Biztalk Server HA, I figured out had mistook High Availability with Multiple Message Boxes. So I just thought about blogging about it.
Multiple Message Boxes DO NOT ensure High Availability for a Biztalk Server. High Availability for a Biztalk Server is of course ensured by the highly available databases on which Biztalk is dependant on. In effect, ensuring HA for Biztalk means you have to first ensure that the underlying SQL Servers are highly available.
Availability needs to be ensured for ALL the Biztalk Server databases. If you decide to scale out the SQL Server layer, then it is imperative that all the databases are properly clustered. Windows Server Clustering can be leveraged for clustering the SQL Server.
For a minimum High Availability configuration of Biztalk, you would need to have a minimum of 2 Biztalk Servers grouped together with the SQL Server deployed on a separate machine. The SQL Server should also be clustered for high availability.
Also, once we start considering the High Availability for a Biztalk Solution, we need to consider several other factors about the transports that Biztalk relies on. Like for example, if you are using File Adapters, you need to ensure that the file system is clustered. Or if the Biztalk Orchestrations are being exposed as web services, then the frontending IIS needs to be load-balanced with NLB. The overall availability of all the components of the solution would actually contribute to the availability of the entire Biztalk solution.
As regards the multiple message boxes, they would be available only to distribute the messages that are flowing within the Biztalk and reduce the load on a single database. However, even if we have multiple message boxes in place, all the databases will in turn need to be clustered to ensure High Availability.
Summing it up, using Multiple Message Boxes would not ensure High Availability for any Biztalk solution. When thinking about HA for a Biztalk solution its not just about Biztalk runtime or the SQL Server. You would also need to consider all the dependant components of the solution.