Virtual Machine availability sets enable you to prepare your applications for high availability incase of a host server failure, physical rack failure or in a situation that you want to perform host updates on virtual machines that are serving up different applications. Availability sets can only be achieved during the creation of virtual machines and it should also be noted that they are different from virtual machine scale sets.

Let's use an example of a web server and a database server which serves up an application to users. The web server can be put in a single availability set and also the database server in it's own availability set.

Availability sets support up to 20 update domains and 3 fault domains. An update domain is an instance of a virtual machine distributed on different hosts within the same server rack while a fault domain is an instance of a virtual machine distributed on different server racks as shown in the diagram below.

Coming back to our example of the application, we can see that the web server virtual machine below sits on two fault domains and one upgrade domain, this is the same with the database server.

Creating an availability set is a relatively easy process and takes much the same process as most Azure services.

And to make use of an availability set, you will have to specify it during virtual machine creation.