Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2634597
  • 博文数量: 333
  • 博客积分: 4817
  • 博客等级: 上校
  • 技术积分: 4413
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-28 10:51
文章分类

全部博文(333)

文章存档

2017年(20)

2016年(57)

2015年(27)

2014年(20)

2013年(21)

2012年(164)

2011年(24)

分类: LINUX

2016-08-31 17:25:20

一 介绍
如题所示,服务器安装了双网卡,然后进行网络配置。为了增强服务器的网络连通性,采用“主-备份”策略来配置两个网卡:每次只有一个网卡处于活动状态,在一个网卡出现问题无法使用时可以快速的切换到另外一张网卡上去,保证网络的持续可用。当然缺点是每次只有一个网卡工作,因此硬件资源的利用率不高。

参考文章: Linux 6.4(BOND)双网卡绑定实战—附加说明  

CentOS 6.4下双网卡bond配置 

二 具体配置
1 关闭SELinux:
[root@nmp01 ~]# getenforce

如果是开启状态,则
[root@nmp01 ~]# vim /etc/selinux/config

修改以下内容:
#SELINUX=enforcing    #注释掉 
#SELINUXTYPE=targeted  #注释掉 
SELINUX=disabled  #增加

然后重启系统:
[root@nmp01 ~]# reboot

2 修改网卡配置:
这里可以先用ifconfig命令得知,有两个卡槽是插上网卡的,它们分别是:eth0和eth1(我的系统是cenos7,enp8s0和enp9s0。因此,下面下面就是通过修改这两个网卡的配置文件,并绑定这两个网卡
i)修改网卡eth0的配置文件:
[root@nmp01 ~]# cd /etc/sysconfig/network-scripts/ 
[root@nmp01 network-scripts]# vim ifcfg-eth0

修改成以下内容:
DEVICE=eth0 
HWADDR=08:94:EF:04:C7:28 
TYPE=Ethernet 
UUID=52ce86bb-ebcc-4087-957f-5dfa83cb7b65 
ONBOOT=yes  #开机启动此设备 
SLAVE=yes 
MASTER=bond0  
#NM_CONTROLLED=yes 
BOOTPROTO=none #启动时不使用任何协议

ii)修改网卡eth1的配置文件:
[root@nmp01 network-scripts]# vim ifcfg-eth1

修改成以下内容:
DEVICE=eth1 
HWADDR=08:94:EF:04:C7:29 
TYPE=Ethernet 
UUID=f9e30972-2ee6-4529-80c2-c8ceeeac2555 
ONBOOT=yes 
SLAVE=yes 
MASTER=bond0 
#NM_CONTROLLED=yes 
BOOTPROTO=none

iii)添加一个绑定网卡bond0的配置文件:

[root@nmp01 network-scripts]# vim ifcfg-bond0

添加以下内容:
DEVICE=bond0 
TYPE=Ethernet 
USERCTL=no 
ONBOOT=yes 
#BONDING_OPTS="miimon=100 mode=1" 
BOOTPROTO=static 
IPADDR=10.110.100.102  #IP 
NETMASK=255.255.255.0  #子码掩码 
GATEWAY=10.110.100.2  #网关

iv)修改/etc/modprobe.d/dist.conf文件:
[root@nmp01 network-scripts]# vim /etc/modprobe.d/dist.conf  //centos7没有这么文件,没有关系,创建一个新的dist.conf

在文件末尾添加:
alias bond0 bonding 
options bond0 miimon=100 mode=1


需要解释的是,这里的miimon是用来配置监测链路状态的,miimon=100指的是系统每100ms就监测一次链路连接状态,如果有一条线路不通则使用另一条线路。mode的值表示采用哪种工作策略,共有多种策略,其中最常用的有0和1两种策略:
mode=0 表示”round-robin”,即:平衡轮询策略。其特点是:传输数据包采用依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供了负载平衡和容错能力。但是一个连接或者会话的数据包通过不同的链路进行传输可能会在客户端出现数据包无序到达的情况,而无序到达的数据包将需要重新传输,这样就导致了网络的吞吐量下降

mode=1 表示”active-backup”,即:主-备份策略。其特点是:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。同时此算法可以提供高网络连接的可用性,但是由于只有一个接口处于工作状态,因此它的资源利用率较低,在有 N 个网络接口的情况下,资源利用率为1/N

在本次配置中,为了提高网络连接的可用性,因此采用了主从策略
v)修改/etc/rc.local文件:
[root@nmp01 network-scripts]# vim /etc/rc.local

在文件末尾添加:
ifenslave bond0 eth0 eth1

3 关闭NetworkManager服务:
[root@nmp01 network-scripts]# service NetworkManager stop    //centos7下,systemctl disable NetworkManager.service  启动为systemctl disable NetworkManager.service  
[root@nmp01 network-scripts]# chkconfig NetworkManager off

4 重启网络服务:
[root@nmp01 network-scripts]# service network restart  //centos7下,systemctl restart network.service   

5 再次使用ifconfig命令:
[root@nmp01 network-scripts]# ifconfig

可以发现,两张网卡已经绑定好了

CentOS6.x双网卡采用主-备份策略绑定(bond)

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

cat /proc/net/bonding/bond0
 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

 Bonding Mode: fault-tolerance (active-backup)
 Primary Slave: None
Currently Active Slave: eth1
MII Status: up
 MII Polling Interval (ms): 100
 Up Delay (ms): 0
 Down Delay (ms): 0

 Slave Interface: eth1
 MII Status: up
 Speed: 1000 Mbps
 Duplex: full
 Link Failure Count: 0
 Permanent HW addr: 08:00:27:e7:1f:5d
 Slave queue ID: 0

 Slave Interface: eth2
 MII Status: up
 Speed: 1000 Mbps
 Duplex: full
 Link Failure Count: 1
 Permanent HW addr: 08:00:27:99:be:cc
 Slave queue ID: 0

七种bond模式说明
 
第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)
 
特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降
 
第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略)
 
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N
  
第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略)
 
特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力
 
第四种模式:mod=3,即:broadcast(广播策略)
 
特点:在每个slave接口上传输每个数据包,此模式提供了容错能力
 
第五种模式:mod=4,即:(802.3ad) IEEE 802.3adDynamic link aggregation(IEEE 802.3ad 动态链接聚合)
 
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
 
外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。
 
必要条件:
 
条件1:ethtool支持获取每个slave的速率和双工设定
 
条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation
  
条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式
 
第六种模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
 
特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
 
该模式的必要条件:ethtool支持获取每个slave的速率
 
第七种模式:mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
 
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。


阅读(1284) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~