This blog is an extraction of the session “Setting up a highly available BizTalk Server in Azure” in the Integrate 2020 event presented by Samuel Kastberg, Senior Premier Field Engineer at Microsoft.
It gives you an overview of setting a highly available BizTalk Server in Azure using BizTalk2020 at a very high level. More and more it is common to install BizTalk environments in Azure. As especially Production environments require high availability, today Samuel gives guidance on HA related topics like network configuration, load balancing and alternatives for clustering SQL Server
Things we will focus on
- Focus on BizTalk Server 2020
- No consideration on moving to Azure Integration services
- Things that are different/ specific to Azure
When you are setting up the BizTalk server environment, we have lots of considerations. When it comes to Azure just as on-premises you have set of rules and it will vary on how your environment works, your requirements, organization policies, what kindly of policies were followed.
Here are some important aspects,
- Rules, requirements from Organizations
Set of Products what you are working
- BizTalk server
- Shared Storage
- Load balancer
- Network Security Group (NSG)
- Application Gateway
- ARM templates
- Scripting, e.g. PowerShell
- Resource Sizing
When it comes to Governance, it will be considered based on your organization’s flexibility.
- What set of policies and rules to be used?
- How the resources will work in Azure?
We need to determine first-hand with the owners or administrators of the corresponding Azure subscription. For Example,
- Who is the owner of different things?
- Who can perform different sets of actions?
And for resources, the following are the important aspects to be considered
- They will be placed in the Azure subscription under the resource groups.
- In order to organize the resources in the subscriptions, it will be different from business to business. For example, some customers have one subscription for everything and different subscriptions for different environments (Dev, QA, Production)
- This way it is easy for the admins or decision-makers to determine the privileges to be given for each environment.
- To organize the resources, it is important to device the plan like whether all the machines should be in the same resource group or hub (BizTalk Servers and SQL servers in different groups).
- And of course, who will be the owner of the resources is differs from customers to customers.
- Resource tagging is another important criterion where you need to tag the resources in order to identify different environments (Dev, QA, Production)
This is one of the essential criteria when you are working with Azure as the bill will be paid every month based on resource usage. Basically, a license in the Azure costs the difference between different products. Users will pay in advance for the resources or pay per usage. Purely, it depends on what kinds of enterprise you have with the Azure.
Tip: Azure pre-purchased License cost will be cheaper than when you pay as go.
Resource Provisioning is an essential task, you need to determine where you will organize your files and how to use it?
Security is another important aspect to be considered. You need to have your account, groups, and determine the access control between your Azure Active Directory and the hub with networking security.
Basically, BizTalk will access to different folders in the on-prem solutions. And, communicate with SQL servers, Services (Http, Https), and other infrastructure elements. To have a seamless connection, the proper plan needs to devise with your infrastructure team.
If we look at a little bit on the product side that is necessary to set up highly available here are some of the products SQL Server, MSMQ, BizTalk Server, MSDTC.
Here are some important aspects to be considered,
- Only IAAS is supported (the only version of SQL that supports SQL transactions)
- Licensing BYOL or pay as you go
- Backup BYOL or pay as you go
- Backups to Blob storage
Tip: In Azure, it is cheaper with blob storage than using the file.
SQL Server High Availability (HA)
- Availability Groups that own its own storage
- Failover Cluster instance (FCI)
- Shared Storage
- Shared Storage
- Storage spaces direct
- Licensing BYOL or pay as you go
BizTalk server HA
- Clustering for single instance hosts
- Enterprise SSO Master Secret Server
- Application gateway for incoming HTTP traffic
- Clustering and configure the Load Balancer
- Fixed port
- Use the same cluster role as SQL
- Shared storage
For the clustering,
- Networking, you must use a load balancer to route traffic.
- Shared storage (will see the alternative solutions).
Internal load balancer
Let’s see the structure of the Internal load balancer
There are two SKU Matters available as Basic and Standard for the load balancer. In the standard, there is always needed to have the network security group and the network card you select should be in standard SKU’s.
- The front end is the service address. It could be SQL, MSDTC, EntSSO, etc.,
- Backend pool is the virtual machines and address
- To identify which machine is the current owner of the service, the health probe should be configured. This way load balance will ping and check the currently available service.
Load Balancing Rules
It will bind the front and the backend.
Port mapping is taken place here to determine only one port to be configured.
The other parameter is the Cluster. The ProbePort parameter needs to be set as it will check the health of the load balancer.
This will be needed for clustering when you use Fail over clustering,
MSMQ, MSDTC. So, there are alternatives, storage spaces direct which is a software-defined storage solution that uses SMB3. The synchronization is happening for a number of VM’s that have two or more disks dedicated to the specific storage spaces. You can create disk areas that represent the clusters and used by the services. For MSDTC, It is only available for Windows 2019 and onwards.
Virtual machines are coming in different editions, that are optimized to handle different kinds of workloads on the size that matters. It is one of the important aspects that we must look into it,
Selected VM size/option
- Optimized for different workloads
- Size matters for disk speed
- Review what you need CPU/Memory
- Remember licensing – BYOL/Pay as you go
- Size matters, size of the disk, and VMS affects IOPS that can be reached.
- Measure with e.g. Diskspd
- Baseline with your current environment
- Compare with your Azure Disks
- MSDTC Supported configurations
- Storage Spaces Direct
- Azure Shared Disks
- Azure VM Storage Performance and Throttling
It was indeed a fantastic session by Samuel. I hope it gives you an overview of setting up a highly available BizTalk Server in Azure using BizTalk2020 at a very high level. Happy clustering!