说到网卡聚合,可能大家并不陌生,而且这个在”虚拟化世界“里尤为重要的功能,原来Windows Server R2中并不能提供支持,而是需要依靠HP,DELL,Intel,Broadcom等公司自己提供的软件进行设置和支持,但是这是不够的,要知道通过一个硬件厂商提供的聚合功能软件仅能对同种品牌的网卡进行统一的支持,这对于一个要求具有更多选择权和灵活性的数据中心而言是不够好的。当然你知道的,在Windows Server 中我们苦等的内置的,虚拟化环境所依赖的功能终于实现了在操作系统中的预置;因此充分了解合理利用这个功能是十分有益的。
那么什么是网络聚合或者Windows Server 中定义的网络聚合?在Server 中网络聚合有种称谓叫做LBOF(Load Balance and failover)字面上也很好理解,就是负载均衡同时实现故障切换功能的网络通道,熟悉这个LBOF灰常有意义,因为实现和查看网卡聚合状态需要用到的Powershell CMDLET就涉及了这个词汇;有了这个操作系统层面的功能,就可以将不同品牌的同质的网卡进行组合实现:
1. 网络带宽捆绑
2. 当网络组件出现故障时可以被检测到并自动进行故障转移
举例来说如果你不是配置成“主备”模式而是“双活”模式的网卡聚合,那么两个1GbE的千兆网卡可以实现2Gb的总吞吐,如果是两个万兆网卡就可以实现20Gb的总吞吐以此类推。Windows Server 支持多少个网卡进行捆绑呢?答案是32个!这是个绝对足够大的带宽:)
Server 支持两种网络聚合模式,在配置网络聚合的时候默认的是选择第一种模式:交换机独立模式
这种模式最为通用,因为不要求交换机参与网络聚合,因此交换机并不知道在聚合网络中的网卡属于主机中一个网卡聚合组,所以网卡可以连接不同的交换机不过交换机独立模式并不要求聚合组中的网卡连接到不同的交换机。
而且在连接不同交换机时采用的是主备模式,只有在连接在同一交换机时才可以实现负载均衡聚。交换机依赖模式
这种模式需要交换机参与网络聚合,并且要求所有网络聚合组网卡连接到同一个物理交换机或者以级联多交换机方式实现的对外显示为单一物理交换机的方式;根据交换机支持的模式可以有两种模式选择:通用的静态聚合模式即IEEE 802.3ad
这种模式需要在交换机上静态设置指定汇聚组中的网卡连接。由于这种方式需要静态指定,因此没有动态协商协议机制帮助交换机判断线缆连接的正确与否或是否有其他错误导致聚合失败。动态聚合模式即IEEE 802.1ax或LACP(LinkAggregationControlProtocol 链路汇聚控制协议)
这种模式由于有了LACP协议的支持,可以动态的识别服务器和交换机的连接,进而实现动态地创建聚合组,添加和移除组成员等工作,现在多数交换机都支持LACP即802.1ax协议,不过也大多需要在服务器连接的交换机端口中手工启用此功能。
通过图形方法配置,如果在Server 中启用了图形界面管理功能,可以利用服务器管理器简单的创建网络聚合。
当然,通过Powershell命令行是个很好的方式,先看看可以针对LBFO进行哪些操作:
创建一个网卡聚合组“NIC Teaming”,将所有本机物理网卡添加到这个组中,并且设置模式为交换机独立模式,负载均衡模式为默认哈希:
看看创建之后的网络设备,是不是多了一个NIC Teaming网卡?
当然,你也可以通过Powershell看到这个网络聚合网卡的状态:
1. 打开服务器管理器,点击本地服务器,查看当前服务器网络信息。系统默认情况下,NIC组合式禁用的,需要手动启用该技术
2. 点击“已禁用”以打开NIC组合配置页面,当前配置任何NIC组,因此“组”为“0”以及可添加到组的所有可用网络适配器信息
3. 单击“组”中的任务选择“新建组”
4. 新建组页面,键入NIC组的名称,以及选择需要将将哪些网络适配器添加到该组中
5. 展开“其他属性”,此时能看见NIC组的成组模式、负载平衡模式、备用适配器以及主要组接口(VLAN)
对于交换机依赖模式的网卡捆绑,主要有两种选择:1. 通用或静态捆绑(IEEE 802.3ad draft v1):该模式要求交换机与计算机上的配置能识别哪些链路进行了捆绑。因为这是静态配置的解决方案,没有其他用于协助交换的协议,计算机如果检测到错误连接的线缆或其他错误可能导致捆绑失败。服务器级别的交换机通常支持该模式。2. 动态捆绑(IEEE 802.1ax, LACP):IEEE 802.1ax 使用链路聚合控制协议(LACP)动态识别计算机与特定交换机之间的链路。这样可自动创建捆绑,并且理论上只需要传输或拒绝来自同级网络适配器的 LACP 即可扩展或缩小捆绑范围。典型的服务器级别交换机通常支持 IEEE 802.1ax,但大部分交换机都需要手工管理操作以启用端口的 LACP 功能。这两种模式都能导致传入和传出的通讯达到聚合后的带宽极限,因为捆绑中的链路池可作为单一管线使用。3. 交换机独立模式:系统默认设置,该模式不要求交换机参与组合配置,因为独立模式下的交换机并不认识网卡是虚拟机主机上的一部分。
Windows Server R2 中的网卡捆绑支持下列通讯分配方法以支持负载平衡:1. Hyper-V 交换机端口。如果虚拟机使用独立的介质访问控制(MAC)地址,则虚拟机 MAC 地址可提供基本的通讯划分。这是在虚拟化环境中使用该架构的一种优势。因为邻近的交换机可判断特定源 MAC 地址位于一个已连接的网络适配器,交换机会根据目标虚拟机的 MAC 地址通过多个链路对出口负载(从交换机到计算机的通讯)进行平衡。这种方式很适合配合虚拟机队列一起使用。然而该模式可能无法实现足够平均的分配,并且限制了一个虚拟机只能使用单一网络适配器的可用带宽。(备注:Windows Server R2 使用 Hyper-V 交换机端口作为标识符,而非源 MAC 地址,因为在某些情况下虚拟机可能需要在一个交换机端口上使用多个 MAC 地址。)2. 哈希。该算法会根据数据包组件创建哈希,并根据哈希值将数据包分配给某个可用网络适配器。这样可确保来自同一 TCP 流的所有数据包使用同一个网络适配器。哈希算法本身通常可跨越所有可用网络适配器实现平衡。某些市售网卡捆绑解决方案会监控通讯的分配,并为不同网络适配器充分分配特定的哈希值,借此更好地对通讯进行平衡。这种动态重分配也叫做智能负载平衡或自适应负载平衡。在哈希运算中,可用作输入方的组件包括:1) 源与目标 MAC 地址2) 源与目标 IP 地址,可考虑或不考虑 MAC 地址(双重哈希)3) 源与目标 TCP 端口,通常与 IP 地址配合使用(四重哈希)四重哈希能对通讯流实现更细化的分配,进而可在网络适配器之间用相互独立的方式移动较小规模的数据流。然而该技术不能用于非 TCP 或 UDP 协议的通讯,也不能用于堆栈中 TCP 与 UDP 端口被隐藏的通讯,例如被互联网协议安全(IPSec)保护的通讯。在这种情况下,所用哈希技术将回退为双重哈希。如果通讯并非 IP 通讯,则哈希生成器将使用源与目标地址的 MAC 地址。3. 动态网卡捆绑。Windows Server R2 使用 Flowlet 的概念实现动态 LBFO。Flowlet 是存在于大部分网络通讯流中的一组 TCP/IP 数据包,继承了 TCP 通讯“突发”这一特性。使用 Flowlet 对负载进行平衡的优势在于 Flowlet 的体积比流小,发送频率更高,可更精确快速地在不同成员间对网络通讯实现重新平衡。Windows Server 无法检测 Flowlet,因此无法重新进行平衡。Flowlet 总会使用与通讯流中上一个 Flowlet 相同的路径传输。在 Windows Server R2 中,每个 Flowlet 都可独立路由到捆绑中上次使用过的网卡。随后 Flowlet 中的每个数据包将使用同一个捆绑成员。通过 MAC 地址重写,附近的交换机就不会察觉流的移动。
Windows Server R2 中的网卡捆绑还能用于虚拟机。这样虚拟机即可通过虚拟网络适配器连接到多个 Hyper-V 交换机,就算该交换机下的一个网络适配器断开也能维持连接。在使用单根 I/O 虚拟化(SR-IOV)等功能时,这一特性尤为重要,因为 SR-IOV 通讯并不通过 Hyper-V 交换机传输,因此无法受到 Hyper-V 交换机中网卡捆绑的保护。通过对虚拟机本身进行捆绑,管理员可设置最多两个 Hyper-V 交换机,每个连接到一个支持 SR-IOV 的专用网络适配器。这样即可实现:1. 每个虚拟机通过支持 SR-IOV 的一个或多个网络适配器安装虚拟 Function,随后一旦有网络适配器断开,虚拟机依然可从主要虚拟 Function 故障转移到后备虚拟 Function。2. 或者虚拟机可通过一个网络适配器获得一个虚拟 Function,并通过非虚拟 Function 网络适配器连接到其他交换机。如果关联虚拟 Function 的网络适配器断开,通讯即可不断开直接故障转移到其他交换机。备用适配器下,默认为“无(所有网络适配器处于活动状态,即active-active)”
如果管理员希望网络接口具有VLAN功能,则点击“默认VLAN”以打开VLAN对话框以便选择相应的VLAN ID
6. 点击确定,即可创建NIC 组以支持网卡的高可用性
7. 打开网络共享中心,查看网络属性,此时以创建一块特殊标识的网卡,即VMNIC
8. 原有的网络适配器属性中,没有TCP/IPv4信息,但是多了一个Microsoft网络适配器多路径传送器协议以实现网络适配器负载平衡和故障转移
下面演示如何使用Windows PowerShell创建NIC Teaming1. 以管理员身份打开Windows PowerShell2. 使用“Get-NetAdapter”查询当前主机所有网卡信息
3. 使用“New-NetLbfoTeam”命令将NIC1和NIC2添加到NIC组“AppNIC”中
4. 使用“Get-NetLbfoTeam”查看NIC Teaming信息
5. 使用“Set- NetLbfoTeam”修改NIC Teaming成组模式
6. 使用“Set- NetLbfoTeam”修改NIC Teaming负载平衡模式
7. 使用一下命令设置NIC Teaming的模式为交换机独立模式,负载平衡模式为Transporports(地址哈希)
8. 使用“Get-NetLbfoTeammember”查看NIC Teaming网络适配器状态,当前显示的active-active
9. 使用“Set-NetLbfoTeammember”修改NIC为standby模式