One of the most common BizTalk architectures is as follows: With this set up, BizTalk server is deployed using a high availability configuration that will work for most of cases where the environment is receiving information using, for instance, the WCF http binding adapter. The NLB (hardware or software) is spreading the requests between both BizTalk servers in the group. For the database layer, most of customers provide high availability setting up an MCS cluster (virtual or physical) and typically they also provide HA for the SQL Server Agent Service (or at least they must) , action that opens an interesting option to solve the most common problem when using the FTP BizTalk receiving adapter
$ServiceName = "BTSSvc`$BizTalkServerApplication" $ServerList =@("ServerA","ServerB","ServerC","ServerD") $ServerStatusList=@(0,0,0,0) #This is the Server Status List. By status here we refer to the status of the service in all of the Servers that are part of the $ServerList array. The number of items here should be the same than in the $ServerList array. $DefaultServer = 1 #Change this parameter if you want a different default server. This will be the position in the $ServerList array (So zero, for the first server). The script will know which server should be used as the Default one in the HA configuration. So it will always try to start the service in this Server First. $MoreThanOneServiceActive= 0 #If there are more than one service active, we change this to 1, as the objective of this script is to ensure only one instance of the service is running across all the Servers in $ServerList. $LogFilePath="C:\Logs\PowerShellLog.log" #the Script will be logging all the information to the file specified here.
$ServiceName = "BTSSvc`$BizTalkServerApplication"
$ServerList =@("ServerA","ServerB","ServerC","ServerD")
$ServerStatusList=@(0,0,0,0) #This is the Server Status List. By status here we refer to the status of the service in all of the Servers that are part of the $ServerList array. The number of items here should be the same than in the $ServerList array.
$DefaultServer = 1 #Change this parameter if you want a different default server. This will be the position in the $ServerList array (So zero, for the first server). The script will know which server should be used as the Default one in the HA configuration. So it will always try to start the service in this Server First.
$MoreThanOneServiceActive= 0 #If there are more than one service active, we change this to 1, as the objective of this script is to ensure only one instance of the service is running across all the Servers in $ServerList.
$LogFilePath="C:\Logs\PowerShellLog.log" #the Script will be logging all the information to the file specified here.
After you setup all parameters within the code, you can create now the SQL Server agent job that will call the script. After changes, your architecture would look something similar to the following diagram:
You can download the code from here (MSDN Code Gallery)
Another important place to find an extensive amount of BizTalk related articles is the TechNet Wiki itself. The best entry point is BizTalk Server Resources on the TechNet Wiki.