Set up a converged Network for Windows Server 2012 Hyper-V Failover Cluster
September 10, 2012 |
Gunter Danzeisen Converged networks is a new functionality in Windows Server 2012 which allows the creation of virtual network adapter (normally used for virtual machines) in the parent partition (management OS). This feature is specially useful in Hyper-V Failover Cluster scenarios where multiple networks are required. These networks are, the Management network (or host network), the Live Migration network, the Cluster & CSV network and the network for the virtual machine network traffic.
In this example I start with a computer with five NICs. NIC 1-3 are teamed using the Windows Server 2012 teaming feature. The team network adapter is called ConvergedNicTeam. There are also two NICs for iSCSI network traffic.
Since converged networks can not be created using a user interface, PowerShell must be used. Therefore, PowerShell will be used in this example. So, let’s get an overview of the installed NICs first:
PS C:\> Get-NetAdapter | sort Name
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
1vO Converged Team Intel(R) 82579V Gigabit Network Conn... 22 Up F4-6D-04-52-C7-4D 1 Gbps
2vO Converged Team Intel(R) Gigabit CT Desktop Adapter 12 Up 00-1B-21-A8-5E-F7 1 Gbps
3vO Converged Team Intel(R) PRO/1000 GT Desktop Adapter 14 Up 00-1B-21-B4-CA-F6 1 Gbps
4vO – iSCSI Intel(R) Gigabit CT Desktop Adapter #2 13 Up 00-1B-21-A8-5D-03 1 Gbps
5vO – iSCSI Intel(R) PRO/1000 GT Desktop Adapter #2 15 Up 00-1B-21-B0-1E-1F 1 Gbps
ConvergedNicTeam Microsoft Network Adapter Multiplexo... 25 Up F4-6D-04-52-C7-4D 3 Gbps
First a new Hyper-V virtual switch needs to be created. The switch is created with the “Weight” mode in order to guaranty a minimum amount of network bandwidth for the cluster networks.
PS C:\> New-VMSwitch "ConvergedVMSwitch" -MinimumBandwidthMode Weight -NetAdapterName "ConvergedNicTeam"
Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
ConvergedVMSwitch External Microsoft Network Adapter Multiplexor Driver
Next, I check that the Hyper-V Extensible Virtual Switch is bind to the correct network adapter.
PS C:\Windows\system32> Get-NetAdapterBinding | where {$_.DisplayName -like "Hyper-V*"}
Name DisplayName ComponentID Enabled
---- ----------- ----------- -------
vEthernet (ConvergedVMSwitch) Hyper-V Extensible Virtual Switch vms_pp False
5vO – iSCSI Hyper-V Extensible Virtual Switch vms_pp False
3vO Converged Team Hyper-V Extensible Virtual Switch vms_pp False
1vO Converged Team Hyper-V Extensible Virtual Switch vms_pp False
4vO – iSCSI Hyper-V Extensible Virtual Switch vms_pp False
2vO Converged Team Hyper-V Extensible Virtual Switch vms_pp False
ConvergedNicTeam Hyper-V Extensible Virtual Switch vms_pp True
This shows that the ConvergeNicTeam is bind to the Hyper-V Exensible Virtual Switch protocol. By default, when a VM switch is created using this PowerShell cmdlet, a virtual management NICs is also created. This NICs is required because I used all the NICs for the NIC team and the team is now my Hyper-V virtual switch. Without, the virtual management NIC, I would have no access to the Hyper-V host itself anymore, or I would need to place a separate physical NIC into the Hyper-V host.
Let’s have another look at the NICs:
PS C:\> Get-NetAdapter | sort name
Name InterfaceDescription ifIndex Status MacAddress
---- -------------------- ------- ------ ----------
1vO Converged Team Intel(R) 82579V Gigabit Network Conn... 22 Up F4-6D-04-52-C7-4D
2vO Converged Team Intel(R) Gigabit CT Desktop Adapter 12 Up 00-1B-21-A8-5E-F7
3vO Converged Team Intel(R) PRO/1000 GT Desktop Adapter 14 Up 00-1B-21-B4-CA-F6
4vO – iSCSI Intel(R) Gigabit CT Desktop Adapter #2 13 Up 00-1B-21-A8-5D-03
5vO – iSCSI Intel(R) PRO/1000 GT Desktop Adapter #2 15 Up 00-1B-21-B0-1E-1F
ConvergedNicTeam Microsoft Network Adapter Multiplexo... 25 Up F4-6D-04-52-C7-4D
vEthernet (ConvergedVM... Hyper-V Virtual Ethernet Adapter #2 35 Up F4-6D-04-52-C7-4D
The new management NIC is created with the name vEthernet (ConvgeredVMSwitch). The interface description is Hyper-V Virtual Ethernet Adapter. The name in brackets basically tells to which Hyper-V virtual switch this NIC belongs to.
Next, I create the virtual NICs for the LiveMigration and the ClusterCSV networks. Then I set a VLanID on each of the NICs to have separate broadcast domains. Note that –ManagementOS parameter. This tells the command to create the virtual network adapter in the parent partition (the Hyper-V OS). The other parameters are the name of the new virtual network adapter and the Hyper-V virtual switch they are connected to.
PS C:\> Add-VMNetworkAdapter -ManagementOS -Name "LiveMigration" -SwitchName "ConvergedVMSwitch"
PS C:\> Add-VMNetworkAdapter -ManagementOS -Name "ClusterCSV" -SwitchName "ConvergedVMSwitch"
PS C:\> Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "LiveMigration" -Access -VlanId 10
PS C:\> Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "ClusterCSV" -Access -VlanId 20
Let’s look at the NICs again:
PS C:\> Get-NetAdapter | sort name
Name InterfaceDescription
---- --------------------
1vO Converged Team Intel(R) 82579V Gigabit Network Conn...
2vO Converged Team Intel(R) Gigabit CT Desktop Adapter
3vO Converged Team Intel(R) PRO/1000 GT Desktop Adapter
4vO – iSCSI Intel(R) Gigabit CT Desktop Adapter #2
5vO – iSCSI Intel(R) PRO/1000 GT Desktop Adapter #2
ConvergedNicTeam Microsoft Network Adapter Multiplexo...
vEthernet (ClusterCSV) Hyper-V Virtual Ethernet Adapter #4
vEthernet (ConvergedVM... Hyper-V Virtual Ethernet Adapter #2
vEthernet (LiveMigration) Hyper-V Virtual Ethernet Adapter #3
The PowerShell cmdlets created two new NIC. Each NICs gets the virtual network adapter name in the brackets. That basically tells me which NIC is associated with which virtual network adapter. For consistent naming, I rename the NIC that was automatically created as the management NIC:
PS C:\> Rename-NetAdapter -Name "vEthernet (ConvergedVMSWitch)" -NewName "vEthernet (Host)"
As a result, the list of NICs now look like:
PS C:\> Get-NetAdapter | sort name
Name
----
1vO Converged Team
2vO Converged Team
3vO Converged Team
4vO – iSCSI
5vO - iSCSI
ConvergedNicTeam
vEthernet (ClusterCSV)
vEthernet (Host)
vEthernet (LiveMigration)
Since I renamed the NIC, I can not tell what the previous virtual network adapter name was. To get a list of the created virtual network adapters in the parent partition, I run following cmdlet:
PS C:\> Get-vmnetworkadapter -ManagementOS
Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses
---- -------------- ------ ---------- ---------- ------ -----------
ClusterCSV True ConvergedVMSwitch 00155D143304 {Ok}
LiveMigration True ConvergedVMSwitch 00155D143303 {Ok}
ConvergedVMSwitch True ConvergedVMSwitch F46D0452C74D {Ok}
This now shows me all the virtual network adapters that are connected to my Hyper-V virtual switch. Using the MAC Address, I can find out which of these virtual network adapters belong to which NIC, called vEthernet (…).
Finally, I set up the minimum bandwidth weight that I want to provide on each adapter. This guaranties a bandwidth that is available on the virtual network adapter in relation to the other adapters. In my example, the CSV network will get the most bandwidth. This is not a fixed bandwidth value, but a value that is a percentage of the complete bandwidth available. Therefore, if you increase the total bandwidth of your NIC team, the minimum bandwidth also increases. To calculate the percentage a virtual network adapter gets, add all the weights together. Then divide the configured weight of a single virtual network adapter by the value of the total weight and multiply with 100.
Note: If you don’t want to go with a weight value but with a fixed bandwidth value. You need to specify that during the creation of the Hyper-V virtual switch.
So here’s what I configured:
PS C:\> Set-VMNetworkAdapter -ManagementOS -Name "ClusterCSV" -MinimumBandwidthWeight 40
PS C:\> Set-VMNetworkAdapter -ManagementOS -Name "LiveMigration" -MinimumBandwidthWeight 20
PS C:\> Set-VMNetworkAdapter -ManagementOS -Name "ConvergedVMSwitch" -MinimumBandwidthWeight 5
The ClusterCSV adapter gets quite a high weight compared to the other adapters. The reason for this is following: In case that a storage connection to the shared storage is lost, the storage data traffic of that Hyper-V cluster node is redirected via the CSV network to another Hyper-V cluster node. When this happens, you want to assure that there is enough bandwidth for this storage traffic.
Next, I configured the IP addresses on the NICs of the ClusterCSV and the LiveMigration network. Now, when I open the failover manager, I see that the new networks are available:
The final step would be to verify that the cluster networks are configured correctly. However, this has nothing to do with converged networks and is stand cluster administration.
Hope that helps..
