Blog Post

Failover Clustering
2 MIN READ

Failover Cluster VM Load Balancing in Windows Server 2016

John Marlin's avatar
John Marlin
Icon for Microsoft rankMicrosoft
Mar 15, 2019
First published on MSDN on Apr 29, 2016
Windows Server 2016 introduces the Virtual Machine Load Balancing feature to optimize the utilization of nodes in a Failover Cluster. During the lifecycle of your private cloud, certain operations (such as rebooting a node for patching), results in the Virtual Machines (VMs) in your cluster being moved. This could result in an unbalanced cluster where some nodes are hosting more VMs and others are underutilized (such as a freshly rebooted server). The VM Load Balancing feature seeks to identify over committed nodes and re-distribute VMs from those nodes. VMs are live migrated to idle nodes with no down time. Failure policies such as anti-affinity, fault domains and possible owners are honored. Thus, the Node Fairness feature seamlessly balances your private cloud.

Heuristics for Balancing


VM Load Balancing evaluates a node's load based on the following heuristics:

  1. Current Memory pressure : Memory is the most common resource constraint on a Hyper-V host

  2. CPU utilization of the Node averaged over a 5 minute window: Mitigates a node in the cluster becoming overcommitted


Controlling Aggressiveness of Balancing


The aggressiveness of balancing based on the Memory and CPU heuristics can be configured using the by the cluster common property ‘AutoBalancerLevel’. To control the aggressiveness run the following in PowerShell:
(Get-Cluster).AutoBalancerLevel = <value>
AutoBalancerLevel Aggressiveness Behavior
1 (default) Low Move when host is more than 80% loaded
2 Medium Move when host is more than 70% loaded
3 High Average nodes and move when host is more than 5% above average




Controlling VM Load Balancing


VM Load Balancing is enabled by default and when load balancing occurs can be configured by the cluster common property ‘AutoBalancerMode’. To control when VM Load Balancing balances the cluster:

Using Failover Cluster Manager:

  1. Right-click on your cluster name and select the "Properties" option




2.  Select the "Balancer" pane



Using PowerShell:

Run the following: :
(Get-Cluster).AutoBalancerMode = <value>
AutoBalancerMode Behavior
0 Disabled
1 Load balance on node join
2 (default) Load balance on node join and every 30 minutes


VM Load Balancing vs. SCVMM Dynamic Optimization


The VM Load Balancing feature, provides in-box functionality, which is targeted towards deployments without System Center Virtual Machine Manager (SCVMM). SCVMM Dynamic Optimization is the recommended mechanism for balancing virtual machine load in your cluster for SCVMM deployments. SCVMM automatically disables the VM Load Balancing feature when Dynamic Optimization is enabled.

Short Video with an Overview of VM Load Balancing


Updated Mar 15, 2019
Version 2.0