Home / Walkthroughs / Hyper-V Cluster
 Windows Server & Virtualization

3-Node Hyper-V Failover Cluster
on Windows Server 2022

Build a fully redundant hyperconverged Hyper-V cluster across three mini PCs β€” Active Directory, Cluster Shared Volumes, live VM migration, VLAN-tagged storage networking, and automated cluster balancing. All on consumer hardware.

Intermediate–Advanced ~3–4 hours 3 nodes minimum
Hyper-V Windows Server 2022 Failover Cluster Active Directory CSV Live Migration
πŸ“–
Overview & Hardware

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
Avoid Server Core by accident. During Windows Server setup, make sure to select "Desktop Experience" on the edition selection screen. Server Core (no GUI) is the default and is a common gotcha β€” manageable remotely but painful if you expected a desktop.
πŸ’Ώ
Install Windows Server 2022
  1. 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. 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. 3

    Set Hostnames & Activate

    Rename-Computer -NewName "HV-NODE01" -Restart # Repeat: HV-NODE02, HV-NODE03
πŸ›οΈ
Set Up Active Directory

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. 1

    Install AD DS on Node 1

    Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools Install-ADDSForest -DomainName "homelab.local" -InstallDns
  2. 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. 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.

DNS must be fully functional before clustering. Ensure all node FQDNs resolve correctly in both directions before proceeding. Active Directory, Kerberos, and the failover cluster itself all depend on reliable DNS β€” unresolved hostnames will cause failures at nearly every configuration step.
πŸ–₯️
Enable Hyper-V on All Nodes
  1. 1

    Install Hyper-V Role

    Run on each node:

    Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
  2. 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.

🌐
Configure Storage & VM Networks

Separate your storage traffic from VM traffic using VLANs. This prevents a busy VM from saturating the storage link during CSV I/O.

  1. 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. 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.

πŸ”—
Build the Failover Cluster
  1. 1

    Install Failover Clustering Feature

    # Run on ALL nodes Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools
  2. 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-NODE03

    Review the HTML report it generates. Warnings about storage are OK if you're using SMB storage (not iSCSI). Errors must be resolved first.

  3. 3

    Create the Cluster

    New-Cluster -Name "HVCLUSTER01" -Node HV-NODE01,HV-NODE02,HV-NODE03 -StaticAddress 10.10.50.50 -NoStorage

    The -NoStorage flag 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. 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"
The cluster name requires its own AD computer object and IP address. The cluster name (e.g. 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.
πŸ’Ύ
Cluster Shared Volumes (CSV)

CSV allows all nodes to access the same storage volume simultaneously β€” required for live VM migration without downtime.

  1. 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. 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.

πŸš€
Test Live Migration
  1. 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. 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. 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.

If live migration completes with no service interruption (ping continues through the migration), your cluster is working correctly.
πŸ›‘οΈ
Group Policy Tips

With AD in place, use GPO to enforce consistent configuration across all cluster nodes and VMs without manual per-machine work.

GPO is valuable even in a homelab. Use it to push proxy settings, registry tweaks, and mapped drives to all machines automatically β€” no per-machine configuration needed. Software deployment (MSI packages) and startup/logon scripts can also be distributed centrally, making GPO worth setting up as soon as AD is in place.

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