当linux 系统上有多个单独网卡,又想充分利用这些网卡,同时对外提供一个统一的网络地址,以使得增大网络的吞吐量,同时也提高网络的可用性,这时就需要bond来帮助我们解决这个问题。linux中bond感觉有点带有bound和bind的意思,从字面意义上,就可以看出bond的作用是聚合多个东西,组合成一个统一的东西使用。


 


bond的配置在很简单,但是配置不好,很容易造成严重的网络问题。bonding功能是linux内核就自带了,因此,通常不需要安装它,只需要把bonding模块加载到内核里即可。


如下是配置bond网卡的步骤。配置需求是有两个网卡eth0和etho1,把它们俩bonding到一起,产生一个新的bond0。


 一、配置ifcfg-bond0


 


在/etc/sysconfig/network-scripts目录下生成一个文件ifcfg-bond0,配置如下:


Bond代码  


DEVICE="bond0"   

 

  USERCTL=no   

 

  ONBOOT="yes"   

 

  BOOTPROTO=none   

 

  NETWORK=192.168.198.0   

 

  NETMASK=255.255.255.0   

 

  GATEWAY=192.168.198.254   

 

  IPADDR=192.168.198.44   

 

  BONDING_OPTS="miimon=100 mode=6 primary=eth0"

 最后一行BONDING_OPTS是bonding功能的选项,这些可选参数可以在这步配,也可以在第三步配。关于相关参数,请查阅文献2。


 二、配置ifcfg-eth0和ifcfg-eth1


 


修改该目录下的ifcfg-eth0和ifcfg-eth1文件,配置如下:


 


ifcfg-eth0:


Conf代码


  


DEVICE="eth0"   

 

  USERCTL=no   

 

  ONBOOT="yes"   

 

  MASTER=bond0   

 

  SLAVE=yes   

 

  BOOTPROTO=none   

 

    

 

  ifcfg-eth1:

 


Conf代码  


DEVICE="eth1"   

 

  USERCTL=no   

 

  ONBOOT="yes"   

 

  MASTER=bond0   

 

  SLAVE=YES   

 

  BOOTPROTO=none

三、启动bonding服务


 


在/etc/modprobe.d/目录下新建一个bonding.conf文件,配置如下:


Shell代码  


alias bond0 bonding   


 该文件可以配置多行bonding,也可以配置一些可选参数,可选参数的配置方式如下:options bond0 mode=balance-alb miimon=100


然后给配置linux内核加载bond模块,执行如下命令:


 


Shell代码  


modprobe bonding    

 

  service network restart


当network 服务重启成功后,这说明bond配置已经生效,bond0端口已经配置完成,可以cat /proc/net/bonding/bond0看bond0端口的状态信息。如果在一台机器再配置一个bond1,配置步骤完全相同。


 


当执行service network restart重启失败时,首先得先检查是否配置正确。如果正确,那么在network重启之前,必须首先关掉NetworkManager服务,即执行命令/etc/init.d/NetworkManager stop。