When deploying a FlashGrid Cluster with two RAC nodes across Availability Zones, database performance can be optimized by placing the database nodes in AZs that have the lowest inter-AZ network latency between them. This will help to minimize the latency of storage and Cache Fusion data transfers between the database nodes.
Azure provides a guarantee that inter-AZ latency is 2ms or lower, however the actual latency between AZs can vary significantly. The example below shows the variation in latency between AZs for West US 3 region:
In case of a 2-node RAC cluster, the above latency graph suggests a significant benefit from deploying the database nodes to Zones B and C, with the quorum node in Zone A. The higher latency between the quorum node and the database nodes has no impact on database performance.
FlashGrid measured the latencies between availability zones in all Azure regions. This article provides the measurement results for your reference.
How Availability Zones are allocated to an Azure Subscription
Important! You must perform your own latency measurements to confirm actual latencies between availability zones in each of your Azure subscriptions.
Please consult with FlashGrid Support team when carrying out this testing to confirm results.
Azure maps physical Availability Zones randomly to the Availability Zone numbers 1, 2, 3 for each Azure subscription. The FlashGrid measurements in this document are represented by "Zone A", "Zone B" and "Zone C" and can be used for reference only.
As of October 2022, there are no API or other published methods to identify which physical AZs are assigned to your Availablity Zone numbers.
If using two or more subscriptions under one Azure account, they are likely to map to different AZ's - you can compare the AZ allocations between two subscriptions using the dedicated ARM API called checkZonePeers.
How to measure inter-AZ latencies in your subscription
- Create a Resource Group in the region
- Deploy a server to each AZ - use a common operating system (we used UbuntuLTS) on similar size instances (we used Standard_DS1_v2).
- Enable Accelerated Networking on the network interface
- Run a ping test between each of the servers (50 pings) and collect the rtt min result from each test. Do this in both directions between each pair of servers, and complete the table below
AZ Zone A Zone B Zone C Zone A - A→B A→C Zone B B→A - B→C Zone C C→A C→B - - Average the results for the two directions in each AZ pair:
- A↔B : X ms
- A↔C : Y ms
- B↔C : Z ms
Selecting optimal AZ assignment when deploying a FlashGrid Cluster
Once you have measured the latency between the different instances, determine which pair of AZs has the lowest latency. When deploying your cluster using the FlashGrid Launcher, select that AZ pair for the database nodes.
For instance, if Zone 2 and Zone 3 have the lowest inter-AZ latency, then you should place the two database nodes in AZ 2 and 3, and the quorum node in AZ 1 as demonstrated below:
Inter-AZ latency measurements by region
FlashGrid measured the following latencies between Azure AZs. The list below includes all Azure regions that supported AZs at the time of publication.
As mentioned above, there are no API or other published methods for identifying which physical AZs are assigned to Availablity Zone names in your Azure subscription. FlashGrid measurements in this document are therefore represented by "Zone A", "Zone B" and "Zone C".
Do not use results below to deploy your environment. You must collect your own data. Please consult with FlashGrid Support when using this method to determine optimum placement.
australiaeast |
Zone A ⇿ Zone B = 1.216ms Zone A ⇿ Zone C = 1.169ms Zone B ⇿ Zone C = 1.098ms |
brazilsouth |
Zone A ⇿ Zone B = 1.212ms Zone A ⇿ Zone C = 1.207ms Zone B ⇿ Zone C = 1.100ms |
canadacentral |
Zone A ⇿ Zone B = 1.838ms Zone A ⇿ Zone C = 1.629ms Zone B ⇿ Zone C = 1.844ms |
centralindia |
Zone A ⇿ Zone B = 1.079ms Zone A ⇿ Zone C = 1.026ms Zone B ⇿ Zone C = 1.071ms |
centralus |
Zone A ⇿ Zone B = 1.051ms Zone A ⇿ Zone C = 1.200ms Zone B ⇿ Zone C = 1.000ms |
eastasia |
Zone A ⇿ Zone B = 1.115ms Zone A ⇿ Zone C = 1.553ms Zone B ⇿ Zone C = 1.348ms |
eastus |
Zone A ⇿ Zone B = 1.795ms Zone A ⇿ Zone C = 1.815ms Zone B ⇿ Zone C = 1.167ms |
eastus2 |
Zone A ⇿ Zone B = 0.823ms Zone A ⇿ Zone C = 0.655ms Zone B ⇿ Zone C = 0.796ms |
francecentral |
Zone A ⇿ Zone B = 1.458ms Zone A ⇿ Zone C = 1.993ms Zone B ⇿ Zone C = 1.432ms |
germanywestcentral |
Zone A ⇿ Zone B = 0.923ms Zone A ⇿ Zone C = 1.152ms Zone B ⇿ Zone C = 1.082ms |
japaneast |
Zone A ⇿ Zone B = 1.756ms Zone A ⇿ Zone C = 1.458ms Zone B ⇿ Zone C = 1.234ms |
koreacentral |
Zone A ⇿ Zone B = 1.294ms Zone A ⇿ Zone C = 1.325ms Zone B ⇿ Zone C = 1.118ms |
northeurope |
Zone A ⇿ Zone B = 0.994ms Zone A ⇿ Zone C = 0.661ms Zone B ⇿ Zone C = 0.970ms |
norwayeast |
Zone A ⇿ Zone B = 1.328ms Zone A ⇿ Zone C = 1.205ms Zone B ⇿ Zone C = 1.442ms |
qatarcentral |
Zone A ⇿ Zone B = 1.671ms Zone A ⇿ Zone C = 1.426ms Zone B ⇿ Zone C = 1.235ms |
southafricanorth |
Zone A ⇿ Zone B = 1.571ms Zone A ⇿ Zone C = 1.291ms Zone B ⇿ Zone C = 1.043ms |
southcentralus |
Zone A ⇿ Zone B = 1.088ms Zone A ⇿ Zone C = 0.897ms Zone B ⇿ Zone C = 1.401ms |
southeastasia |
Zone A ⇿ Zone B = 1.179ms Zone A ⇿ Zone C = 1.066ms Zone B ⇿ Zone C = 1.087ms |
swedencentral |
Zone A ⇿ Zone B = 0.960ms Zone A ⇿ Zone C = 0.940ms Zone B ⇿ Zone C = 1.051ms |
switzerlandnorth |
Zone A ⇿ Zone B = 1.065ms Zone A ⇿ Zone C = 0.768ms Zone B ⇿ Zone C = 1.016ms |
uaenorth |
Zone A ⇿ Zone B = 1.582ms Zone A ⇿ Zone C = 1.184ms Zone B ⇿ Zone C = 0.921ms |
uksouth |
Zone A ⇿ Zone B = 1.064ms Zone A ⇿ Zone C = 0.851ms Zone B ⇿ Zone C = 0.671ms |
westeurope |
Zone A ⇿ Zone B = 0.647ms Zone A ⇿ Zone C = 1.852ms Zone B ⇿ Zone C = 1.849ms |
westus2 |
Zone A ⇿ Zone B = 0.744ms Zone A ⇿ Zone C = 0.901ms Zone B ⇿ Zone C = 0.795ms |
westus3 |
Zone A ⇿ Zone B = 0.965ms Zone A ⇿ Zone C = 0.978ms Zone B ⇿ Zone C = 0.683ms |