Bonding的目的是为提高系统可用性,防止物理网口或线路的单点故障

步骤1:检查Linux环境是否支持bonding,执行如下命令

[root@compute ~]# modinfo bonding

filename:       /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/net/bonding/bonding.ko

author:         Thomas Davis, [email protected] and many others

description:    Ethernet Channel Bonding Driver, v3.6.0

version:        3.6.0

license:        GPL

srcversion:     353B1DC123506708446C57B

depends:        8021q,ipv6

vermagic:       2.6.32-431.el6.x86_64 SMP mod_unload modversions 

......(省略后面还有很多信息)

上面返回信息,有库文件、版本、授权、描述等,表示支持bonding(假如没有上面信息,可能重新安装或编译内核)


步骤2:检查Linux下有没有负载均衡的执行文件(负载均衡工具也就是bonding),执行如下命令

[root@compute ~]# which ifenslave

/sbin/ifenslave


步骤3:创建bonding驱动设备配置文件,执行如下命令

[root@compute ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0

[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0   ---设备名称(必要)
BOOTPROTO=static  ---使用静态IP地址(必要,或者=none也可以)
BROADCAST=192.168.1.255 ---(必要)
IPADDR=192.168.1.10 ---(必要)
NETMASK=255.255.255.0 ---(必要)
GATEWAY=192.168.1.254 ---(必要)

NETWORK=192.168.1.0
ONBOOT=yes ---引导时启动(必要)
TYPE=Ethernet ---网线类型(可选,最好填上)
USERCTL=no ---USERCTL=no表明该设备只能由root用戶來控制(可选,最好填上)


步驟4:更改ifcfg-eth0网卡的属性

[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

#HWADDR=00:0E:1E:8D:9B:40 ---必须注销,否则会引起bonding不正常

ONBOOT=yes 
BOOTPROTO=none 
MASTER=bond0 ---MASTER=bond0表明eth0绑定到bond0设备上。

SLAVE=yes 
USERCTL=no


步驟5:更改ifcfg-eth0网卡的属性

[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

#HWADDR=00:0E:1E:8D:9B:41 ---必须注销,否则会引起bonding不正常

ONBOOT=yes 
BOOTPROTO=none 
MASTER=bond0 ---MASTER=bond0表明eth0绑定到bond0设备上。

SLAVE=yes 
USERCTL=no

以上步骤4、5是把网卡eth0和网卡eth1绑定在虚拟网卡bond0上,做网卡高可用


步驟6:编辑/etc/modprobe.d/bonding.conf文件,加入以下内容 

[root@compute ~]# vi /etc/modprobe.d/bonding.conf

alias bond0 bonding 
options bond0 miimon=80 mode=0 

说明:mode指定了bond0的工作模式(0-6种模式),常用的是0、1、6,0与6表示负载均衡方式,1表示主从方式,可根据需要自行配置。常用的为0,1、6三种。

mode=0,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是与网卡相连的交换机端口必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址

mode=1,表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用。 miimon是用来进行链路监测的。比如:miimon=80,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路。

mode=6,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是该模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址

步驟7:加入/etc/rc.d/rc.local 启动项 (可选)

[root@compute ~]# vi /etc/rc.d/rc.local

ifenslave bond0 eth0 eth1  ----在最后面加入此条命令

步骤8:重启网络

[root@compute ~]# service network restart

步骤9:检查bonding状态信息

[root@compute12 ~]# more /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)


Bonding Mode: load balancing (round-robin)

MII Status: up

MII Polling Interval (ms): 80

Up Delay (ms): 0

Down Delay (ms): 0


Slave Interface: eth0

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: a8:3a:72:ce:8a:9c

Slave queue ID: 0


Slave Interface: eth1

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: a8:3a:72:ce:7a:9d

Slave queue ID: 0


步驟10. 完成后重启系统,ping 192.168.1.254测试

注意:

1.所有ethxx配置的时候去掉MAC地址;

2.必须彻底关闭NetworkManger服务,否則會和bond网上冲突

- - >service NetworkManger stop

- - >chkconfig NetworkManger off

3.RHEL 6X版本的配“/etc/modprobe.d/”文件下面自己手动新建“bonding.conf”

4.多个bonging文件配置模式一致,例如:

[root@compute modprobe.d]# cat bonding.conf 

alias   bond0   bonding

alias   bond1   bonding

options bond0   miimon=80       mode=0

options bond1   miimon=80       mode=0


注明:以上含“(必要)”是必须要有内容,“(可选)”是可以填上或不填上都行