If you are running a SQL Server Failover Cluster Instance on premises and looking to migrate to Azure, you might be a little intimidated. This architecture is a bit complex because it uses quite a few different technologies all working together. My goal is to help clarify the pieces and steps needed to build this out.
There is already a great article that walks through the configuration. It has links to supplemental information as well, so it's an excellent reference guide. There is, however, one thing it does not cover. It does not show how to configure a clustered MSDTC. In this article I will list the pieces required to make this work and give you a video walk through on the entire configuration. Read this article first to become familiar with the steps.
Storage Spaces Direct (S2D)
Cluster Shared Volumes
Create Virtual Machines
Must be in an Availability Set
Use Standard IPs for MSDTC
Have at least 2 data disks
Add Windows Failover Cluster Feature
Create Windows Failover Cluster
Create a witness if needed
Make sure data disk have no partitions
Enable Storage Spaces Direct (S2D)
Create volumes from S2D pool
Install SQL Server Failover Cluster Instance
Install a clustered MSDTC
Create an Internal Azure Load Balancer
Needs to be a Standard Load Balancer for MSDTC (VM IPs and Load Balancers must match SKUs)
Front end for SQL and one for the MSDTC
Health probe for SQL and the MSDTC
Load balancing rule for SQL and the MSDTC
Configure SQL IP for probe port
Configure MSDTC IP for probe port
To make a clustered MSDTC work in this architecture we need to make sure of a couple things. We need to use a Standard Load Balancer instead of a Basic Load Balancer. Since we have to use a Standard Load Balancer that means the IPs for our VMs also have to be Standard IPs. You can only add Basic IPs to a Basic Load Balancer and Standard IPs to a Standard Load Balancer.
The other requirement is the Windows version. The MSDTC did not support using a Cluster Shared Volume as its shared storage when Windows Server 2016 was released. Support for that was not introduced until Windows Server 2016 version 1709. Although the support was added to version 1709 and 1803, neither of those builds include the desktop experience (No GUI). In Windows Server 2019 we get both the Desktop Experience as well as support for the MSDTC to use Cluster Shared Volumes.
Configuration Walk Through
Here is a video where I walk through the entire build process of this architecture including both SQL and the MSDTC. Note that this is just for demonstration purposes and not following all best practices for building Windows Server Failover Clusters. For instance, I do not even configure a witness which you would absolutely do for a production build.