Microsoft first introduced Availability Sets in Windows Azure and with System Center 2012 SP1 this feature also came to the Private Cloud. Availability Sets are used to keep virtual machines separate from each other so they do not run on the same physical host. This works via anti-affinity rules inside a Hyper-V host cluster, but with System Center Virtual Machine Manager allows you to do this even with standalone hosts, which makes really sense since you can move virtual machines without downtime in your whole datacenter via Shared Nothing Live Migration..
If you create an Availability Set in Virtual Machine Manager for two different virtual machines, Virtual Machine Manager will attempt to keep those virtual machines on separate hosts and avoid placing them together on the same host whenever possible. This helps to improve service update for these virtual machines, especially if you run a guest cluster for example SQL server, Exchange or even an IIS web server farm behind load balancers.
If you have configured anti-affinity rules inside a Hyper-V cluster you know that the only way to do this is via Windows PowerShell and it’s not really straightforward as we maybe wish. And as already mentioned anti-affinity rules do only work inside a cluster.
In Virtual Machine Manager (System Center 2012 SP1 or System Center 2012 R2) this is quite easy. First you open the properties of one of the virtual machines you want to include in the availability set. Select the Hardware Configuration tap and go to Availability. As you can see in my screenshot this is a non clustered virtual machine and I still can configure availability sets (Of course this would work with clustered VMs as well). Click on “Manage availability sets”.
Now create a new availability set for your service (virtual machines). It makes sense to choose a good name for that.
After you have created the availability set the set will automatically be assigned to the virtual machine.
After you saved the configuration of the first virtual machine you can edit the second virtual machine and assign the same Availability set, which you have already created.
Virtual Machine Manager will attempt to keep those two virtual machines on separate hosts if possible.