BizTalk Server 2004 provides great flexibility in addressing high availability because you can strategically dedicate logical hosts to run specific areas of functionality such as receiving and sending messages or processing orchestrations.
A BizTalk Host is a collection of BizTalk Server items such as adapter handlers, receive locations (including pipelines), and orchestrations. You typically group in a host items that have similar scale properties.
After you create a host (a logical container), you can add physical BizTalk Server computers (host instances) to the host. For each host, you can have only one instance of a particular BizTalk Server computer. However, you can have instances of a particular host on one or more computers, and you can have instances of different hosts on a particular computer.
Items that are contained in BizTalk Hosts can perform the following functions:
-
Receiving. These items do the initial processing of messages after they are picked up in a receive location. When a host contains a receiving item, such as a receive location or pipeline, it acts as a security boundary, and the message decoding and decrypting occurs in a pipeline within the host.
-
Sending. These items do the final processing of messages before they are sent out to the send port. When a host contains a sending item, such as a send port or pipeline, the host acts as a security boundary, and the message signing and encryption occurs in a pipeline within the host.
-
Processing. These items process messages based on the instructions in an orchestration.
One BizTalk Host can contain items that receive, send, and process messages. We recommend that you create different hosts for each function to create security boundaries and for easier management and scalability. In particular, we recommend that you use different hosts for processing and for receive/send operations, and that you separate trusted and non-trusted items.
For example, if you receive one message, run an orchestration, and send ten messages, you want to separate the receive and send functionality into two separate hosts because the send items will have ten times more traffic than the receive items. If you receive one message, run an orchestration, and send one message, you can think of these items as a unit of work and group them into one single host. Alternatively, you can separate them into three different hosts to increase performance and flexibility, although this also increases the management cost.
For more information about hosts and host instances, see "Managing BizTalk Hosts and Host Instances" in BizTalk Server 2004 Help (http://go.microsoft.com/fwlink/?LinkId=32936).
To provide high availability for BizTalk Hosts, you must have two or more host instances for each host in your environment (on two or more computers). By having more than one host instance for each host you make sure that if one host instance becomes unavailable, the other computers that are running instances of the same host can resume the functions of the problematic or failed host instance, and that the overall system can continue performing with minimal disruption.
Message Persistence
BizTalk Server 2004 relies heavily on SQL Server 2000 for high availability because every host involved in BizTalk Server 2004 saves messages to the MessageBox database. For example, when BizTalk Server 2004 receives an incoming message, the receive host persists it to the MessageBox database before other hosts retrieve the message for orchestration processing and sending.
If your BizTalk Server solution involves orchestration, BizTalk Server routes the message to the host that executes the business process (processing host), and saves the message to the MessageBox database after the orchestration finishes. The sending host then retrieves the message from the database before sending it to the external application through the appropriate send adapter.
Separating the Host and Database Functions
Because BizTalk Server 2004 separates the data from the hosts that process the data, one step that you can take to create a highly available environment is to separate the host functions (sending, receiving, and processing) that occur in BizTalk Server 2004 from the database functions that occur in SQL Server 2000. By separating these functions, you can independently scale the processing, sending, and receiving hosts and the databases that store the data. The runtime and database layers are related, that is, if you increase the number of BizTalk Server computers you probably have to increase the number of computers that are running SQL Server. However, there is no direct relationship between the database layer and the BizTalk layer. They are two independent layers and you can scale them out separately.
What you must do to make the hosts highly available is different from what you must do to make the databases highly available. The following sections explain what you must do to make the receiving, sending, and processing hosts highly available. For more information about how to make the database layer highly available, see "Architecture for BizTalk Server 2004 Databases" later in this document.
For deployments where BizTalk Server processes more than SQL Server processes, you can configure multiple BizTalk Server computers that use the same computer that is running SQL Server. This configuration uses the resources available on each computer. For example, if CPU or memory use runs high (more than 75 percent) on the BizTalk Server computer but runs low (less than 25 percent) on the computer that is running SQL Server, you can include additional BizTalk Server computers to distribute the workload while raising the resource utilization on the computer that is running SQL Server.