使用 PowerShell 和 GUI 掌握 NIC Teaming

您是否希望在核心交換機故障時,伺服器仍能無縫保持可用?您是否希望伺服器能夠存取多個虛擬局域網(VLAN),而不依賴特定供應商的驅動程式?您是否希望簡化物理和虛擬主機的網路配置?如果您對這些問題的回答是肯定的,那麼這篇文章就是為您準備的。利用NIC Teaming,您可以實現這些目標。

NIC Teaming可以提高機器的容錯能力,更好地利用網路資源(負載平衡),配置機器使用的VLAN並簡化網路配置。

在本文中,您將了解什麼是NIC Teaming,在虛擬機器中使用NIC Teaming時需要考慮的特殊情況,以及如何在組織中部署它。

前提條件

您不需要成為Windows或網路管理專家才能理解NIC Teaming。但是,您需要一些技術和知識前提條件才能理解並應用本文。這些項目包括:

  • 理解網路的運作方式(MAC地址、IP地址、VLAN)
  • 使用具有兩個或更多網路適配器的Windows Server 2016(或2019) – 幾乎您所看到的內容同樣適用於Windows Server 2016、2012R2和Windows Server 2012

理解NIC Teaming

在傳統的物理伺服器網路設置中,通常通過將多個網路電纜從伺服器插入多個物理交換機(可能是單個交換機堆棧的一部分)來提供容錯能力。因此,伺服器始終具有多個活動IP地址,但負載平衡是不存在的。

通過在您的服務器上部署網絡介面卡(NIC)團隊,您可以與多個物理交換機保持連接,但僅使用一個IP地址。負載平衡變得更加可用。容錯容易實現,而不需要等待DNS記錄超時/更新,並且管理更加簡單。

NIC Teaming是Windows Server中的一個功能,允許您將NIC分組成“團隊”。每個團隊由一個或多個團隊成員(在團隊中的NIC)和一個或多個可供使用的虛擬NIC組成。

團隊成員是團隊用於與交換機通信的網絡適配器。 團隊接口是在建立團隊時創建的虛擬網絡適配器。由於團隊接口會接收一個IP地址,所以很難記住它們之間的區別。

NIC團隊和綁定有什麼區別?

NIC Teaming和NIC Bonding是同義詞。

從Windows Server 2012開始,NIC Teaming在所有版本的Windows Server中都可用。這個功能非常靈活,為管理員提供了更簡單的解決方案,可以實現聯接集合/負載平衡、容錯和軟件定義網絡(VLANs)等功能。

某些硬件和供應商提供了類似的解決方案,但是微軟的NIC團隊實現旨在以硬件和供應商無關的方式提供這些功能。

NIC團隊和橋接之間有什麼區別?

NIC Teaming 允許您創建一個跨越位於同一子網上的一個或多個網絡介面卡的 NIC 介面。NIC 橋接允許您將來自不同子網的 NIC 介面配對,以實現兩個子網之間的通信。

在配置 NIC Team 時,您需要設置 Teaming 模式負載平衡模式、待備網絡介面卡Team 介面的虛擬局域網 (VLAN)。下面將對這些組件進行解釋。

Teaming 模式

在創建 NIC Team 時,必須選擇要使用的 Teaming 模式。Teaming 模式決定了服務器和交換機如何在多個鏈路之間分配流量。有三種類型的 Teaming 模式:Switch 獨立、LACP 和靜態。

Switch 獨立

Switch 獨立 Teaming 允許您將團隊成員連接到多個非堆疊交換機。Switch 獨立模式是唯一一種在連接到交換機上不使用配置更改的 Teaming 模式。此模式僅使用 MAC 地址來控制應將接收的數據發送到哪個介面。

有幾種情況下,您可能選擇使用 Switch 獨立 Teaming 模式,例如:

  • 您不會對連接的交換機進行配置更改
  • 使用多個非堆疊交換機作為團隊成員
  • 在虛擬機中創建 NIC Team(關於此方面的更多信息,請參閱下面的虛擬機使用注意事項部分)

如果您希望在物理链路故障时仅使用一个适配器进行流量,并在发生故障时切换到备用适配器,您必须使用独立交换机团队模式,并配置一个备用适配器。

A standby adapter is not used often because it reduces the total bandwidth that is available for communicating with the server. The default setting is “None (all adapters Active)”.

静态

静态团队合作要求您手动配置与网卡团队连接的交换机上的端口,将其配置为链路聚合组(LAG)。服务器和交换机将在所有连接正常的链路之间分配流量。

如果任一端口连接到其他设备,流量将分流到不期望的链路上。因此,它无法帮助隔离诸如错误插入电缆等错误。

只有在交换机不支持LACP时才应使用静态团队模式。

LACP团队合作与静态团队合作类似,但它还跟踪确保链路中的每个活动电缆实际连接到预期的LAG。LACP不会通过未连接到预期LAG的链路发送数据。

当您希望使交换机意识到网卡团队以便负载均衡交换机发送到网卡团队的数据时,应使用LACP。

重要提示:静态和LACP团队合作模式要求您将主机仅连接到单个交换机或单个交换机堆叠。

负载均衡模式

負載平衡模式確定團隊將如何呈現傳入數據的介面,並確定用於傳出數據的適配器。可用的選項有地址哈希Hyper-V端口動態

與“負載平衡設備”不同,傳入流量不會均勻分配到團隊成員使用的每個連接上。

地址哈希

地址哈希模式將嘗試使用源IP地址、目標IP地址和端口來在團隊成員之間實現有效平衡。如果連接中沒有端口,則僅使用IP地址來確定如何進行負載平衡。對於沒有IP地址的連接,將使用MAC地址。

在創建網卡團隊時,您可以強制團隊使用IP+端口、僅IP或僅MAC地址。默認情況下,使用IP+端口可以在團隊成員之間提供最佳平衡。要使用僅IP或僅MAC地址,您需要通過PowerShell創建網卡團隊。

儘管地址哈希負載平衡模式在將出站流量均勻分配給團隊成員方面表現出色,但無法適應過度/低度利用的團隊成員。此外,所有傳入流量都使用主要團隊介面的MAC地址。但如果使用獨立開關團隊模式,這僅限於單個連接。

在虛擬機內部創建團隊時,必須使用地址哈希。

Hyper-V端口

Hyper-V Port 模式僅適用於 Hyper-V 虛擬機主機。此模式將為虛擬機主機上的每台機器分配一個 MAC 地址,然後為每個 MAC 地址分配一個團隊成員。這樣,在正常操作下,特定的虛擬機將擁有一個可預測的團隊成員。

每個虛擬機的可預測團隊成員意味著該虛擬機的帶寬限制在其所操作的單個連接的最大值上。當 Hyper-V 主機上沒有多個虛擬機時,使用 Hyper-V Port 負載平衡模式可能不太平衡。

通常情況下,您不需要使用 Hyper-V Port 模式,但如果您必須確保每個虛擬機始終使用同一個連接,則可能會有所好處。

動態

動態模式結合了地址哈希Hyper-V Port模式的最佳功能,以平衡出站和入站網絡流量。像Hyper-V一樣,入站流量通過為不同的 MAC 地址分配團隊成員來分割。像地址哈希一樣,出站流量通過從 IP/Port 衍生的組合哈希來分割。這種混合提供了比上述任何一種方法更好的平衡效果。

動態平衡模式帶來了一個重要的改進:動態監測流量。當動態模式算法確定某些團隊成員的使用情況過高/過低時,它將根據需要重新平衡出站流量到其他團隊成員上。

TCP流具有自然的节奏,可以预测TCP中未来的流量量/中断;微软将其称为flowlets。 动态负载均衡模式也可以通过flowlets预测团队成员的过度/欠利用情况,并重新平衡出站流量以做好准备。

动态模式几乎总是最佳的负载均衡选项。

团队接口VLAN

创建团队时,默认情况下会创建一个团队接口。团队接口具有一个VLAN设置,用于将接口上的流量标记到特定的VLAN。通常只有在用于创建NIC团队的团队成员使用“传输”模式时,才会将团队接口VLAN设置为带标记的VLAN。

创建团队后,可以在不同的VLAN上创建其他团队接口。

警告:微软建议您永远不要为VM中的接口设置VLAN。而是使用Hyper-V交换机高级选项“VLAN ID”为VM定义VLAN。

虚拟机中的NIC Teaming

在VM中设置NIC团队存在一些限制。微软特别指出使用“Teams on Teams”(主机级别团队和VM级别团队)可能非常不可预测并导致连接丢失。

傳統上,為了提供虛擬機器的容錯能力,必須將虛擬機器連接到多個外部虛擬交換機。您需要計劃哪些虛擬機器將共享每個虛擬交換機,以確保沒有一個虛擬交換機變得過於擁擠。負載平衡問題進一步複雜化,可能會因主機上其他虛擬機器的擁擠而導致擁擠。

現在,您可以在虛擬機主機上部署一個網絡介面卡(NIC)團隊,並將一個網絡介面卡分配給每個虛擬機器。所有虛擬機器都能夠從物理端口或交換機故障中獲得完整的容錯能力。所有虛擬機器的流量可以在團隊成員之間平衡,從而實現更好的總吞吐量和擁擠處理能力。現在,您的配置可能如下所示:

A NIC Team topology

在虛擬機中使用NIC團隊有時被用於啟用SR-IOV,以減少網絡堆棧的CPU開銷。您還需要BIOS支持和NIC支持才能使SR-IOV正常運作。

要求

在虛擬機中使用NIC團隊需要滿足以下要求才能成為“支援的配置”:

  1. 您必須在虛擬機中使用多個網絡介面卡。
  2. 這些網絡介面卡必須連接到兩個都是“外部”類型的虛擬交換機。
  3. 如果連接到物理交換機,則交換機必須位於同一個L2子網中。
  4. 虛擬機的NIC團隊模式必須設置為“獨立交換機”,並且負載平衡模式必須設置為“地址哈希”。

在Hyper-V中,您还需要从每个网络适配器的高级功能选项卡中启用VM的NIC Teaming功能。您可以在下面的示例中看到这个设置的样子。

NIC Teaming Hyper-V option

最大化性能

NIC Teaming在开箱即用时具有良好的性能,但在某些情况下,您可能需要重点关注性能的提升。这些情况的具体细节超出了本文的范围,但如果您想了解更多关于如何提高性能的信息,请关注以下术语:

  • 远程直接内存访问(RDMA)
  • 嵌入式交换机组网(SET)
  • 接收端缩放(RSS)
  • 单根I/O虚拟化(SR-IOV)

一般来说,这些附加设置可以减少网络堆栈的一些CPU开销和连接之间的延迟。您可以在《软件和硬件技术解释》和《通过RDMA实现更高性能的SET》文章中了解更多有关提高性能的信息。

在Windows Server上创建NIC Team

了解了NIC Teaming的工作原理和简化网络的愿景后,现在您应该准备创建一个NIC Team!

根据演示环境的限制,将在虚拟机上创建一个 NIC 团队。在物理服务器上设置 NIC 团队的步骤相同,但如果需要特定于虚拟机的步骤,将在下面说明。

如何检查 NIC 团队是否已启用?

自 2012 年以来的所有 Windows Server 版本(Server 2012、2012R2、2016 和 2019)都启用了 NIC 团队。

通过 GUI 部署 NIC 团队

首先,在 Windows Server 机器上打开 Server Manager。确保已连接到要在其上配置 NIC 团队的机器。

  1. 首先,右键单击要创建 NIC 团队的服务器名称,然后选择配置 NIC 团队
Configure NIC Teaming option in Server Manager

2. 在适配器和接口面板中,选择要添加到新团队的 NIC。接下来,右键单击所选适配器,然后选择添加到新团队

Add to New Team option in Server Manager

注意:您可以使用任意组合的一个或多个适配器(最多 32 个)和一个或多个团队接口来配置 NIC 团队。

3. 输入一个描述性的团队名称,根据需要配置附加属性,然后单击确定创建团队。

在此示例中,将在虚拟机上设置 NIC 团队。因此,无法使用团队模式负载平衡模式。如果此演示在物理服务器上进行,则可能使用独立交换机LACP(如果在交换机上使用链路聚合组)。

New Team dialog box

现在,Windows Server 上应该已经创建了 NIC 团队。

添加更多的NIC或接口到NIC团队

创建完成后,您可以从相同的NIC团队窗口中添加NIC到配置好的团队。要这样做,请右键单击一个可用的NIC,然后选择添加到团队“<团队名称>”

Add to Team “Demo” option

您还可以通过选择团队接口选项卡,然后单击任务 -> 添加接口来将更多接口添加到团队中,如下所示。

Add Interface option

一旦输入框弹出,输入要使用的VLAN和可选的名称,如下所示。

New Team interface dialog box

通过Windows PowerShell部署NIC团队

现在您已经知道如何通过图形界面设置NIC团队,让我们来看看如何通过PowerShell来完成这个操作。

查找NIC名称

首先,您必须决定要添加到团队的NIC。更具体地说,您需要找出NIC的名称。

要查找NIC名称,使用Get-Adapter cmdlet。运行此cmdlet并注意下面显示的选项。

Get-Adapter PowerShell cmdlet

一旦您已经记下了名称,您现在可以通过PowerShell来创建团队了!在本演示中,我们将使用Ethernet 3和4这两个NIC来创建新的NIC团队。

创建NIC团队

现在您已经掌握了适配器名称,您只需要运行另外一个cmdlet (New-NetLbfoTeam)。下面是运行New-NetLbfoTeam cmdlet的示例及其输出。

对于TeamMembers参数,您将使用之前获取的NIC名称。

在這個例子中,TeamingMode 被設置為 SwitchIndependent。如果你正在將交換機端口配置為LAG,你可能會選擇使用 LACP。如果你不使用LAG,你可能會選擇使用 SwitchIndependent

參數值 LoadBalancingAlgorithm 被設置為 Dynamic,因為這種模式能夠在團隊成員之間實現最均衡的負載平衡。

New-NetLbfoTeam -TeamMembers <NIC Names> -Name "<Desciptive Name>" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm TransportPorts
Using the New-NetLbfoTeam PowerShell cmdlet

完成後,你會在 Get-NetAdapter 的適配器列表中看到一個新的虛擬網卡:

New virtual NIC created

虛擬機器上的網卡團隊筆記:

– 你必須使用 ‘SwitchIndependent’ 的 TeamingMode。
– 你必須使用其中一種 Address Hash 類型的 LoadBalancingAlgorithm(TransportPorts)。
– 在物理服務器上,應使用動態負載平衡而不是 TransportPorts。*

添加更多的網卡或介面到網卡團隊

一旦你建立了網卡團隊,你可以像圖形界面一樣添加網卡和介面。要添加更多的網卡到團隊中,使用 Add-NetLbfoTeamMember 命令*.*

Add-NetLbfoTeamMember -Name NIC1 -Team Team1

你也可以使用命令 Add-NetLbfoteamNIC 添加更多的團隊介面。

Add-NetLbfoTeamNIC -Team Team1 -VlanID 42

總結

您現在已經了解了NIC Teaming是什麼,它如何與性能/虛擬機使用/簡化網絡相關,以及如何通過GUI或PowerShell部署它。

Source:
https://adamtheautomator.com/nic-teaming/