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
注明:以上含“(必要)”是必须要有内容,“(可选)”是可以填上或不填上都行