众所周知,Linux提供了强大的服务器功能,但是服务器对链路要求是极高的,起码要求7*24是连通的。但是一旦我们服务器的网卡出问题了,或者链路出问题了,在这种情况下,服务器就不会被正常访问。我们有没有办法杜绝这种现象呢?答案是肯定的,我们可以做bond 1。其原理就是服务器有两个网卡,这两个网卡捆绑成一个bond1,公用一个IP地址,当其中主网卡出现故障,另一块备用网卡立即启用。

Bonding的模式一共有7种:
#defineBOND_MODE_ROUNDROBIN        0   (balance-rr模式)网卡的负载均衡模式
#defineBOND_MODE_ACTIVEBACKUP     1   (active-backup模式)网卡的容错模式
#defineBOND_MODE_XOR                     2   (balance-xor模式)需要交换机支持
#defineBOND_MODE_BROADCAST         3    (broadcast模式)
#defineBOND_MODE_8023AD                4   (IEEE 802.3ad动态链路聚合模式)需要交换机支持
#defineBOND_MODE_TLB                      5   自适应传输负载均衡模式
#defineBOND_MODE_ALB                      6   网卡虚拟化方式


bonding模块的所有工作模式可以分为两类:多主型工作模式和主备型工作模式,balance-rr 和broadcast属于多主型工作模式而active-backup属于主备型工作模式。(balance-xor、自适应传输负载均衡模式(balance-tlb)和自适应负载均衡模式(balance-alb)也属于多主型工作模式,IEEE 802.3ad动态链路聚合模式(802.3ad)属于主备型工作模式

 

模式= 0(平衡RR)循环的政策:从第一个可用的网卡,通过最后的数据包顺序发送。此模式提供负载平衡和容错。

模式= 1(积极主动备份)备份策略:绑定中只有一个债券是主要的。另一种不同的网卡变得活跃,如果只有积极的奴隶失败。债券的MAC地址是外部可见上只有一个端口(网络适配器),以避免混淆交换机。此模式提供容错功能。主选项影响这种模式下的行为。

模式= 2(平衡XOR) XOR运算政策:发送的基础上(源MAC地址,目的MAC地址XOR'd)模奴隶计数]。这选择为每个目的地的MAC地址相同的奴隶。此模式提供负载平衡和容错。

传输模式= 3(广播)广播政策:从接口上所有的一切。此模式提供故障容忍。

模式= 4(802.3ad的) IEEE 802.3ad动态链路聚合。创建汇聚组共享相同的速度和双工设置。根据802.3ad的规范利用活性聚合所有的奴隶。先决条件:1。ethtool的检索每个从机的速度和双工的基础驱动程序的支持。2。一个开关,支持IEEE 802.3ad动态链路聚合。大多数交换机将需要某种类型的配置,使802.3ad模式。

模式= 5(平衡TLB)

的自适应传输负载平衡:通道绑定,不需要任何特殊的交换机支持。即将离任的交通分布,根据当前负载,每个奴隶(相对速度计算)。收到的传入流量由目前的奴隶。如果接收奴隶失败,另一个奴隶接管失败的接收奴隶的MAC地址。

先决条件:ethtool的检索每个奴隶的速度的基础驱动程序的支持。

模式= 6(平衡ALB)

自适应负载均衡:包括资产TLB,加上接收IPv4流量的负载平衡(RLB),不需要任何特殊的交换机支持。接收负载均衡是通过ARP协商实现。bonding驱动拦截ARP应答本地系统上发出自己的出路和覆盖源硬件地址与独特的硬件地址,使用不同的同龄人不同的硬件地址,为服务器在债券等的奴隶之一。最常用的前四个模式类型... 你也可以使用多个接口债券,但你必须加载bonding模块,你需要许多。假定你想要两个债券的接口,你必须配置/ etc / modules.conf中如下:

别名bond0的粘接选项bond0的-O bond0的模式= 0 miimon = 100别名BOND1粘接BOND1-O BOND1模式= 1 miimon = 100

 

 

案例拓扑图:

bond

案例1--bond0

1、编辑虚拟网络接口配置文件。

建立 /etc/sysconfig/network-scripts/ifcfg-bond0 文件

内容如下:

    DEVICE=bond0

    IPADDR=192.168.0.1

    NETMASK=255.255.255.0

    BROADCAST=192.168.0.255

    NETWORK=192.168.0.1

    ONBOOT=yes

p_w_picpath

    ip地址根据自己的需要配置(一个简单的方法就是拷贝一个ifcfg-eht0修改DEVICE=bond0)

2、编辑真实网卡的配置文件(建议修改之前做好备份)

    /etc/sysconfig/network-scripts/ifcfg-eth*

内容如下

   BOOTPROTO=none

   TYPE=Ethernet

   DEVICE=eth* (*与那个配置文件名中的相同)

   ONBOOT=yes

   MASTER=bond0 指明主设备

   slave=yes     指明为从设备

p_w_picpath

p_w_picpath

注意:真实网卡不能再设置ip地址了,按需要把所要绑定的真实网卡都按这个设置,主要是MASTER=bond0 和 slave=yes 一定不要弄错(简单的方法就是修改一个然后拷贝再修改)

3、修改/etc/modprobe.conf 文件加入如下两行(建议做好备份)

    alias bond0 bonding

    options bond0 miimon=100 mode=0

p_w_picpath

注:1、miimon 是链路监测的时间间隔单位是毫秒,miimon=100的意思就是,每100毫秒检测网卡和交换之 间是否连通,如不通则使用另外的链路。2、mode=0 表示负载均衡方式,两块网卡都工作。              

4、在/etc/rc.d/rc.local 加入如下一行(启动时执行此行命令)

        ifenslave bond0 eth0 eth1 …… eht*

p_w_picpath

重新启动后负载平衡已经能正常工作。

p_w_picpath

总结:当断开eth0时,会出现请求超时提示,eth1断开时不会丢包。

 

案例2--bond1简单配置

系统要求:需要双网卡。

clip_p_w_picpath002[4]

1、配置这两张网卡:为自动获取地址

clip_p_w_picpath002

clip_p_w_picpath006

clip_p_w_picpath010

2、配置bond0网卡参数:

p_w_picpath

p_w_picpath

3、设置bond别名:及相关的设置:100毫秒检测一次,mode模式1.

p_w_picpath

设置bond0指向的模块bonding,

p_w_picpath

mode=1 表示冗余方式,网卡只有一个工作,一个出问题启用另外的。

4、bond0绑定网卡:把eth0&eth1绑定到bond0上。

p_w_picpath

p_w_picpath

5、重启系统

p_w_picpath

p_w_picpath

6、ifconfig 查看网卡地址:

p_w_picpath

查看内寸、内核参数:

p_w_picpath

测试:在客户机上pinglinux主机。

先断开eth0,在连接上;在断开eth1;前后出现两次ping包丢失。

p_w_picpath

经过第二次测试还是一样的结果:

p_w_picpath

总结:在刚断开任意一个物理网卡时,会发生ping包丢失一次,很快就会恢复了。