VMs Need Zone Resilience? Deploy Across Availability Zones

Published on:

CloudTrips needs two VMs that can remain available if one datacenter has a power, cooling, or network failure. Azure availability zones are physically separate locations within a region, with independent infrastructure.

This trip deploys one Ubuntu VM in Zone 1 and another in Zone 2 in West Europe. The VMs use private IP addresses only.

Compare Sets and Zones

Availability set Availability zones
Separates VMs across fault and update domains within a datacenter Separates VMs across datacenters within a region
Protects against localized hardware and maintenance events Also protects against a complete zone-level datacenter failure
Lower VM-to-VM latency Greater physical isolation
Azure chooses the fault domain You select or let Azure select the zone

For two or more VMs distributed across two or more zones, Azure provides a higher VM connectivity SLA than for availability sets. The application must still run redundantly on both VMs and use load balancing or failover.

Create the Resource Group and Network

Create:

Subscription: CloudTrips TEST
Resource group: rg-cloudtrips-zones-test-weu
Region: West Europe

Open Virtual networks > Create:

Name: vnet-cloudtrips-zones-test-weu
IPv4 address space: 10.84.0.0/16
Subnet: snet-servers
Subnet range: 10.84.1.0/24

Select Review + create > Create. A VNet and subnet are regional resources, so VMs in different zones can use the same subnet.

Create the Zone 1 VM

Open Virtual machines > Create > Azure virtual machine. Configure:

Resource group: rg-cloudtrips-zones-test-weu
Virtual machine name: vm-cloudtrips-zone01-test-weu
Region: West Europe
Availability options: Availability zone
Zone options: Self-selected zone
Availability zone: Zone 1
Security type: Trusted launch virtual machines
Image: Ubuntu Server 24.04 LTS - x64 Gen2
Size: Standard_D2als_v7
Authentication type: SSH public key
Username: azureuser
SSH public key source: Generate new key pair
Key pair name: sshkey-cloudtrips-zones-test-weu-01
Public inbound ports: None

The SSH key resource name must be unique. If that name already exists from an earlier attempt, select Use existing key stored in Azure or append a unique suffix such as your initials. Do not overwrite or expose an existing private key.

Use a Standard SSD LRS OS disk. On Networking, select vnet-cloudtrips-zones-test-weu and snet-servers, and set Public IP to None. Add the usual CloudTrips TEST tags and create the VM.

First VM Basics tab showing self-selected availability Zone 1

Create the Zone 2 VM

Repeat VM creation with:

Virtual machine name: vm-cloudtrips-zone02-test-weu
Availability options: Availability zone
Zone options: Self-selected zone
Availability zone: Zone 2
Size: Standard_D2alds_v6
SSH public key source: Use existing key stored in Azure
Stored key: sshkey-cloudtrips-zones-test-weu-01

Keep region, security type, image, disk, VNet, subnet, and tags the same. Do not create a public IP or inbound rule.

Second VM Basics tab showing self-selected availability Zone 2

Zone 1 uses Standard_D2als_v7, while Zone 2 uses the available Standard_D2alds_v6. Different sizes are acceptable for this placement test, but they can provide different CPU, memory, disk, and network performance. A production redundant tier should normally use the same or closely equivalent capacity in every zone.

Verify Zone Placement

Open Virtual machines and add or inspect the Availability zone column. Confirm:

vm-cloudtrips-zone01-test-weu: Zone 1
vm-cloudtrips-zone02-test-weu: Zone 2
Provisioning state: Succeeded for both
Status: Running for both

Virtual machines list showing the two VMs in Zones 1 and 2

Open each VM > Overview > Properties and verify its zone again. A VM’s zone cannot be changed after creation; moving it requires creating a VM in the target zone.

Understand the Remaining Design

Zone placement protects infrastructure, not the application by itself. A production design also needs:

  • The same healthy application on both VMs
  • A zone-redundant Standard Load Balancer or Application Gateway
  • Replicated or zone-resilient application data
  • Monitoring, health probes, and tested failover

Managed OS disks using LRS remain aligned with their VM’s zone. For data that must survive a zone failure independently, choose an appropriate zone-redundant data service or supported ZRS disk design.

Clean Up

Delete the dedicated resource group:

az group delete \
  --name rg-cloudtrips-zones-test-weu \
  --yes

Verify that az group exists --name rg-cloudtrips-zones-test-weu returns false.