Azure Availability Sets

When you started architecting infrastructure using Azure platform, you should consider a couple of things such as VM Network, Availability Sets, Regional and High Availibility Set, Load Balancer … etc. Before to plan your VM in Azure.

In this article, you can get answer for titles and questions in below:

Types of Failure in Azure

What is Availability Set ?

What is Fault Domain and Update Domain ?

How to create Availability Set ?

Your virtual machine can occur three types of failures in Azure Environment. These are :

  • Unplanned Maintance : These interruptions happen when hardware or any platform components related. physical machines in the underlying infrastructure about to fail. For example; Azure can migrate your affected virtual machine to a new one.
  • Planned Maintance : These interruptions happen when planned maintance or periodic updates made by Microsfot or require rebooting VMs on the Azure infrastructure.
  • Unexpected Downtime: : Rarely occurs on the Azure Infrastructure.

Unplanned maintances down time usually longer than planned maintances. After both of unplanned maintance and planned maintance updates your virtual machines will be rebooted. And users cannot access applications during that time.

Availability Set

Availability sets offer some protection against unplanned maintenance for your Azure Resource Manager assets. When you placed your VMs in an Availability Set, they are automatically isolated across multiple hardware nodes in a cluster.
That’s mean azure will place your VMs that are created within the availability set on separate physical servers, compute racks, storage units, and network switches.
Even hardware or any components failure happens in Azure after placed your virtual machine across multiple hardware nodes, only a sub-set of your VMs are affected. Your overall solution is safe in working status. Availability set ensures redundancy by spreading over multiple fault domains and update domains for VMs. If you want to leverage 99.95% SLA from Microsoft, you should place your VMs inside Availability Set except your virtual machines which have premium storage.

When placed virtual machines in an availability set, that is provides the virtual machines are spread over three fault domains and five update domains. But update domains can be increased to up to 20. For example, If you placed ten virtual machine in an availability set, they will spread over three fault domains. So If one of them failed, you will only lose 1/3 of virtual machines. Update domains are used during planned maintenance operations on the Azure Fabric. Microsoft doesn’t patch your VMs, but they have to update operating system that the hypervisors are running. Because of this, it will only take down one update domain at a time during these planned maintenance.

Update Domains vs. Fault Domain

VMs are periodically updated by Windows Azure. Updating a virtual machine, that machine reboots. Update Domains prevent virtual machines from updating same time related an application. When placed one more virtual machine in Availability Set, these virtual machines are placed different update domains by Windows Azure.

Fault Domains define unplanned maintenance that a group of WMs share common a hardware or physical failure such as a disk, power, network card … etc. same underlying infrastructure. You can think fault domains as a compute rack. This mean if any failure happens in shared system, all WMs will influenced from same underlying infrastructure.

The diagram showing us difference between fault domain and update domain below :

Picure 1: Difference Between Fault Domain and Update Domain ( quoted from Technet )

Creating An Availability Set

You have three options to create an Availability Set :

  • Create an availability set and VM at the same time in Azure Portal.
  • Create an availability set and use it while creating a new VM in Azure Portal.
  • Create an availability set with Powershell.

You can create an availability set when you create a new VM on Azure Portal. While creating new virtual machine also you can add your availability set in third step in creating vm steps like image in the below :

You should configure your fault domains size and update domains size when you create new availability set like image in the blow :

I have three fault domains if I add fourth VM, it will be placed in the same Fault Domains as the first VM by Azure. Also Azure distributed all VMs accross different Update Domains. One of importing things about availability sets, you can placed up to 100 VMs into each availability set.

Significiant Points Of Availability Sets

You should set one more VMs in same Availability Set for redundancy. So you will have %99.95 SLA.

You need to create virtual machines in the same resource group as the availability set.

You should placed application tiers in different Availability Sets. But you should placed servers which providing same function in same Availability Sets.

You can assign virtual machines to the availability set only during the creation of virtual machines. One virtual machine can only be in one availability set.

You should use Availability Set with load balancing where it can be used. Also Workload traffic should distribute between VMs in Availability Set from load balancing.