When creating a VM in Azure you have two options to choose from either create an Availability set or have the machine create in an Availability zone.
The common thing when having your VM(s) in created in any one of Availability set or Availability zone you increase the SLA provided by Azure for their uptime.
A VM with managed disk has an SLA of 99.9%.
A set of 2 or more VMs in an Availability set has 99.95% SLA
A set of 2 or more VMs in different Availability zone has a SLA of 99.99%
What are Availability Sets?
Inside an Azure Data Center, there are many servers linked together with network using network switches and using power supply. Let’s assume a hypothetical scenario where all the servers are using same power supply, network switch or any other hardware component. Now the failure of just a single device can bring down the whole data center and the obvious solution is using multiple different hardware to support a section of server racks. Now to remove the single point of failure Microsoft has divided there data centers into different Fault Domains, and servers in the same Fault Domain has the same hardware.
Also as Microsoft itself manages the health and upgrades of the hardware updating the system and rebooting of VMs is a common scenario, again for the obvious reasons all the servers are not rebooted at the same time, and the whole data center is divided into multiple Update Domains, and all the servers in the single Update Domain are updated at the same time leaving others untouched.
Availability Set is just about using the above mentioned Update Domain and Fault Domain. We can create an Availability set at the time of creating a VM or create it first and use it when creating a VM. In an Availability set we can configure how many Fault Domain and Update Domains do we need like below.
The important thing to note here is that using 2 Fault Domain and 5 Update Domain doesn’t mean 10/7 different domains. The possible division of Fault and Update Domain could be like, 1 Fault Domain is having the first 2 Update Domains and the 2nd Fault Domain is having the rest three Update domains.
Let’s assume we are creating 10 different VMs inside this AS, every Update domain will be having 2 VMs each and the next VM will be added to the Update Domain in which the 1st VM was added, so can be considered as Round-Robin method of allocation.
What are Availability Zones?
Availability Zones are completely different set of physical location inside a specific region, that is two different data center in a single region.
The benefit here is we are not just relying on Fault Domains or Update Domains in the same datacenter but are using a completely different datacenter which is in a different physical location.
For two VMs created in two different Availability Zones, Microsoft guarantees an uptime of 99.99%. And it makes sense as having both the data centers down the at the same time is highly unlikely.
As the above is showing at the time of creating a VM we decide the region for the VM and based upon the region we get the option of Availability Zones, as every region for Azure doesnt have multiple datacenters. So if you need to use Availability Zone make sure that the region you’ll be using even have the option of Availability Zones or not.
If you have chosen a region with the option, then you can choose 1, 2 or 3 as the Availability Zone for the 1st VM and allocate a different Availability Zone for the next VM.
Depending upon the region, your need of SLA and the architecture of your application you can choose either the Availability Set or the Availability Zone.