何为bonding?

将多块网卡虚拟成为一块网卡,使其具有相同的ip地址,来实现提升主机的网络吞吐量或者是提高可用性,这种技术被称作bonding。


Bonding的原理:在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身MAC的以太网帧,过滤别的数据帧,以减轻驱动程序的负担;但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,bonding就运行在这种模式下,而且修改了驱动程序中的mac地址,将两块网卡的MAC地址改成相同,可以接收特定MAC的数据帧。然后把相应的数据帧传送给bond驱动程序处理。


下面简单介绍下实验环境


rhel6.4 操作系统 实验要求是两块网络提供冗余/热备。


实验开始


1:编辑该配置文件 vi/etc/modprobe.d/dist.conf

   加入以下参数

   alias bond0 bonding


2:创建bonding网络配置文件

   vi/etc/sysconfig/network-scripts/ifcfg-bond0

   DEVICE=bond0

   BOOTPROTO=static/dhcp

   TYPE=Ethernet

   ONBOOT=yes

   IPADDR= 根据实际情况配置

   NETMASK=

   GATEWAY=

   BONDING_OPTS="mode=1 miimon=200" 该参数也可 步骤 1 中进行添加。步骤 1 为:

       alias bond0 bonding

       options bond0 mode=1 miimon=100

wKioL1P0HZbDhYuaAACvxNghm-k088.jpg


3:编辑实际网卡配置文件

   vi/etc/sysconfig/network-scripts/ifcfg-eth0

   DEVICE=eth0

   BOOTPROTO=none

   ONBOOT=yes

   MASTER=bond0

   SLAVE=yes

wKioL1P0Hcyz4Zq9AACcJD8YLoE683.jpg



4:编辑实际网卡配置文件

   vi /etc/sysconfig/network-scripts/ifcfg-eth1

   DEVICE=eth1

   BOOTPROTO=none

   ONBOOT=yes

   MASTER=bond0

   SLAVE=yes

wKioL1P0HfezZ3xaAACIP3YW1nM981.jpg

        


安装以上配置完成后,重启网络服务即可。

/etc/init.d/network restart

ifconfig -a  进行查看

wKioL1P0HRfDTZnEAAKE_3DDB1k464.jpg



cat /proc/net/bonding/bond0

wKioL1P0HlnQuitBAAE-Azr22xA138.jpg


如上图,现在两块网卡 都是 UP状态。

测试结果

拔下一根网线

wKiom1P0InSijbOkAAGHp_Wngoc180.jpg



eth0 down掉了

ping 依然正常

wKiom1P0IrnDu_XdAAKfDv335K4321.jpg


丢包处,拔掉网线,网卡切换时造成。

现在 还原,拔掉另外一个网线

wKioL1P0JI2Dqag2AAGES8-YHLY072.jpg


eth1 down掉了

ping 依然正常                                      

wKioL1P0JfzDENk4AAKfDv335K4241.jpg

                


现在来讲解下详细的配置文件参数


MASTER:

MASTER=<bond-interface>

bond-interface的值是以太网卡连接到的通道绑定接口的名称,如:bond0、bond1

master这个指令与 SLAVE 指令配合使用。


SLAVE:

SLAVE=yes/no

yes : 表示此设备可以由MASTER 指令中配置的通道绑定接口进行控制。

no  :  表示此设备不能由 MASTER 指令中配置的通道绑定接口进行控制。


Bonding工作模式

 

bonding的模式一共有7种:

即 mode=0/1

round-robin(balance-rr)  0       负载均衡及冗余模式

active-backup            1       冗余模式

balance-xor              2       需要交换机支持

broadcast                3       广播模式

ieee802.3ad              4       动态链路聚合模式,需要交换机支持

mode-tlb                 5       自适应模式

mode-alb                 6       网卡虚拟化方式


miimon=100ms 

miimon是用来进行链路监测的,其原理是检测网上的链路状态,一般将miimon值设为100,表示系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路。


以上几种模式只是给大家做一个简单的介绍,一般来说最常用的事 0 和 1 两种模式。还有就是,模式0只是实现了简单的负载均衡及冗余。如果要实现高效的负载均衡,提高网络流量,需设置成模式4,而这需要交换机的支持,牵涉到交换机的链路聚合(LACP)功能。



最后再补充一条命令,可以动态查看双网卡切换的动作。

tail -f /var/log/message