Guest clusters are failover clusters in which all of the cluster nodes are virtual machines. Guest clustering provides a way to achieve high availability for individual workloads. Like Windows failover clusters based on physical servers, guest clusters have a dependency on a cluster shared volume. The cluster shared volume is shared storage that is accessible to all of the nodes in the cluster.
The technique used for creating a cluster shared volume can vary considerably depending on the hypervisor that is being used and its version. Microsoft Hyper-V, for example, has long used a shared VHDX file for guest clustering, although the 2016 version of Hyper-V supports a newer type of virtual hard disk file called a VHD Set.
Shared VHDX was first introduced in Windows Server 2012 R2 and continues to be supported in Windows Server 2016. There are three main considerations that must be taken into account when using shared VHDX files to host a guest cluster shared volume.
Physical connectivity. In order to use shared VHDX files as a cluster shared volume for your guest clusters, all of the Hyper-V hosts that could potentially host the cluster nodes must be able to access the location in which the VHDX file resides. A common misconception is that you must use a block-level protocol, such as iSCSI or Fibre Channel (FC), to connect to a LUN, which, in turn, contains the shared VHDX file. While this approach is certainly viable, it is also permissible to store the shared VHDX file on an SMB 3.0 share and connect the Hyper-V hosts to that share using a Universal Naming Convention file path.
How the shared VHDX file will connect to the virtual machines (VMs). If you were creating a failover cluster based on physical servers, you would typically need to connect the servers to the cluster shared volume using FC or iSCSI. In the case of guest clustering based around a shared VHDX file, Microsoft has made connectivity simpler than it otherwise would be.
Rather than having to manually configure initiators, you can attach the VM to a shared VHDX file using Hyper-V Manager. Simply add the shared VHDX file to a virtualized cluster node in the same way that you would attach any other virtual hard disk. Once the virtual hard disk is attached, go to the virtual hard disk's Advanced Features tab within Hyper-V Manager, and select Enable virtual hard disk sharing. You can see what this checkbox looks like here:
Keep in mind that you will have to repeat this process for each node within the guest cluster. Upon doing so, you will need to deploy the failover cluster feature on each node and then form the guest cluster.
Limitations associated with using shared VHDX files. If you look back at the previous screen capture, you will notice a warning message stating that some VM and virtual hard disk features will be disabled when you enable virtual hard disk sharing. This message alludes to three limitations associated with basing guest clusters around a shared VHDX file.
- You cannot back up a guest cluster using a Hyper-V host-level backup. Instead, you will have to install a backup agent on the cluster nodes and perform a guest-level backup.
- While it is possible to perform a live migration of guest cluster nodes, you cannot perform a live migration of the shared VHDX file.
- You cannot resize a shared VHDX file while the guest cluster is online.
Considerations for Windows Server 2016
Microsoft made some significant changes to guest clustering in Windows Server 2016 Hyper-V. As previously noted, Windows Server 2016 continues to support the use of shared VHDX files. However, in Windows Server 2016, Microsoft made it possible to resize a shared VHDX file without having to take the guest cluster offline.
The other major change that Microsoft made in Windows Server 2016 is the introduction of VHD Sets. VHD Sets are a new type of shared virtual hard disk that overcomes the limitations that are associated with shared VHDX files. A guest cluster based on a VHD Set can be backed up at the host level, and the virtual hard disk can be resized. VHD Sets are also designed to work with the Hyper-V Replica feature.
Although guest clusters are fully supported by Hyper-V, it is important to understand the intricacies of guest clustering prior to building your first guest cluster. If you are currently running Hyper-V on Windows Server 2016, then you should base your guest cluster on VHD Sets rather than using shared VHDX files.