/* */

Highly Available VMs vs Guest Clusters

It took me some time studying the Microsoft Technet site before I could clearly see that there was a difference between what Microsoft refers to as highly available virtual machines (also sometimes called clustered virtual machines), and guest clusters. For those of you that might also be scratching your heads, here is my take on it; hopefully I make the distinction clearer rather than muddier. (Click here to read the rest of this article)

 

Highly Available Virtual Machine

A highly available virtual machine is a virtual machine running on a Hyper-V failover cluster - two or more nodes running Hyper-V.  The virtual machine files, which include the configuration file, virtual hard disks, and snapshot and paging files, are stored in the cluster's shared storage, preferably a cluster shared volume (CSV), but it can also be traditional SAN storage or a share on a scale-out file server. High availability comes from the fact that two or more Hyper-V servers have access to the VM. The highly available VM is 'owned' by one of the Hyper-V servers in the cluster and it is on that Hyper-V server that the VM runs. If the Hyper-V server fails, one of the other Hyper-V servers in the cluster will take over the VM. Note that the failover clustering feature is only running on the Hyper-V host computers, not VM guest OS. You can use live migration to move a running VM from one Hyper-V server in the cluster to another to facilitate balanced use of the Hyper-V servers, or if a cluster node must be taken offline for maintenance. 

Guest Cluster

A guest cluster is two or more VMs running on one or more Hyper-V servers. Each VM has a guest OS configured with the failover clustering feature. While you can configure a guest cluster using a single Hyper-V server, your fault tolerance is limited to component failure on the Hyper-V server and individual service faiure on the VMs. For example, if you use a single Hyper-V server to host all the VMs in the guest cluster, you should put the VM files for each VM on separate physical disks and connect them to separate virtual switches where each virtual switch is connected to a different physical NIC. Ideally, use two or more Hyper-V servers, with each VM in the guest cluster hosted on a separate server. For the best resiliency and flexibility in a guest cluster, host the VMs on a Hyper-V failover cluster so you get high availability for individual services running on the VMs and high availability for entire VMs via the Hyper-V cluster.  The VMs in a guest cluster must have access to shared storage like any failover cluster. You can use traditional shared storage methods such as an iSCSI SAN where the iSCSI Initiator in the guest OS on each VM is configure to access an iSCSI target or you can use a shared virtual hard disk. The shared virtual hard disk option is available as a shared storage option on Hyper-V servers running Windows Server 2012 R2 or later. The guest OSs must be running Windows Server 2012 or later.

I hope this clears up some of the confusion between these similar sounding cluster types. Let me know in the comments if you would like additional clarifications or another article exapnding upon any of the concepts discussed here. This topic is covered in Chapter 7 of MCSA Gudie to Configuring Advanced Microsoft Windows Server 2012/R2 Services, Exam 70-412, published in March 2015.