一、什么是bonding
Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余
二、bonding应用方向
1、网络负载均衡
对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器。为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是bonding
2、网络冗余
对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的系统中,网卡的可靠性就更为重要了。在生产型的系统中,大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗余的支持。把多块网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡自动启用,并提供正常的服务,即:默认情况下只有一块网卡工作,其它网卡做备份
三、bonding实验环境及配置
1、实验环境
系统为:CentOS 6.5,使用2块网卡(eth0、eth1 ==> bond0)来实现bonding技术
2、bonding配置
a)修改网卡eth0的配置文件:
[root@rac1 network-scripts]# cat etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes
b)修改网卡eth1的配置文件:
[root@rac1 network-scripts]# cat etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes
c)编辑bond0的配置文件:
[root@rac1 network-scripts]# cat etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.6.222
NETMASK=255.255.254.0
GATEWAY=192.168.6.1
USERCTL=no
d)修改/etc/modprobe.d/dist.conf文件
在文件末尾添加
[root@rac1 ~]# tail -2f etc/modprobe.d/dist.conf
alias bond0 bonding
options bond0 miimon=100 mode=1 use_carrier=0
注释:这里的miimon是用来配置监测链路状态的,miimon=100指的是系统每100ms就监测一次链路连接状态,如果有一条线路不通则使用另一条线路。mode的值表示采用哪种工作策略,共有多种策略,其中最常用的有0和1两种策略:
mode=0 表示”round-robin”,即:平衡轮询策略。其特点是:传输数据包采用依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供了负载平衡和容错能力。但是一个连接或者会话的数据包通过不同的链路进行传输可能会在客户端出现数据包无序到达的情况,而无序到达的数据包将需要重新传输,这样就导致了网络的吞吐量下降
mode=1 表示”active-backup”,即:主-备份策略。其特点是:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。同时此算法可以提供高网络连接的可用性,但是由于只有一个接口处于工作状态,因此它的资源利用率较低,在有 N 个网络接口的情况下,资源利用率为1/N
在本次配置中,为了提高网络连接的可用性,因此采用了主从策略
e)修改/etc/rc.local文件,在文件结尾添加绑定信息:
[root@rac1 ~]# cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
ifenslave bond0 eth0 eth1
f)关闭NetworkManager服务:
[root@rac1 ~]# service NetworkManager stop
[root@rac1 ~]# chkconfig NetworkManager off
g)重启网络服务:
[root@rac1 ~]## service network restart
h)使用ifconfig命令查看:

测试:可以手动拔掉一根网线,观察网络是否自动切换到另一个网卡上去,网络是否还是连通状态;等会拔掉另一根网线再次观察网络连通性。




