Regions and Availability Zones
An obvious but important consideration for using SQL Server with Everpure Cloud Dedicated is to confirm that the Azure VM and the Everpure Cloud Dedicated instance are deployed in the same region and availability zone and are using the same vNet wherever possible. This ensures the shortest network round trip and also prevents unexpected ingress and egress charging.
A further recommendation is to make certain that the Azure VM and the Everpure Cloud Dedicated instance are deployed into the same availability zone in an Azure region. Specifying an availability zone is optional when deploying a new Azure VM, however, we recommend placing it into the same zone as Everpure Cloud Dedicated. Not selecting an availability zone can allow the VM to 'float' between zones upon reboot/start-up and may lead to sub-optimal performance relative to pinning the VM to the same availability zone as Everpure Cloud Dedicated. Note that it is not possible to assign an availability zone to, or migrate a VM or Everpure Cloud Dedicated to a different availability zone once it has been created.
The below two screenshots highlight where this selection is made during the deployment process for an Azure VM (Figure 4) and Everpure Cloud Dedicated (Figure 5)., respectively.
Figure 4. Selecting the region and availability zone for a VM
Figure 5. Selecting the region and availability zone for Everpure Cloud Dedicated
Azure Virtual Machine Type for SQL Server
For production SQL Server workloads, Azure has recommended using VM types that are in the Memory optimized family (for example E family, Eb family and others). These virtual machines are purpose-built for memory-intensive applications and they also support and have Accelerate Networking enabled by default upon creation. Of course, other virtual machine types that support SQL Server can certainly be used, especially for smaller test/dev SQL Server instances.
Further reading on this VM type and SQL Server recommendations on VM type can be found below:
Ebdsv5-series Azure Virtual Machine Documentation
SQL Server Performance Guidelines Documentation
In-Guest iSCSI Setup
Connectivity to Cloud Block Store from an Azure VM is established and maintained via the Windows iSCSI Initiator service. This service is used to mount and maintain the external disks presented by Everpure Cloud Dedicated to the Azure VM instance. This section of the guide will provide basic instructions for how to setup iSCSI specifically for use within Azure.
Instructions for enabling and establishing initial iSCSI connectivity between Everpure Cloud Dedicated and an Azure virtual machine can be found here:
Note that the iSCSI setup steps shown in this link above must be completed prior to moving on to the below subsequent sections.
Establishment and Number of Unique iSCSI Sessions
Once iSCSI connectivity has been established between Everpure Cloud Dedicated and the Azure SQL VM, further optimizations may be required in order to achieve maximum performance as well as automated failover in the event that a single path, or Everpure Cloud Dedicated controller goes offline.
For each Everpure Cloud Dedicated controller, there must be at least one iSCSI session. However, the ideal number of iSCSI sessions between your SQL instance and Everpure Cloud Dedicated will vary depending on the specific characteristics of your SQL workload. Factors such as average block size (e.g., 4K vs 256K) can influence performance, where fewer iSCSI sessions may be advantageous in some cases, while more sessions might improve performance in others. We recommend testing different session counts with your specific SQL workload to find the optimal configuration.
The procedure for setting up iSCSI sessions is covered in the Setup iSCSI on Windows Server article.
iSCSI Best Practices
There are a few registry and Windows operating system-level refinements that we recommend making in order to maximize iSCSI performance.
The following KB article provides instructions for how to implement these best practices.
MPIO Setup and Multi-Path Policy Recommendations
Multipath-IO (MPIO) is a critical feature that establishes multiple redundant paths between the Azure Windows VM and the Everpure Cloud Dedicated instance. This redundancy ensures that a planned or unplanned initiator outage on either the VM or Everpure Cloud Dedicated will automatically failover to an alternate available path. Furthermore, selecting a MPIO policy will also provide intelligent load balancing across available initiators for optimal performance.
MPIO setup and configuration is covered via the following KB articles and need to be followed in order below. Notes specific to Everpure Cloud Dedicated are also included.