Azure Availability Zones on the cloud : one more step on resiliency
What a great news coming from Microsoft announcing the release of a great new feature currently in preview : Azure Availability Zones !
Ok but what is that?
Actually, it’s pretty simple. It’s a new feature that allows you to select, within a single region, in which datacenter you want your resources to be placed. Indeed, it allows higher availability and increased resiliency of your app. Microsoft says that « Availability Zones are fault-isolated locations within an Azure region, providing redundant power, cooling, and networking. Availability Zones allow customers to run mission-critical applications with higher availability and fault tolerance to datacenter failures ».
Before digging into the details, can you remind me what a Region, a Datacenter, a Availability Set and a Resource Group are?
- An Azure Region is a physical location of a Microsoft Datacenter. Today we count 36 regions : https://azure.microsoft.com/en-us/regions/
- A Datacenter is within a region and it’s totally separated from each other, have it’s own energy system, network and so forth…
- An Availability Set is on concept for providing high availability and resiliency for your VM’s : it’s composed of Fault Domain and Update / Upgrade domain
- Update / Upgrade Domain (UD): they define physical hardware that can be rebooted at the same time
- Fault Domain (FD): They define the group of VMs that share a common power source and network switch
- A Resource Group is simply a logical grouping of resources providing a better and easier managing : this is nothing to deal with resiliency
It’s good but what about the existing Azure Availability Set? I thought that it was designed to address that kind of problem?
However as we’ll see right now, the option for selecting a Azure Availability Set is no longer available once you’ve activated the Availability Zone feature in the Azure portal. We can suppose that this feature will no longer exist and be declared deprecated in the future. In addition, when a VM has been created in a Zone, we can see a message saying that Availability Sets are not available for zonal resources:
From my personal point of view, the Availability Zone will replace the Availability Sets which are, let’s be honest, a little tricky to understand. You have to be aware the concepts of Fault Domain and Update Domain and configure carefully the number of them. With the Zones, you don’t have to worry about how many Fault Domain you have to provision or calculate the number of Updates Domain within a Fault Domain : just set in which Zone you want to be and there you are! Thus, high availability and resiliency will be more easy to implement for our applications.
Moreover, the number of Zones is set by Microsoft and we don’t know yet how many Zones will be per Azure Region (or if the number will increase). However, Microsoft says that each availability Zones (in enabled regions) features a minimum of 3 zones, with each zone containing one or more datacenters.
Ok so let’s take a look!
First, you need to enable this feature from the Azure portal. Be aware because some prerequisites exists :
- today, only two regions provide this feature : East US 2 & West Europe
- the targeted services are Windows & Linux VM, zonal virtual machine scale set and managed disks
- for VM’s, the supported SKU’s are A2_V2, D2_V2, DS2_V2
- and it’s not production ready yet (so no SLA exists)
In order to activate the preview, sign in to Azure, and go to http://aka.ms/azenroll. You’ll find this screen :
A message says that you have to wait some time in order to use the functionality (in my experience, less than 1 hour).
Then let’s create a Windows VM. On the settings section, a new option is now available and allows you to choose on which Availability Zone you want your VM to be created (the first, second or third zone). Microsoft says that at least 3 zones will be available per region :
And voila, here are the informations you can see on the overview panel (I’ve selected the zone #3) :
I don’t find out any architecture map with the Zones but we can imagine a Load Balancer facing multiple VM’s installed on différents Zones. More details to come.
Availability Zones offers an easier way to provide high availability and resiliency for your VM’s or your Attached Disks : no more concepts of Update and Fault Domain to handle. However, this feature is still in preview, it’s not production ready and it’s not available in many regions. We are waiting for more details and some guidance architecture in the next weeks. In addition, I did not find out if Microsoft will definitely replace the Availability Sets by the Zones, or if the 2 concepts will exist in parallel.
Finally, here is the official announcement: https://docs.microsoft.com/en-us/azure/availability-zones/az-overview