In order pro prove high availability at VM level in Azure, Microsoft provides a feature called “Availability Set”.
The more important thing, is that this availability set takes care of both planned and unplanned failures. In simple words, availability set is a logical grouping of two or more virtual machines. To define these planned and unplanned failures, availability set is divided into update domain and fault domains.
- Update domain: An update domain allows VMs to maintain availability during planned maintenance. Each update domain contains set of virtual machines and associated physical hardware that can be updated and rebooted at the same time. It allows Azure to perform incremental or rolling upgrades across a deployment. Once, you create an availability set then you can observe that there are five update domains by default set but you can configure up to twenty update domains.
- Fault domain: A fault domain allows VMs to maintain availability during unplanned hardware failures, network outages, power failures and software updates. Fault domain describes the datacenter level components such as network switches and power supply serving a single rack can become a single point of failure for one rack or multiple racks. To avoid these circumstance, VMs in an availability set can have at least two fault domains. Many Azure region only supports two fault domains while other Azure regions can have maximum three fault domains.
For example, following best practices in Azure, we will need to set and availability set for each tier of VMs. For example, in 3 tier application architecture create different availability sets for each tier.
In case we need to provide high availability of VMS, we will need to create multiple VMs in an availability set.
Other recommendation that we need to keep in mind is to attach a load balancer with availability sets. It helps to divide the load among the VMs in the same availability set.
Till next time!