Azure VM High Availability ? (Part-2 : Availability Set)

Aammir Mirza
5 min readSep 15, 2023

What is Availability in Azure ?

In Microsoft Azure, availability refers to the ability of a service, application, or resource to be accessible and operational when needed. It is a critical aspect of cloud computing that ensures your systems are reliable and accessible to users, even in the face of hardware failures, software updates, or other unexpected issues. Azure offers various services and features to enhance availability.

Availability sets ensure high availability for Virtual Machines (VMs) in Azure. They isolate VMs on separate physical servers, storage units, compute racks, and network switches within a datacenter in an Azure Region. A group of two or more VMs in the same Data Center forms an Availability Set, offering a 99.95% SLA. For instance, with 3 VMs in an Availability Set, if one set of resources fails, the other 2 continue running, maintaining overall performance. However, this availability is limited to a single datacenter in one region. It provides redundancy by spanning VMs across update domains and fault domains, reducing downtime to approximately 22 minutes per month compared to single VM deployments. Availability Sets are exclusive to VMs and cannot be used with other Azure resources. Once created, they cannot be modified or transferred.

Types of Availability Sets:

  • Fault Domain: It denotes a cluster of VMs that share common power sources and identical networks.
  • Updated Domain: It denotes a group of Virtual Machines that simultaneously accomplish activities like reboot, maintenance, and update. If you want to obtain maximum availability, you need to deploy VMs across multiple Fault Domains.

The following table shows availability (%) as per the VM instance in Azure:

Single VM with premium SSD 99.9% Availability.

Single VM with standard SSD 99.5% Availability.

Single VM with standard HDD 95% Availability.

Create 2 VM instances in the same Availability set 99.95% Availability.

Note: 99.99% availability is also known as four 9’s availability

How to configure an Availability Set?

An Availability Set can only be configured when you deploy a new VM. You can’t add VM to an existing Availability Set. It is straightforward to configure an Availability Zone from the Azure Portal. All you have to do is choose the number of Zones that the VMs would use.

Scale Set vs Availability Set, Differences:

A VM Scale Set comprises identically configured VMs distributed across fault domains, effectively forming an implicit availability set with 5 fault domains. On the other hand, an Availability Set includes distinct VMs with unique properties and names but still spans fault domains. This design minimizes the risk of losing all VMs due to a hardware failure within a rack or host.

The uniformity of VMs in a Scale Set simplifies adding or removing VMs without jeopardizing availability, facilitating tasks like autoscaling, system updates, and maintenance. VM Scale Sets are particularly valuable for cloud architectures requiring large numbers of identical VMs.

In contrast, Availability Sets are used when predictable workloads demand protection against downtime. Deploying two VMs in an Availability Set ensures at least one VM remains operational at all times, supported by a load balancer for traffic redirection.

Scale Sets consist of 5 update domains and 5 fault domains per placement group, automatically allocated during scaling. Azure support can adjust these defaults if necessary. Conversely, each Availability Set offers 5 update domains and 3 fault domains for fault tolerance and reliability.

Things to know about availability sets

Let’s review some characteristics of availability sets.

  • All virtual machines in an availability set should perform the identical set of functionalities.
  • All virtual machines in an availability set should have the same software installed.
  • Azure ensures that virtual machines in an availability set run across multiple physical servers, compute racks, storage units, and network switches.
  • If a hardware or Azure software failure occurs, only a subset of the virtual machines in the availability set are affected. Your application stays up and continues to be available to your customers.
  • You can create a virtual machine and an availability set at the same time.
  • A virtual machine can only be added to an availability set when the virtual machine is created. To change the availability set for a virtual machine, you need to delete and then recreate the virtual machine.
  • You can build availability sets by using the Azure portal, Azure Resource Manager (ARM) templates, scripting, or API tools.
  • Microsoft provides robust Service Level Agreements (SLAs) for Azure virtual machines and availability sets. For details, see SLA for Azure Virtual Machines.

Things to consider when using availability sets

Availability sets are an essential capability when you want to build reliable cloud solutions. In your planning for availability sets, keep the following general principles in mind:

  • Consider redundancy. To achieve redundancy in your configuration, place multiple virtual machines in an availability set.
  • Consider separation of application tiers. Each application tier exercised in your configuration should be located in a separate availability set. The separation helps to mitigate single point of failure on all machines.
  • Consider load balancing. For high availability and network performance, create a load-balanced availability set by using Azure Load Balancer. Load Balancer distributes incoming traffic across working instances of services that are defined in your load-balanced availability set.
  • Consider managed disks. You can use Azure managed disks with your Azure virtual machines in availability sets for block-level storage.

--

--

Aammir Mirza

Cloud Architect with 12 years of experience in managing cloud infrastructure and automation, integrating Azure cloud-based infra components