Microsoft Azure provides Virtual Machines for running scalable and cloud based servers with Infrastructure as a Service (IaaS), which enables to pay as you go.
Considering you use these VMs as web servers, database servers or application servers.
What if critical application is running in a VM and for some reason VM goes down due to network switch issue, power outage issue or some unplanned/planned maintenance on VM, which can cause single point of failure of the system.
Microsoft Azure claims 99.95% SLA for availability or uptime of virtual machines provided VMs are in availability sets.
Virtual machines rely on Microsoft Azure Storage for high availability. When your virtual machine is provisioned, it is replicated to three separate locations within the data center to which you assign it.
As stated above if your VM is taken down for maintenance, all services included in the availability set will be accessible through other physical hosts. An availability set is a group of virtual machines.
When multiple virtual machines belong to the same availability set, Azure places virtual machines across multiple racks, each of which can be considered a fault domain and separate physical points of failure.
Similarly, each virtual machine is placed in a separate upgrade domain so that virtual machines in the same availability set are not taken offline at the same time during host updates
Hence availability sets make sure that your application is not affected by single points of failure be it unexpected hardware failure or planned/unplanned host updates.
As stated above to manage the availability of an application you use multiple virtual machines and add virtual machines to an availability set.
A fault domain in is defined for avoiding single points of failure, like the network switch or power unit of a rack of servers. It is equivalent to a rack of physical servers. When multiple virtual machines are connected in a cloud service, availability set places the virtual machines in different fault domains.
Each virtual machine in your availability set is assigned a fault domain by the underlying Azure platform, which you need not worry.
So when there are two VMs in the same availability set, it means Azure will provision them in to two different racks so that, if the network or the power failed, only one rack would be affected.
Occasionally Microsoft needs to update the host on which your VM(s) are running, but ideally Microsoft should not be doing that, because you are using IaaS VMs and you are responsible for patches and updates.
So why would Microsoft update your hosts? It updates only in case when serious security vulnerability is identified and a patch is created for the same. So will Microsoft take my VMs down, answer is no.
So how is that done without taking your VMs down? Answer is with Update Domains. It’s similar to the Fault Domains, only this time, instead of an accidental failure, there is a purposeful move to take down one or more VMs.
To make sure that applications in VMs don’t go offline because of an update, it will activate VMs from update domains.
Avoid leaving a single instance virtual machine in an availability set by itself, VMs in this configuration do not qualify for a SLA guarantee and face downtime during Azure planned maintenance events, except when a single VM is using Azure Premium Storage.
Putting web servers in different fault domains to enabling load balancing also gives high availability, but Azure Traffic Manager is best option to use for Web apps for high availability.
Do not confuse Availability set with scale set; these are two different but related services. I will focus on scale sets in upcoming articles.
Health and Parenting Inspiring Stories Technology Microsoft Azure SharePoint O365