Table of Contents
Windows Server Failover Clustering (WSFC) with Hyper-V gives you enterprise-grade VM high availability β if one node goes down, VMs automatically restart on surviving nodes. This guide covers the exact setup used in the homelab: three AZW SER mini PCs running Windows Server 2022 with a dedicated storage VLAN and CSV shared storage.
Hardware Used
| Component | Spec |
|---|---|
| Nodes | 3Γ AZW SER Mini PC |
| OS | Windows Server 2022 Standard/Datacenter |
| Networking | Managed switch with VLAN support (storage VLAN + VM VLAN) |
| Shared Storage | SMB share or iSCSI target (NAS or dedicated file server) |
| Additional | Static IPs on all nodes, DNS resolving for all hostnames |
-
1
Download & Create Install Media
Download the Windows Server 2022 ISO from the Microsoft Evaluation Center (free 180-day eval). Write to USB with Rufus β use GPT partition scheme for UEFI systems (most modern hardware).
If the installer fails to detect your NVMe drive, the AZW SER may need a driver injected into the ISO. Use DISM or the Rufus "Add drivers" option to inject the NVMe driver. -
2
Install on All 3 Nodes
Select Windows Server 2022 Standard (Desktop Experience). Perform a clean install. Assign static IPs before proceeding:
# PowerShell β set static IP New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 10.10.50.X -PrefixLength 24 -DefaultGateway 10.10.50.1 Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 10.10.50.10,10.10.50.11 -
3
Set Hostnames & Activate
Rename-Computer -NewName "HV-NODE01" -Restart # Repeat: HV-NODE02, HV-NODE03
Failover Clustering requires all nodes to be domain-joined. Install AD DS on the first node to make it your domain controller, then join the others.
-
1
Install AD DS on Node 1
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools Install-ADDSForest -DomainName "homelab.local" -InstallDns -
2
Join Remaining Nodes to Domain
On NODE02 and NODE03, point DNS to NODE01's IP, then join the domain:
Add-Computer -DomainName "homelab.local" -Credential (Get-Credential) -Restart -
3
Create a Cluster Service Account
In Active Directory Users and Computers, create a dedicated service account (e.g.
svc-cluster) with a strong password and no expiry. This account will be used for cluster operations.
-
1
Install Hyper-V Role
Run on each node:
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart -
2
Create the External Virtual Switch
In Hyper-V Manager β Virtual Switch Manager β New β External. Bind to the physical NIC that connects to your LAN. Name it consistently across all nodes (e.g.
External-LAN) β the name must match for live migration to work.
Separate your storage traffic from VM traffic using VLANs. This prevents a busy VM from saturating the storage link during CSV I/O.
-
1
Create a Dedicated Storage NIC Team or VLAN
On your managed switch, create a storage VLAN (e.g. VLAN 20). On each node, add a second NIC or create a VLAN adapter:
# Add VLAN-tagged adapter for storage network Add-VMNetworkAdapter -ManagementOS -Name "Storage" -SwitchName "External-LAN" Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "Storage" -Access -VlanId 20 New-NetIPAddress -InterfaceAlias "vEthernet (Storage)" -IPAddress 10.10.20.X -PrefixLength 24 -
2
Configure Live Migration Network
In Failover Cluster Manager β Networks, set the storage network to Allow cluster network communication only and the LAN to Allow all. Prioritize the storage network for live migration traffic.
-
1
Install Failover Clustering Feature
# Run on ALL nodes Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools -
2
Run Cluster Validation
Always validate before creating β it identifies networking, storage, or AD issues before they become cluster problems:
Test-Cluster -Node HV-NODE01,HV-NODE02,HV-NODE03Review the HTML report it generates. Warnings about storage are OK if you're using SMB storage (not iSCSI). Errors must be resolved first.
-
3
Create the Cluster
New-Cluster -Name "HVCLUSTER01" -Node HV-NODE01,HV-NODE02,HV-NODE03 -StaticAddress 10.10.50.50 -NoStorageThe
-NoStorageflag skips auto-discovery β you'll add storage as a CSV manually in the next step. Give the cluster its own static IP (the Cluster Name Object, or CNO) β this is how Failover Cluster Manager connects to it. -
4
Configure Quorum
With 3 nodes, dynamic quorum works fine. For extra resilience, add a file share witness on a separate machine (e.g., your NAS):
Set-ClusterQuorum -FileShareWitness "\\NAS01\quorum"
HVCLUSTER01) is registered in Active Directory as a separate computer object with its own IP β distinct from any individual node. Ensure your domain controller can resolve this name before opening Failover Cluster Manager, or connections to the cluster will fail.CSV allows all nodes to access the same storage volume simultaneously β required for live VM migration without downtime.
-
1
Add Storage to the Cluster
If using an iSCSI target, connect each node to it first via iSCSI Initiator. Then in Failover Cluster Manager β Storage β Disks β Add Disk. The shared disk will appear if all nodes can see it.
For SMB/NFS-based storage (e.g., NAS), use Scale-Out File Server or mount the SMB path directly as a cluster disk via
Add-ClusterSharedVolume. -
2
Convert to CSV
# In Failover Cluster Manager: right-click disk β Add to Cluster Shared Volumes # Or PowerShell: Add-ClusterSharedVolume -Name "Cluster Disk 1"CSV volumes appear on all nodes at
C:\ClusterStorage\Volume1\. Store VM files here.
-
1
Create a Test VM on CSV Storage
In Hyper-V Manager (connected to the cluster), create a new VM and store its VHDX on
C:\ClusterStorage\Volume1\. Boot the VM and confirm it's running. -
2
Live Migrate via Failover Cluster Manager
In Failover Cluster Manager β Roles, right-click the running VM β Move β Live Migration β Select Node. The VM moves to the target node while running β no downtime.
# Or PowerShell: Move-ClusterVirtualMachineRole -Name "TestVM" -MigrationType Live -Node HV-NODE02 -
3
Test Failover
Simulate a node failure by pulling the power on NODE01 while VMs are running. Within ~30 seconds, the cluster should restart the VMs on the surviving nodes automatically.
With AD in place, use GPO to enforce consistent configuration across all cluster nodes and VMs without manual per-machine work.
Useful GPO Configurations
| Policy | Path |
|---|---|
| Proxy settings | User Config β Windows Settings β Internet Explorer Maintenance |
| Registry tweaks | Computer/User Config β Preferences β Windows Settings β Registry |
| Software deployment | Computer Config β Software Settings β Software Installation (MSI only) |
| Mapped drives | User Config β Preferences β Windows Settings β Drive Maps |