Blog Post

ITOps Talk Blog
3 MIN READ

Understanding Availability Sets and Availability Zones

techielass_ms's avatar
techielass_ms
Icon for Microsoft rankMicrosoft
Dec 17, 2020

When learning something new there are a lot of phrases, terms and theory to learn and when learning Azure the same is true. One of the things you should be aware of within Azure is the difference and use cases of Availability Zones and Availability Sets.

 

When we are architecting workloads we see availability is making sure the resources or workloads are there when you need them.

 

Virtual Machines in Azure

Within Azure when you spin up a virtual machine it gives you an availability of either 95%, 99.5% or 99.9% depending on how you configure your disks with that virtual machine.  When you think about it in monthly terms a 95% Service Level Agreement (SLA) allows for around one and half days downtime. For a lot of workload cases and organisations these availability numbers will be more than adequate.  If you need more then that’s where Availability Zone and Sets can help.

 

Availability Sets

An Availability Set  lets you spread your virtual machines across physical hardware in different fault domains and update domains, in one location. This reduces the risk of a hardware failure or update failure impacting the availability of all of your VMs at the same time. Fault domains share common storage as well as a power source and a network switch. An updated domain contains physical hardware that can be rebooted at the same time. Without visibility down at that hardware level, you can benefit from deploying your VMs into an Availability Set, to spread them across fault domains and update domains.

 

When you create your virtual machine you can specify the Availability Set, you can’t change it or move it in or out of an Availability Set after creation.  If you wanted to make changes you would need to start again and recreate the virtual machine.   And Availability Sets only apply to virtual machines, they can’t be used for any other type of resource within Azure.

 

Using an Availability Set takes the acceptable downtime to around 22 minutes a month, which is a vast improvement over a single virtual machine deployment. Note: While an availability set will decrease the risk of all of your VMs being unavailable at the same time, you will still need to architect your application or solution to fail over to non-impacted VMs for redundancy/business continuity.

 

Availability Zone

The next level of availability for your virtual machines within Azure is Availability Zones.  With Availability Zones utilised your acceptable downtime a month moves to less than 5 minutes as you’ve got a 99.99% SLA.

 

Availability Zone

 

With Availability Zones you are starting to use zone aware services. Your workload will be spread out across the different zones that make up an Azure region.  An Azure region is made up of multiple datacentres and each zone is made up of one or more datacentres.  Each datacentre is equipped with independent power, cooling and networking.

 

When do use them?

There can be a few deciding factors around Availability Zones versus Availability Sets, you should be thinking about these questions when designing your workloads in Azure:

 

  • Are Availability Zones available in the region I want to use? You can find out which regions support them and which services are support here.
  • What SLA or availability does this workload really need? Make sure you really understand the business needs versus the wants.  Each configuration will offer you the following:
    • 99.9% = Single VM (with Premium SSD or Ultra Disk)
    • 99.95% = Availability Set
    • 99.99% = Availability Zones

 

What about VMSS Flex?
Virtual Machine Scale Sets Flexible Orchestration offers high availability guarantees (up to 1000 VMs) by spreading VMs across fault domains in a region or within an Availability Zone. This enables you to scale out your application to handle increased load, while maintaining fault domain isolation. For more details on the difference between Availability Sets and VMSS Flex, visit A comparison of Flexible, Uniform, and availability sets.

 

Never Stop Learning

It can feel daunting trying to learn new terminology or technologies however never stop learning, if you learn something new each day, you’ll find it all adds up. And if you are looking to learn more core Azure architectural components, check out this free Microsoft Learn module.

 

Updated Mar 06, 2023
Version 2.0
  • This point: "Availability Sets takes the virtual machine and configures multiple copies of it. " is incorrect. We do not make multiple copies of the VM. We simply spread out your VMs across different Update and Fault domains (physical clusters) to ensure if one cluster went down, you would still have a VM up and running. 

     

    Please refer to our product documentation for more information: 

     

    Availability sets overview - Azure Virtual Machines | Microsoft Docs

    Regions and Availability Zones in Azure | Microsoft Docs

     

  • cchacon320's avatar
    cchacon320
    Copper Contributor

    I just want to understand for these scenarios

     

    1. I deploy a VM and NO Availability Zone  selected so where is my VM located? is there a special no Zone place where my VMs are located when no AZ is selected ( I know I need HA but not all people deploy with HA in mind)?

     

    2. An Azure Firewall (AF) is highly available my nature but what if I don't select any AZ since I did not select any AZ for my VMs and I don't want my AF in any specific zones?

     

    is my Azure Firewall still HA right? Having at least 2 instances? are my two AZ instances located in a no Zone location?

     

    3. And having all of them in no AZ or no AZ location I don't incur in any AZ charge for data traversing different AZ?right? Since I did not select any AZ so there is no AZ locations so there is not data traversing any AZ

     

    sorry I need to ask I cannot  make up my mind around this 

    Thanks a lot   

  • IntvPrime  : Availability Sets and VMSS are two completely different concepts. While the former aims at improving the SLA of VMs, by distributing them across Fault domains(to provide resilience in case of unplanned outage) and Update domain(to provide resilience in case of planned maintenance), the latter aims to provide scale-out or scale-in based on the utilization of the VMs in the pool. VMSS doesn't aims to improve the SLA of the VMs in the scale set. 

    This article aims at explaining how Availability sets and Availability zones aim to improve SLA using two very difference approaches.

  • IntvPrime's avatar
    IntvPrime
    Copper Contributor

    Why are you talking about Availability Sets instead of VM Scale Sets?