Azure
The reliability requirements are the same on every cloud. What differs is the name of the tier that satisfies each one and the command that checks it. This page carries the Azure answers.
Verifying A Region
Run these against every region you intend to use, and compare the output. Zone support and GPU availability vary between regions of the same geography.
# Availability zones offered for virtual machines.
# An empty result means the region offers none.
az vm list-skus --location <region> --resource-type virtualMachines \
--query "[0].locationInfo[0].zones" -o tsv
# GPU families offered in the region
az vm list-skus --location <region> --resource-type virtualMachines \
--query "[?starts_with(name,'Standard_N')].name" -o tsv | sort -u
# Current quota and usage
az vm list-usage --location <region> -o table
Tiers That Carry High Availability
| Requirement | Azure service | What satisfies it |
|---|---|---|
| PostgreSQL with high availability and read replicas | Azure Database for PostgreSQL Flexible Server | General Purpose or Memory Optimized. Burstable supports neither, at any size |
| Zone-redundant PostgreSQL | Same | Zone-redundant high availability, which places the standby in a different zone |
| Cross-region PostgreSQL standby | Same | A cross-region read replica with a virtual endpoint. The endpoint follows promotion, so the connection string does not change |
| Redis with high availability | Azure Managed Redis | High availability enabled. Persistence depends on it |
| Zone-redundant block storage | Azure managed disks | A zone-redundant storage class. StandardSSD_LRS and Premium_LRS are zonal, and pin any pod that mounts them to one zone |
| Zone-redundant object storage | Azure Storage | ZRS or GZRS |
Settings That Cannot Be Changed Later
| Component | Setting | Consequence |
|---|---|---|
| Node pools | Availability zones | Assignment is create-time only. Changing zones means a new pool and a workload migration |
| PostgreSQL | Compute tier | Burstable can never gain high availability or read replicas |
| PostgreSQL | Geo-redundant backup | Can only be enabled when the server is created |
| Redis | High availability | Can be enabled on a running instance and never disabled |
Paired Regions
Many Azure regions have a designated pair, and some services use that relationship to replicate automatically. Newer regions are not paired.
A pair is not required. A multi-region deployment works between any two regions, but where the pairing does not exist you supply the replication yourself instead of inheriting it from a service default. Choose the second region on availability zones, GPU availability and data residency, then check whether it happens to be paired.