昔我往矣

Debian下bond实现网卡高可用

2012年08月17日

一、安装
为保证服务器的7*24不间断运行,要做的工作有很多,集群、主备都是不错的办法,如果面对只有一台机器的情况,那要怎么保证网络的不中断呢?ifenslave或许为这种情况提出了一个不错的解决办法。首先机器需要两块网卡,eth0,eth1,另外ifenslave会模拟出第三块网卡。下面是在debian中的搭建实例。

首先、安装ifenslave

# apt-get install ifenslave

二、编辑网卡配置文件

# cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

auto bond0
iiface bond0 inet static
address 192.168.10.52
netmask 255.255.255.0
gateway 192.168.10.254
post-up ifenslave bond0 eth0 eth1
pre-down ifenslave -d bond0 eth0 eth1

# cat /etc/modprobe.d/aliases-bond
install bond0 /sbin/modprobe bonding miimon=100 mode=1

miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式
bond的mode一共有七种:

0: (balance-rr) Round-robin policy: (平衡循环策略):传输数据包顺序是依次传输,直到最后一个传输完毕, 此模式提供负载平衡和容错能力。
1: (active-backup) Active-backup policy:(主-备份策略):只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。 此模式提供了容错能力。
2:(balance-xor) XOR policy:(广播策略):将所有数据包传输给所有接口。 此模式提供了容错能力。
3:(balance-xor) XOR policy:(平衡策略): 传输根据原地址布尔值选择传输设备。 此模式提供负载平衡和容错能力。
4:(802.3ad) IEEE 802.3ad Dynamic link aggregation.IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。
5:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):没有特殊策略,第一个设备传不通就用另一个设备接管第一个设备正在处理的mac地址,帮助上一个传。
6: (balance-alb) Adaptive load balancing:(适配器传输负载均衡):大致意思是包括mode5,bonding驱动程序截获 ARP 在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样

#service networking restart

三、查看状态

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)

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

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 08:00:27:79:98:4f

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 08:00:27:f6:be:61

可以从上面看到,目前启用了eth0作为“Currently Active Slave”,如果eth0 down掉的话,eth1应该会开始工作,变成“Currently Active Slave”,这样就实现了网卡的高可用。
当然,如果有能力在真实机器上做这个实验的话,你可以直接拔掉eth0的网线,看看是不是启动了eth1。在debian下找了很久都没有找到网卡设备文件,所以,没有很好的实验验证步骤!

已有 2 条评论 »

添加新评论 »