How to Configure Failover Clustering on Windows Server 2016
Failover Clustering is a Windows Server feature that allows multiple servers to work together to provide high availability for workloads and services. If one node in the cluster fails, another node automatically takes over, minimising downtime for critical applications. Windows Server 2016 introduces improvements including Cloud Witness, rolling cluster upgrades, and enhanced VM resiliency. This guide walks through deploying a two-node failover cluster suitable for file servers, virtual machines, and other highly available workloads.
Prerequisites and Planning
All cluster nodes must run the same version and edition of Windows Server and must be domain members. Nodes should have identical or compatible hardware. Shared storage (SAN, iSCSI, or Storage Spaces Direct) is required unless you are using Storage Spaces Direct which provides its own storage. Each node needs at minimum two network adapters: one for client traffic and one for cluster heartbeat communication. Plan your cluster IP address, cluster name, and the quorum witness type before starting.
Step 1: Install the Failover Clustering Feature
Install the Failover Clustering feature on all servers that will be nodes in the cluster. Run the following on each server:
Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools
Restart-Computer -Force
After rebooting, verify the feature is installed:
Get-WindowsFeature -Name Failover-Clustering
Step 2: Validate the Cluster Configuration
Running the cluster validation test is a mandatory step required for Microsoft support. It checks hardware compatibility, networking, storage, and software configuration. From one of the nodes, run:
Test-Cluster -Node "Node01","Node02" -Include "Storage","Network","System Configuration","Inventory"
The test generates an HTML report. Review every warning and failure. All critical failures must be resolved before creating the cluster. The report is saved to the Documents folder of the user running the command. Pay particular attention to storage and network warnings as these are the most common sources of cluster instability.
Step 3: Create the Failover Cluster
Once validation passes, create the cluster. Specify the cluster name, the nodes, and a static IP address for the cluster. The cluster name registers as a computer object in Active Directory:
New-Cluster -Name "CLUSTER01" -Node "Node01","Node02" -StaticAddress "192.168.1.200"
If your environment uses DHCP for cluster IPs, omit the -StaticAddress parameter. Verify the cluster is online and all nodes have joined:
Get-Cluster
Get-ClusterNode
Get-ClusterNetwork
Step 4: Configure the Cluster Quorum
The quorum determines how many votes are needed for the cluster to remain online. For a two-node cluster, you must configure a witness to provide a tiebreaker vote. Windows Server 2016 supports disk witness, file share witness, and the new Cloud Witness (Azure Blob Storage). To configure a file share witness:
Set-ClusterQuorum -Cluster "CLUSTER01" -FileShareWitness "\FileServerClusterWitness"
To use Cloud Witness (recommended for geographically dispersed clusters), you need an Azure Storage account:
Set-ClusterQuorum -Cluster "CLUSTER01" -CloudWitness -AccountName "mystorageaccount" -AccessKey "your_storage_account_key_here"
Verify quorum configuration:
Get-ClusterQuorum
Step 5: Add Cluster Shared Volumes
Cluster Shared Volumes (CSVs) allow all cluster nodes to simultaneously access the same volume, which is required for VM failover and certain application workloads. Add a disk to the cluster and then designate it as a CSV:
Get-ClusterAvailableDisk | Add-ClusterDisk
Add-ClusterSharedVolume -Name "Cluster Disk 1"
CSVs are accessible on all nodes at the path C:ClusterStorageVolumeX.
Step 6: Configure Cluster Networks
Properly configure cluster networks to separate management, client, and heartbeat traffic. View detected networks and configure their roles:
Get-ClusterNetwork
(Get-ClusterNetwork "Heartbeat").Role = "InternalUseOnly"
(Get-ClusterNetwork "Client Network").Role = "ClusterAndClient"
Set the heartbeat network to internal use only to prevent client traffic from using it:
Get-ClusterNetwork "Heartbeat" | Set-ClusterNetwork -Role 1
Step 7: Add a Clustered Role
With the cluster configured, add a clustered role (workload). To add a highly available file server role:
Add-ClusterFileServerRole -Name "FS-HA01" -Storage "Cluster Disk 1" -StaticAddress "192.168.1.210"
Verify the role is online:
Get-ClusterResource
Get-ClusterGroup
Step 8: Test Failover
Test that failover works correctly by moving the clustered role to another node:
Move-ClusterGroup -Name "FS-HA01" -Node "Node02"
Verify the role is now running on Node02 and that clients can still access the file share during and after the move. Also simulate a node failure by stopping the Cluster Service on one node and confirming automatic failover:
Stop-ClusterNode -Name "Node01"
Get-ClusterNode
With failover clustering configured, your Windows Server 2016 environment can now automatically redirect workloads to healthy nodes in the event of hardware or software failures, providing the high availability required for business-critical applications.