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

Let's use an example of a web server and a database server that serves users' applications. The web server is placed in a single availability set and the database server in its 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. In contrast, 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.