What is Azure Availability Set?
Question
Answers
An Azure Availability Set is a logical grouping of Azure Virtual Machines designed to improve application availability by distributing VMs across different fault domains and update domains.
The primary objective is to reduce the probability that a localized hardware failure or platform maintenance event will take down all instances of an application simultaneously. Microsoft describes availability sets as a high-availability mechanism for Azure VMs, particularly useful in regions where Availability Zones aren't available.
How Does an Azure Availability Set Work?
Suppose an application has two virtual machines:
VM1 + VM2 → Same Availability Set
Azure distributes these VMs across different fault and update domains.
Fault Domains
A fault domain represents a group of VMs that share common physical infrastructure dependencies, such as power or networking components.
If one fault domain experiences a localized hardware failure, VMs in another fault domain can continue serving requests.
Update Domains
An update domain is used to control how Azure platform maintenance affects VMs.
Rather than restarting every VM in an availability set simultaneously, Azure groups VMs into update domains so that platform maintenance can be performed in a controlled manner.
Azure availability sets support up to 3 fault domains and 20 update domains, with these settings determined when the availability set is created.
Availability Set vs Availability Zone
This is an important architectural distinction.
| Feature | Availability Set | Availability Zone |
|---|---|---|
| Scope | Logical grouping within a region | Physically separate zones |
| Main protection | Hardware and maintenance failures | Datacenter-level failures |
| Fault isolation | Fault domains | Separate datacenters |
| Resilience | High | Higher |
| Typical use | VM redundancy where zones aren't suitable | Mission-critical workloads |
Microsoft currently recommends Virtual Machine Scale Sets with flexible orchestration for many high-availability scenarios, while Availability Zones provide stronger isolation than availability sets.
When Should You Use an Availability Set?
Availability Sets can be appropriate when:
- Your workload uses traditional Azure VMs.
- Availability Zones aren't available in the target region.
- You need redundancy between multiple VM instances.
- You want protection against localized hardware failures.
- Your application architecture requires closely located VMs.
For modern applications, architects should also evaluate Availability Zones, Virtual Machine Scale Sets, load balancers, managed databases, autoscaling, and disaster recovery rather than treating an availability set as a complete high-availability strategy.
Important Architecture Point
An Availability Set does not automatically make an application highly available.
For example:
Internet → Load Balancer → VM1 + VM2 → Database
The VMs might be distributed correctly, but if the database remains a single point of failure, the application can still experience an outage.
High availability must therefore be designed across the entire application architecture, not only the VM layer.