When deploying a FlashGrid Cluster to three or more Availability Zones in an AWS region, database performance can be optimized by placing database nodes in the 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.
Below is an example of latencies measured in the us-west-2 region (with four AZs). The shorter the distance between AZs, the lower the latency:
In this example, the latency graph would suggest:
- The lowest inter-AZ latency is between usw2-az1 & usw2-az3.
- For a 2-RAC node cluster, placing database nodes in these AZs (usw2-az1 & usw2-az3) will be optimal. The quorum node can be placed in any other AZ because it is not sensitive to network latency.
- For a 3-RAC node cluster, place the database nodes in the three AZs with the lowest connection latency (usw2-az1, usw2-az3 & usw2-az4). The quorum nodes can be placed in any two AZs.
Map AWS ZoneName to ZoneID for your Subscription
AWS maps the physical Availability Zones randomly to the Availability Zone names. The mapping is different for each AWS account. This approach helps to distribute resources across the Availability Zones in an AWS Region, instead of resources likely being concentrated in Availability Zone "a" for each Region.
As a result, the Availability Zone us-west-2a for your AWS account might not represent the same physical location as us-west-2a for a different AWS account. See AWS document Availability Zone IDs for your AWS resources for further information.
In the tables below, we use the physical Zone IDs. When reviewing the latency numbers, you must map the physical Zone IDs to the Availability Zone names in your AWS account. To determine the mapping for your account, review the AWS EC2 Dashboard for the region. Under Service Health, the zone mapping is displayed:
Alternatively, using the AWS CLI, you can run a query as follows:
% aws ec2 describe-availability-zones --output json --region us-west-2 | jq '.AvailabilityZones[] | "\(.ZoneName),\(.ZoneId)"'
"us-west-2a,usw2-az2"
"us-west-2b,usw2-az1"
"us-west-2c,usw2-az3"
"us-west-2d,usw2-az4"
Using the above example for the us-west-2 region, when deploying a 2-RAC node cluster with database nodes in usw2-az1 and usw2-az3, and quorum node in us2-az4, complete the table below as shown:
Node | ZoneID | Customer AZ | AZ |
racdb1 | usw2-az1 | us-west-2b | b |
racdb2 | usw2-az3 | us-west-2c | c |
quorum | usw2-az4 | us-west-2d | d |
On the Nodes page of the FlashGrid Launcher, enter AZ's as shown:
Inter-AZ latencies by region
FlashGrid measured the following inter-AZ latencies.
af-south-1 |
afs1-az1 ⇿ afs1-az2 = 0.752ms afs1-az1 ⇿ afs1-az3 = 0.506ms afs1-az2 ⇿ afs1-az3 = 0.575ms |
ap-east-1 |
ape1-az1 ⇿ ape1-az2 = 0.443ms ape1-az1 ⇿ ape1-az3 = 0.639ms ape1-az2 ⇿ ape1-az3 = 0.660ms |
ap-northeast-2 |
apne2-az1 ⇿ apne2-az2 = 0.715ms apne2-az1 ⇿ apne2-az3 = 0.990ms apne2-az1 ⇿ apne2-az4 = 0.791ms apne2-az2 ⇿ apne2-az3 = 1.167ms apne2-az2 ⇿ apne2-az4 = 0.925ms apne2-az3 ⇿ apne2-az4 = 0.608ms |
ap-northeast-3 |
apne3-az1 ⇿ apne3-az2 = 0.293ms apne3-az3 ⇿ apne3-az1 = 0.690ms apne3-az3 ⇿ apne3-az2 = 0.681ms |
ap-south-1 |
aps1-az1 ⇿ aps1-az2 = 0.329ms aps1-az1 ⇿ aps1-az3 = 0.496ms aps1-az3 ⇿ aps1-az2 = 0.674ms |
ap-south-2 |
aps2-az1 ⇿ aps2-az2 = 0.933ms aps2-az1 ⇿ aps2-az3 = 0.487ms aps2-az2 ⇿ aps2-az3 = 1.237ms |
ap-southeast-1 |
apse1-az1 ⇿ apse1-az2 = 0.745ms apse1-az1 ⇿ apse1-az3 = 0.659ms apse1-az2 ⇿ apse1-az3 = 0.454ms |
ap-southeast-2 |
apse2-az1 ⇿ apse2-az2 = 0.849ms apse2-az3 ⇿ apse2-az1 = 0.711ms apse2-az3 ⇿ apse2-az2 = 0.993ms |
ap-southeast-3 |
apse3-az1 ⇿ apse3-az2 = 0.664ms apse3-az1 ⇿ apse3-az3 = 0.456ms apse3-az2 ⇿ apse3-az3 = 0.414ms |
ap-southeast-4 |
apse4-az1 ⇿ apse4-az2 = 0.709ms apse4-az1 ⇿ apse4-az3 = 0.292ms apse4-az2 ⇿ apse4-az3 = 0.548ms |
ca-central-1 |
cac1-az1 ⇿ cac1-az2 = 0.409ms cac1-az1 ⇿ cac1-az4 = 0.907ms cac1-az2 ⇿ cac1-az4 = 1.167ms |
eu-central-1 |
euc1-az2 ⇿ euc1-az1 = 0.856ms euc1-az2 ⇿ euc1-az3 = 0.843ms euc1-az3 ⇿ euc1-az1 = 0.647ms |
eu-central-2 |
euc2-az1 ⇿ euc2-az2 = 1.135ms euc2-az1 ⇿ euc2-az3 = 0.678ms euc2-az2 ⇿ euc2-az3 = 0.698ms |
eu-north-1 |
eun1-az1 ⇿ eun1-az2 = 1.143ms eun1-az1 ⇿ eun1-az3 = 0.995ms eun1-az2 ⇿ eun1-az3 = 1.466ms |
eu-south-1 |
eus1-az1 ⇿ eus1-az2 = 1.036ms eus1-az1 ⇿ eus1-az3 = 0.562ms eus1-az2 ⇿ eus1-az3 = 1.175ms |
eu-south-2 |
eus2-az1 ⇿ eus2-az2 = 1.008ms eus2-az1 ⇿ eus2-az3 = 0.973ms eus2-az2 ⇿ eus2-az3 = 1.151ms |
eu-west-1 |
euw1-az1 ⇿ euw1-az2 = 0.744ms euw1-az3 ⇿ euw1-az1 = 0.837ms euw1-az3 ⇿ euw1-az2 = 0.402ms |
eu-west-2 |
euw2-az2 ⇿ euw2-az1 = 0.583ms euw2-az2 ⇿ euw2-az3 = 0.717ms euw2-az3 ⇿ euw2-az1 = 1.018ms |
eu-west-3 |
euw3-az1 ⇿ euw3-az2 = 1.030ms euw3-az1 ⇿ euw3-az3 = 0.895ms euw3-az2 ⇿ euw3-az3 = 1.003ms |
me-central-1 |
mec1-az1 ⇿ mec1-az2 = 0.903ms mec1-az1 ⇿ mec1-az3 = 1.843ms mec1-az2 ⇿ mec1-az3 = 1.135ms |
me-south-1 |
mes1-az1 ⇿ mes1-az2 = 0.442ms mes1-az1 ⇿ mes1-az3 = 0.397ms mes1-az2 ⇿ mes1-az3 = 0.392ms |
sa-east-1 |
sae1-az1 ⇿ sae1-az2 = 2.381ms sae1-az1 ⇿ sae1-az3 = 0.920ms sae1-az2 ⇿ sae1-az3 = 1.202ms |
us-east-1 |
use1-az1 ⇿ use1-az2 = 0.726ms use1-az1 ⇿ use1-az3 = 0.964ms use1-az1 ⇿ use1-az4 = 0.742ms use1-az1 ⇿ use1-az5 = 0.585ms use1-az2 ⇿ use1-az3 = 0.914ms use1-az2 ⇿ use1-az4 = 0.528ms use1-az2 ⇿ use1-az5 = 0.593ms use1-az3 ⇿ use1-az5 = 0.856ms use1-az4 ⇿ use1-az3 = 0.970ms use1-az4 ⇿ use1-az5 = 0.667ms use1-az6 ⇿ use1-az1 = 0.922ms use1-az6 ⇿ use1-az2 = 0.983ms use1-az6 ⇿ use1-az3 = 0.595ms use1-az6 ⇿ use1-az4 = 1.066ms use1-az6 ⇿ use1-az5 = 0.917ms |
us-east-2 |
use2-az1 ⇿ use2-az2 = 0.756ms use2-az1 ⇿ use2-az3 = 1.060ms use2-az2 ⇿ use2-az3 = 0.380ms |
us-west-1 |
usw1-az3 ⇿ usw1-az1 = 0.958ms |
us-west-2 |
usw2-az1 ⇿ usw2-az3 = 0.295ms usw2-az1 ⇿ usw2-az4 = 0.603ms usw2-az2 ⇿ usw2-az1 = 0.653ms usw2-az2 ⇿ usw2-az3 = 0.895ms usw2-az2 ⇿ usw2-az4 = 0.468ms usw2-az3 ⇿ usw2-az4 = 0.568ms |