Availability sets and other tools for ensuring high availability

Microsoft's System Center Virtual Machine Manager offers a variety of options, including VM prioritization and host restrictions, for creating highly available VMs.

In the world of Microsoft Hyper-V, making a virtual machine highly available is a very straightforward process. The Microsoft failover clustering service is installed onto each Hyper-V server, and those servers are then configured to function as a cluster. Once this cluster has been formed, individual virtual machines can be made highly available by defining them as clustered roles.

Although this basic approach to high availability does work, many organizations find it to be inadequate and discover that they require more control over VM availability. Although native Hyper-V servers offer few additional availability options, there are various options, including availability sets and prioritization, available through System Center Virtual Machine Manager (VMM).

Prioritizing virtual machines

One of the more basic availability options presented is the ability to prioritize VMs. The idea behind this option is simple. Organizations often operate their virtualization infrastructure with the goal of achieving the highest possible VM density because doing so helps to reduce hardware costs. In a failure situation, however, high density virtualization hosts have few resources available for taking on VMs that previously resided on the failed host server. This is where priority comes into play. VMM allows administrators to specify the VMs that are the most important so that those VMs are given preferential treatment when limited host resources are available.

To prioritize a VM, open the VMM Console and then go to the VMs and Services workspace. Right click on a VM and select the Properties command from the shortcut menu. Click on the Hardware Configuration tab, and then click on the Availability container. There are options within this container to set the VM's priority to High, Medium, Low, or Do not restart automatically. As you can see in Figure A, these options are only available on VMs that have been made highly available.

Setting a VM's priority.
Figure A. Setting a VM's priority with the Availability tab.

Configuring owners for a VM

Another thing that you can do is to configure the preferred and possible owners for a VM. This option has several different uses. For example, an administrator may wish to restrict VMs to running only on high performance hosts. Similarly, an administrator might indicate that they would prefer for a particular VM to run on a high performance host, but indicate that other hosts can be used if the preferred host is not available.

Setting a VM's possible owners -- hosts -- is also useful in multi-tenant environments. Suppose, for instance, that a large cloud provider had both Coke and Pepsi as customers. In a situation like this, there would likely be a contractual obligation to establish physical separation VMs. Restricting the hosts on which each VM is allowed to run could provide the required degree of separation.

Setting a VM's preferred and possible owners is easy to do. Open the VMM Console, and go to the VMs and Services tab. Right click on a VM, and select the Properties command from the shortcut menu to reveal the Properties dialog box. Next, go to the dialog box's Settings tab and configure the Preferred Owners and the Possible Owners lists. Keep in mind that these lists will only exist if the VM is currently designated as being highly available.

Using availability sets

Yet another concept that can be used when configuring availability in VMM is that of availability sets. Availability sets are useful in situations in which your virtualization hosts contain VMs that function as a guest cluster. Guest clusters are clustered VMs that generally provide high availability for an application. Placing the guest cluster nodes onto a common host server could potentially undermine the guest cluster because a host level failure might bring down the guest cluster nodes.

Availability sets are used to establish a degree of separation between guest cluster nodes. VMM will try to keep these VMs on separate hosts if possible. There are several different ways of creating an availability set, but the easiest method involves going to the VMs and Services workspace within the VMM Console, right clicking on a VM, and choosing the Properties command from the shortcut menu. When the VM's Properties dialog box appears, go to the Hardware Configuration tab, click the Availability option, and then click on the Manage Availability Sets button. This button is shown in Figure A. As you can see in Figure B, you can create an availability set by clicking on the Create button and then entering the name of the availability set that you wish to create. If availability sets already exist, then simply pick the availability set that you wish for the VM to be a part of.

Creating an availability set.
Figure B. Creating an availability set in VMM.

Although Hyper-V's native high availability options are somewhat limited, VMM allows for VM prioritization, host restrictions and for the distribution of VMs across hosts through the use of availability sets.

Next Steps

Ramp up critical VM performance with a priority list

Utilize vSphere resource controls for VM priority

Combine hardware and software for VM high availability

Dig Deeper on Microsoft Hyper-V management