The cluster IP address in an HNV environment is updated incorrectly during failover

Applies to: System Center 2012 R2

Symptoms


Consider the following scenario:
  • You have a Hyper-V cluster that is running in a Hyper-V Network Virtualization (HNV) environment.
  • You have a two-node guest cluster of virtual machines (VMs) that are running on different hosts.
  • A failover of one of the VMs in the guest cluster occurs.
In this scenario, the Cluster IP address of the guest cluster becomes unreachable.

Cause


This problem may occur during the failover of more than one Cluster IP address because System Center 2012 R2 Virtual Machine Manager (VMM) did not update the lookup records for these addresses correctly. When a failover occurs, VMM cannot update the mappings or the flag that is used to mark the lookup record type as Dynamic in its database. This behavior may occur because the HNV driver cannot queue up some "CA changed" notification events for VMM or because VMM cannot process those events correctly because of synchronization issues. After VMM changes the lookup record type to Static, any future failovers of that IP address are not updated automatically. Therefore, the IP address becomes unreachable.

Resolution


The fix for this problem is included in Update rollup 3 for System Center 2012 R2 Virtual Machine Manager.

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

More Information


This connectivity problem can disappear automatically after a while. However, to work around this problem immediately, bring the problematic instance offline, refresh the VM and its host, and then bring the instance online again.

When this problem occurs, the status of the lookup record of the problematic instance is Static. (This is true only if GuestIPNetworkVirtualizationUpdates is enabled on the virtual network adapter for the VM in System Center 2012 R2 Virtual Machine Manager). Therefore, when the failover occurs, the lookup records are not updated automatically. When the status of the lookup record type is Dynamic, the instance is considered to be good.

To determine the status of the instance, run the following command:

Get-NetVirtualizationLookupRecord