FAQ- RedHat操作系统如何进行网卡绑定

发布时间:  2014-09-26 浏览次数:  669 下载次数:  0
问题描述
 RedHat操作系统如何进行网卡绑定?
解决方案
软硬件准备:
 RHELS 5.3系统盘。
 Netperf网卡测试工具。
 服务器单板T6000一块、Client端主机两台。
 S5328C交换机一台。
 光驱一个及网线若干。

操作步骤:
以RHELS 5.3系统下进行网口绑定为例,其它版本的RedHat亦可参照以下步骤。
步骤 1 确认驱动。
默认网口绑定的驱动(bonding driver)在系统中已经作为模块形式存在,但是没有自动加载。可以通过modprobe bonding命令加载。
说明:
        如果需要系统开机启动绑定,则在/etc/modprobe.conf中添加一行:
alias bondX bonding
“X”即为第几个绑定,如配置ifcfg-bond0,则这里添加:
alias bond0 bonding
步骤 2 创建网口的配置文件。
1. 命令行下输入system-config-network,将eth0和eth1配置为DHCP启动,然后保存配置后退出。
2. 用cd命令切换到目录/etc/sysconfig/network-scripts下,查看eth0(eth1)的配置文件ifcfg-eth0(ifcfg-eth1),如图3-7所示。
图3-7 网口配置文件

3. 修改其中的参数。
修改其中的:
BOOTPROTO='none'
增加内容:
MASTER=bond0
SLAVE=yes
保存退出,修改后如图3-8所示。
图3-8 修改后的网口配置文件

eth1的配置文件ifcfg-eth1也做同样修改,如图3-9所示。
图3-9 修改后的ifcfg-eth1

4. 创建bond0配置文件。
在/etc/sysconfig/network-scripts路径下,创建文件“ifcfg-bond0”,内容如图3-10所示。
图3-10 ifcfg-bond0文件

其中BROADCAST、IPADDR、NETMASK和NETWORK根据自身具体情况配置。
说明:
对于老版本的RedHat,例如REHLS 4.7,不支持“BONDING_OPTS”选项,则需要在文件/etc/modprobe.conf的文件末尾增加如下两行命令:
alias bond0 bonding
options bond0 mode=0 miimon=100
如果绑定配置文件支持“BONDING_OPTS”,不需要修改/etc/modprobe.conf文件。
这里网口绑定工作模式选择了负载均衡模式:mode=2(balance-xor),要使用备份冗余功能则选择:mode=1(active-backup),绑定工作模式的具体介绍请参考如下信息:
(Linux操作系统网口绑定工作模式
Bonding驱动一共提供了7种负载均衡模式,它们分别是:balance-rr、active-backup、balance-xor、broadcast、802.3ad、balance-tlb、balance-alb,其中最常用的是balance-xor和balance-alb。
 balance-rr or 0:轮询模式,提供负载平衡和容错。该模式下两个网口都工作。
 active-backup or 1:主备倒换模式,提供冗余功能,该模式下只有一个网口工作,另一个做备份。本模式可以和任何二层(Layer-II)交换机一起工作。
 balance-xor or 2:基于HASH算法的负载均衡模式,网卡的分流按照xmit_hash_policy的TCP协议层设置来进行HASH计算分流,使各种不同处理来源的访问都尽量在同一个网卡上进行处理。
 broadcast or 3:广播模式,所有被绑定的网卡都将得到相同的数据,一般用于十分特殊的网络需求。
 802.3ad or 4:802.3ad模式,要求交换机也支持802.3ad模式,理论上服务器及交换机都支持此模式时,网卡带宽最高可以翻倍(如从1Gbps翻到2Gbps)。在本模式中,bonding可以和支持IEEE 802.3ad动态连接聚合(Dynamic Link Aggregation)的系统一起工作,大多数可管理交换机和很多不可管理交换机都支持802.3ad。
 balance-tlb or 5:适配器输出负载均衡模式,输出的数据会通过所有被绑定的网卡输出,接收数据时则只选定其中一块网卡。如果正在用于接收数据的网卡发生故障,则由其他网卡接管,要求所用的网卡及网卡驱动可通过ethtool命令得到speed信息。
 balance-alb or 6:适配器输入/输出负载均衡模式,在"模式5"的基础上,在接收数据的同时实现负载均衡,除要求ethtool命令可得到speed信息外,还要求支持对网卡MAC地址的动态修改功能。
xmit_hash_policy参数(此参数对mode参数中的2、4模式有影响,缺省设置是layer2):
 layer2-使用硬件MAC地址的XOR来生成hash。
计算公式:(源MAC地址 XOR 目的MAC地址)% slave数目
该算法会将某个网络对(network peer)上所有的流量全部分配到同一个slave上。
 layer3+4-通过TCP及UDP端口及其IP地址进行HASH计算。
计算公式:((portsrc⊕portdest) ⊕ (IPsrc⊕IPdest)) % Nslave
mode参数中的0、2、3、4模式要求交换机支持“ports group”功能并能进行相应的设置,例如在Cisco中要将所连接的端口设为“trunk group”。
在基本的balance模式(balance-rr或者balance-xor)下,bonding可以在任何支持etherchannel(也称为trunking)的系统运行。大多数目前的可管理交换机都有支持,很多不可管理的交换机也有支持。
高级balance模式(balance-tlb和balance-alb)没有特别的交换机需求,但需要设备驱动支持特定功能(在balance-tlb和balance-alb的介绍中有描述)。
Windows操作系统网口绑定工作模式
Intel82571网卡驱动程序一共提供了五种高级网络服务(ANS)组类型,分别为适配器容错、适应性负载平衡、静态链接聚合、IEEE 802.3ad 动态链接聚合、交换机容错。下面介绍几种组类型的特点。

适配器容错
适配器容错(AFT)在交换机端口、电缆或适配器发生故障时,通过自动从活动适配器向待命适配器进行故障恢复转移来提供冗余。
活动适配器会选定一个适配器。所有其他适配器的ASF都为待命。
可以为组选择主适配器和次适配器,但不是必需的。
 如果选择了主适配器,它便成为组的活动适配器。
 如果选择了一个次适配器,则它成为待命适配器。如果活动适配器发生故障,则次适配器取而代之,而其他所有适配器均仍为待命。
 非主适配器或次适配器的适配器始终处于待命状态,除非主适配器和次适配器均发生故障。
 如果不选择主适配器,则组会使用组中速度最快的适配器。
 如果更改或添加了主适配器,该组将重新加载,导致短时间丢失连接。
配置说明
 AFT支持每组两到八个适配器端口。
 组成员不必以相同的速度或双工模式运行。
 此分组模式不要求配置交换机。
 此种分组模式适用于任何交换机或集线器。
适应性负载平衡
“适应性负载平衡”(ALB)在交换机端口、电缆或适配器发生故障时提供传输通信量的负载平衡及容错。
英特尔(R)PROSet分析各成员适配器的传输负载并在成员适配器之间平衡通信量。一个适配器接受所有接收通信量。
ALB组有用于接收负载平衡(RLB)的选项。RLB允许组在所有成员适配器之间平衡接收通信量。RLB默认启用。
可以为组选择主适配器和次适配器,但在RLB禁用的情况下不是必需的。如果启用了RLB,则会自动指派主适配器。
 RLB必须有一个主适配器。您可以将一个新适配器设定为主适配器,但是不能从组中移除此主适配器。
 RLB禁用的情况下,设定主适配器为可选。
 在RLB禁用的情况下,主适配器是接收通信量的唯一适配器。
 如果启用了RLB,则会自动将功能最健全的高速度适配器选定并标为主适配器。
 如果更改或添加了主适配器,该组将重新加载,导致短时间丢失连接。
静态链接聚合
“静态链接聚合”(SLA) 是一项性能技术;它的开发旨在提高交换机之间或服务器和交换机之间的吞吐量。达到这一目的的方法是通过设置边界或通道将若干端口聚合一起并显示为单个链接。这样会提高链接的总带宽,并在交换机端口、电缆或适配器发生故障时提供容错。
可以为此组选择主适配器和次适配器,但不是必需的。
 如果主适配器被选定,则该组将使用适配器的MAC地址。
 如果添加或更改了主适配器,该组将重新加载,导致短时间丢失连接。
IEEE 802.3ad 动态链接聚合
IEEE 802.3ad 动态链接聚合是一项用于提高交换机之间或服务器和交换机之间吞吐量的 IEEE 标准。达到这一目的的方法是通过动态设置边界或通道将若干端口聚合一起并显示为使用链接聚合控制协议(LACP)的单个链接。这样会提高链接的总带宽,并在交换机端口、电缆或适配器发生故障时提供容错。
可以为此组选择主适配器和次适配器,但不是必需的。
 如果主适配器被选定,则该组将使用适配器的 MAC 地址。
 如果添加或更改了主适配器,该组将重新加载,导致短时间丢失连接。
交换机容错
交换机容错(SFT)跨交换机提供冗余。在交换机端口、电缆或适配器发生故障时,连接到一个交换机的适配器会自动故障恢复转到与另一个交换机连接的待命适配器上。
PROSet将一个适配器选为“活动”适配器,而其他的适配器为“待命”适配器。可以为组选择主适配器和次适配器,但不是必需的。
 如果选择了主适配器,它便成为组的“活动”适配器。
 如果选择了一个次适配器,则它成为待命适配器。如果活动适配器发生故障,次适配器取而代之。
 如果不选择主适配器,则组会使用组中速度最快的适配器。
 如果更改或添加了主适配器,该组将重新加载,导致短时间丢失连接。
配置多个Bonds
SUSE系统下配置多个Bonds
在SUSE操作系统下,sysconfig网络初始化系统可以处理多个bonding设备。你需要做的只是为每个bonding实例配置正确的ifcfg-bondX配置文件。不要对任何bonding实例指定“max_bonds”参数,否则将会造成配置错误。如果你需要多个bonding设备有不同的参数,那么你可以创建多个ifcfg-bondX文件。
由于sysconfig脚本在ifcfg-bondX文件中提供了bonding模块的选项,因此不需要再把它们增加到系统的/etc/modules.conf中。
RedHat系统下配置多个Bonds
在RedHat操作系统下,initscripts包不直接支持多次加载bonding驱动,因此这里需手动配置多个Bonds。
为了创建多个不同选项的bonding设备,需要多次加载bonding驱动。要说明的是,当前版本的sysconfig网络初始化脚本自动处理这些。
为了加载模块的多个实例,需要为每个实例指定一个不同的名字(模块加载系统需要每个加载的模块有唯一的名字,即使它们是同一个模块的不同实例)。这可以通过在/etc/modprobe.conf中指定多个bonding选项实现,例如:
alias bond0 bonding
options bond0 -o bond0 mode=balance-rr miimon=100
alias bond1 bonding
options bond1 -o bond1 mode=balance-alb miimon=50

操作系统将会两次加载bonding模块。第一个实例命名为“bond0”,将会以balance-rr模式创建bond0设备,同时使用参数miimon为 100。第二个实例命名为“bond1”,将会以balance-alb模式创建bond1设备,同时使用参数miimon为50。
在某些情况下(通常是较老的发行包),上述参数不能工作,第二个bonding实例不会用到它的选项。在这种情况下,第二个选项可以用如下的选项替换:
install bond1 /sbin/modprobe --ignore-install bonding -o bond1 \
    mode=balance-alb miimon=50

这些选项可以重复任意次,以指定任意多个bonding实例,只需要为每个依次的实例指定一个唯一的名字,以替换bond1即可。

5. 以上步骤完成后,执行network restart命令,重启网络使配置生效。
# /etc/init.d/network restart

验证绑定:
步骤 1 在命令行执行ifconfig命令。
如图3-11所示,可以看到bond0的MAC地址与eth0、eth1的MAC地址相同,并且bond0、eth0、eth1共用一个IP地址192.168.18.10。
图3-11 查看MAC地址和IP地址

步骤 2 在命令行执行cat /proc/net/bonding/bond0命令,可以查看bond0状态,如图3-12所示。
图3-12 查看bond0状态


END