You're a great admin... on-prem. Now, become a great admin in the cloud and prove it by passing the Microsoft Certified: Azure Administrator Associate exam!
High availability and fault tolerance ensure that Azure virtual machines and their workloads stay running even when hardware fails, maintenance occurs, or disasters happen. Azure offers three main strategies for this: availability zones, availability sets, and Virtual Machine Scale Sets (VMSS). Each strategy protects against different types of failures, and choosing the right one depends on how critical the workload is and what kind of failures you need to prepare for.
Availability zones are physically separate datacenters within an Azure region, each with its own power, cooling, and networking. When you deploy VMs across multiple zones, your application can fail over to another zone if one zone goes down, giving you up to 99.99% uptime. This is the highest level of protection Azure offers and works best for mission-critical workloads that cannot tolerate any downtime. There are two ways to use zones: zone-redundant deployments automatically spread resources across zones, while zonal deployments pin resources to a specific zone and require manual spreading for redundancy.
An availability set groups VMs together so Azure knows how your application is built and can distribute them intelligently across hardware. The set spreads VMs across fault domains (different physical racks with separate power and network) and update domains (groups that reboot together during maintenance). This design prevents a single hardware failure or a single maintenance update from taking down all your VMs at once. Availability sets give you 99.95% uptime and work well when you need ultra-low latency between VMs or when your region does not support availability zones.
Virtual Machine Scale Sets let you deploy and manage a group of load-balanced VMs that can automatically scale based on demand. Scale sets can be configured for zonal or zone-redundant deployments, and the flexible orchestration mode spreads VMs across fault domains and availability zones for better resilience. The automatic scaling feature adds or removes VMs based on rules you set, while the zone-balancing feature keeps VMs evenly distributed across zones.
For storage, Azure provides redundancy options that work alongside your VM deployment strategy. Locally Redundant Storage (LRS) replicates data three times within a single datacenter, while Zone-Redundant Storage (ZRS) replicates across three different availability zones to protect against datacenter failures. Geo-Redundant Storage (GRS) goes further by replicating to a distant secondary region for disaster recovery. Services like Azure Backup and Azure Site Recovery let you replicate VMs across zones or regions and practice failover so you are ready when outages happen.
To create VMs in availability zones, you specify which zones to deploy into when you create the virtual machine. Each zone is a separate physical location with its own infrastructure, so when you spread VMs across zones, a failure in one location does not affect the others. The Azure portal, Azure CLI, PowerShell, and Resource Manager templates all support specifying zones during VM creation.
Virtual Machine Scale Sets can be deployed in three ways. A zonal deployment puts all VMs in a single zone, giving you control over which zone hosts your instances. A zone-redundant deployment spreads VMs evenly across multiple zones automatically, which is ideal for production workloads that need high availability. When using flexible orchestration mode, you can control exactly how VMs are distributed across fault domains within each zone.
An availability set works differently because it keeps VMs in the same datacenter but on separate hardware. When you place VMs in an availability set, Azure automatically distributes them across different fault domains and update domains. Fault domains protect against hardware failures by separating VMs onto different racks, while update domains ensure that not all VMs restart at the same time during Azure's planned maintenance. This separation is what gives availability sets their reliability guarantee.
To create resources with availability zones using PowerShell, you specify multiple zones with the -Zone parameter. For example, setting -Zone "1", "2", "3" creates a zone-redundant deployment that spreads instances across three zones. The same principle applies when using Azure CLI or Resource Manager templates—you declare which zones to use, and Azure handles the distribution.
When planning VM deployments, start by deciding whether availability zones or availability sets better match your needs. Use zones when you need protection against entire datacenter failures and want the highest uptime SLA of 99.99%. Use sets when your region does not support zones, when you need extremely low network latency between VMs, or when 99.95% uptime meets your requirements. The choice affects not just availability but also network performance, since cross-zone traffic has slightly higher latency than same-datacenter traffic.
Inside an availability set, properly configuring fault domains and update domains is essential for resilience. Fault domains group VMs that share power and network infrastructure, so spreading VMs across multiple fault domains means a rack failure takes down only some of your instances. Update domains control when VMs reboot during maintenance—Azure never reboots all update domains at once, so having multiple update domains ensures your application stays available during updates. The general practice is to have at least two or three of each.
For storage, align managed disks with the fault domains of their parent VMs so the storage does not become a single point of failure. Using Zone-Redundant Storage (ZRS) for shared disks ensures the storage layer itself survives zone failures, which matters for clustered applications like SQL Server Always On availability groups. Locally Redundant Storage (LRS) works for less critical data since it protects only against hardware failures within one datacenter.
When deploying at scale, Virtual Machine Scale Sets with flexible orchestration provide automation and consistency. You define the configuration once, and the scale set creates and manages many VMs together. Automatic scaling rules adjust the VM count based on demand or schedules, while the default spreading behavior places instances across fault domains or zones to maintain availability. Automating deployments through Azure Resource Manager templates ensures every deployment follows the same pattern, reducing mistakes and making it easier to recreate your environment if needed.
Prepare and test your skills

Prepare and test your skills

Availability zones are physically separate datacenters within an Azure region, each with independent power, cooling, and networking, providing up to 99.99% uptime by allowing failover if one zone fails. Availability sets keep VMs in the same datacenter but distribute them across different fault domains (separate racks) and update domains (groups that reboot together during maintenance), providing up to 99.95% uptime and protecting against a single hardware failure or maintenance event.
Use availability zones when you need protection against entire datacenter failures and require the highest uptime SLA of 99.99%, especially for mission-critical workloads. Use availability sets when your region does not support zones, when you need extremely low network latency between VMs, or when 99.95% uptime meets your requirements.
A zone-redundant deployment automatically spreads VMs evenly across multiple availability zones, which is ideal for production workloads needing high availability. A zonal deployment puts all VMs in a single zone, giving you control over which specific zone hosts your instances.
Configure virtual machines with Premium SSDs and enable host caching.
Deploy virtual machines into a single Availability Set within a single datacenter.
Utilize Azure Site Recovery to replicate virtual machines to a paired Azure region.
Deploy virtual machines across multiple Availability Zones.
A company is deploying a critical, multi-tier application in an Azure region that supports Availability Zones.
The application requires maximum resilience against infrastructure failures, including individual hardware component failures within a datacenter and complete datacenter outages within the region. Additionally, the company needs to ensure that planned Azure maintenance activities do not cause a full application downtime.
Which Azure high availability strategy should be implemented for the application's virtual machines to meet these comprehensive requirements?