Preparing any virtualization environment for high availability is a necessary requirement for running production workloads. High availability ensures that if you have failures in the underlying infrastructure, your production workloads remain available.
Generally speaking, you want no single point of failure that could lead to taking your entire infrastructure down.
When thinking about engineering and building out a Microsoft Windows Server 2016 Hyper-V cluster, you want to design the cluster with high availability in mind.
In this post we will take a look at Windows Server 2016 Hyper-V high availability design considerations and the key functionality in Windows Server 2016 Hyper-V that administrators can take advantage of to ensure a highly available system to run production virtual machine workloads.
Windows Server 2016 Hyper-V Design Considerations
There are several key considerations that need to be made when building out a Windows Server 2016 Hyper-V cluster for high availability.
Let’s take a look at the following components of a highly available Microsoft Windows Server 2016 Hyper-V configuration and why each are important to ensuring that business critical applications are protected against a single point of failure in the respective fault domain.
- Failover Clustering
- Live Migration
- Cluster Shared Volumes
- Hyper-V Guest Clustering
We will consider each of these in greater detail and see why and how they are important.
Windows Server 2016 Hyper-V Failover Clustering
Microsoft Failover Clustering services are at the heart of a Windows Server 2016 Hyper-V cluster. Microsoft Failover Cluster services allow Windows Server “roles” to be “clustered” across nodes in the cluster to ensure they are highly available. This includes the Hyper-V role and others.
A Failover Cluster hosts the Hyper-V role across the computing nodes and ensures the virtual machines running on each node are highly available. The Failover Cluster feature uses a heartbeat mechanism to detect if nodes in the cluster are “offline”. Virtual machines that are running within the Hyper-V Clustered Role on the Failover Cluster are automatically powered off from the node that has failed and powered back on a healthy cluster node.
There are quite a few requirements for implementing a Windows Server 2016 Hyper-V Failover Cluster including the following:
- Hardware Considerations
- Network Design capable of HA
- Shared Storage between cluster nodes
- Windows Server 2016 Hyper-V Failover Cluster Windows configuration
You always want to make sure your hardware is Windows Server 2016 certified. You can do that by visiting the Windows Server catalog to check the specific hardware being used.
Additionally, when thinking about clustering multiple physical hosts together in a Windows Server Hyper-V Failover Cluster, you want to ensure you use identical hardware between the hosts as well as the same hardware configuration such as amount of memory, CPU layout, etc.
While modern virtualization platforms such as Hyper-V have mechanisms to account for differences with the underlying hardware, it is best practice to use the same configurations between hosts. Even the same type of CPU (Intel or AMD) can have different instruction sets between various CPU models so using the same model, etc, is crucial.
A Windows Server 2016 Hyper-V Failover Cluster can be created with high availability features with a minimum of (2) server nodes. However, it is recommended that for production workloads the cluster is created with three nodes. This provides a much more efficient and robust use of available resources. With a two node cluster, half of the resources are dedicated to high availability.
Network Design Capable of HA
Ensuring a highly available network design is key to ensuring a properly functioning and highly available Windows Server 2016 Hyper-V Failover Cluster.
This would include having redundant data paths for all types of network communication for the Windows Server 2016 Hyper-V Failover Cluster.
Generally speaking, this requires having multiple network switches, network cards, and redundant cabling between various networks that ensures if any of the hardware components fail along the way, data has a secondary path to traverse to ensure connectivity.
Shared Storage Between Cluster Nodes
Shared storage is a requirement for highly available virtual machines.
One of the primary requirements of the Hyper-V Failover Cluster is that all Hyper-V cluster nodes have access to shared storage where the virtual machine hard disks and configuration data exists. This ensures that any Hyper-V cluster nodes are able to provide high availability functionality to running virtual machines that are automatically powered off due to a host failure.
If the host does not have access to the virtual machine hard disk and configuration files, this failover mechanism will not work as expected.
Windows Server 2016 Hyper-V Failover Cluster Windows Configuration
Creating a Windows Failover Cluster requires adding the Failover Cluster feature in Windows Server for each node that will be joining the Hyper-V cluster. Utilizing PowerShell to install the Failover Clustering feature on the intended Hyper-V hosts is a quick and easy way to accomplish this task.
- Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools -Computername server01, server 02, server 03
To test the potential Hyper-V Failover Clustering hosts for issues before creating the actual Failover Cluster, you can use the Test-Cluster commandlet.
- Test-Cluster server01, server02, server03
If there are no errors in the Test-Cluster commandlet, you are good to actually create
- New-Cluster -Name CN=HyperClstr01,OU=Servers,DC=lab,DC=local -Node server01, server02, server03 -StaticAddress 10.50.1.100
Live migration is a Hyper-V feature that allows transparently moving a running virtual machine from one Hyper-V host to another without any downtime to the guest operating system in the running virtual machine.
Interestingly, Windows Server 2016 Hyper-V allows live migration without Failover Clustering.
The following are requirements for setting up hosts for live migration.
- You need to have access to a user account that is a member of the local Hyper-V Administrators group or Administrators group. Membership in the Domain Administrators group is required when configuring constrained delegation.
- The Hyper-V role must be installed on both the source and destination servers. You can also perform live migration between different versions of Hyper-V such as Windows Server 2016 and Windows Server 2012 R2 depending on the virtual machine version.
- The source and destination Hyper-V servers must belong to the same domain or trusted domains.
- You will need access to the Hyper-V management tools installed on a management workstation or the Hyper-V servers themselves.
PowerShell can be utilized to perform a Live Migration operation such as the following commandlet:
- Move-VM TestVM Server02 -IncludeStorage -DestinationStoragePath D:\VMs
Cluster Shared Volumes
The introduction of Cluster Shared Volumes was a significant improvement in the overall way that Windows Server Hyper-V accessibility to shared storage works.
Previously, before the introduction of Cluster Shared Volumes, only one node in a Failover Cluster could access a volume at a time. This brought about many challenges when thinking about migrating virtual machines between nodes especially in high availability scenarios.
With the introduction of Cluster Shared Volumes, multiple nodes can access the same volume at the same time. This means that fewer volumes are needed for designing effective Hyper-V storage solutions.
There are also added resiliency benefits when utilizing Cluster Shared Volumes as there are multiple connections that are made between nodes and the shared volume. If one network path goes down for any reason, communication can still proceed down an alternate path. Cluster Shared Volumes makes use of either NTFS or the ReFS file system.
Creating a Cluster Shared Volume for use with a Windows Server 2016 Hyper-V Cluster
A Cluster Shared Volume for use with Hyper-V virtual machines
Hyper-V Guest Clustering
Guest Clustering is the concept of creating a Windows Failover Cluster within a Windows Server 2016 Hyper-V environment.
You may wonder, what is the point of running a Guest Cluster inside of a Hyper-V cluster?
The Guest Cluster is there to provide high availability to applications hosted by a virtual machine(s) and not simply to the virtual machine itself. Even though we might have a SQL Server housed on a highly available Hyper-V cluster, the SQL Server application itself is vulnerable to downtime due to the virtual machine itself going down or needing a restart, patching, etc.
Thus, creating a Guest Failover Cluster provides the application resiliency needed to avoid any downtime due to a single virtual machine going down or restarting.
There are several considerations to be made before implementing Guest Clustering.
First and foremost, there is no need to implement a Guest Cluster if the underlying physical infrastructure (Hyper-V) hosts are not configured for high availability. In other words, you can technically create a Guest Cluster on a single standalone Hyper-V host, however, this will not do much good from a high availability standpoint as your Guest Cluster would be vulnerable to the failure of a single Hyper-V host.
Creating a Guest Cluster is very similar to creating the Hyper-V Failover Cluster. The requirements are the same, including shared network and storage resources. The shared network resources and shared storage resources are a bit easier to deal with in the virtual environment itself. You will need to create three networks for the Guest Cluster configuration including a client network, a cluster network, and a storage network.
For shared storage, there is a new virtual disk format (VHDS) which is a VHD Set that allows for shared virtual hard disks only. This format is only available to Windows Server 2016 and no other legacy Windows Server version. When creating the Guest Cluster, you will use the VHDS set as the shared storage for the cluster. Hosting an application on a Guest Cluster using the VHDS set ensures the high availability to the application itself.
Designing virtualization systems for high availability is a core requirement for running production workloads in a way that ensures business continuity. Microsoft Windows Server 2016 Hyper-V provides several built-in mechanisms that provide high availability to production workloads such as Failover Clustering, Live Migration, Cluster Shared Volumes, and Hyper-V Guest Clustering. By taking advantage of these and other high availability mechanisms with Windows Server 2016 Hyper-V, organizations can ensure high availability of business critical virtual machines and the applications they are running.