Linux 双网卡绑定测试

先介绍一下情况,服务器A和服务器B都是CentOS 4.6的系统,现在要做HA Cluster,为了避免裂脑的发生,要提高心跳链路的可靠性,下图是现时的连接情况,服务器A的eth2、eth3分别和服务器B的eth2、eth3 相连(没有顺序关系),所有网卡都是千兆网卡,拓扑图如下所示:

image

在介绍一起硬件情况,服务器A是一台HP DL380 G5,两年多的服务器了,4核心8G内存,5块72GB的2.5寸硬盘做RAID5。服务期B是DELL 2950,几个月前刚购入的新机器,8核16G内存,3块3.5寸300G SAS硬盘做RAID5。

业务交换机为DELL的千兆交换机,没做任何配置,仅当接入交换机使用。

图中的蓝线用的是几年前的超五类非屏蔽双绞线。

图中的红线用的是新购的六类非屏蔽双绞线。

测试方法很简单,将一个3.4G的ISO从服务器A scp到服务器B中,对比传输的时间。

数据走业务链路,没有使用bonding技术。
############## No Binding ##############
[root@rac-node01 tmp]# time scp rhel-5.1-server-x86_64-dvd.iso 10.168.0.202:/tmp
root@10.168.0.202's password:
rhel-5.1-server-x86_64-dvd.iso 100% 3353MB 44.1MB/s 01:16

real 1m20.105s
user 0m34.752s
sys 0m11.002s
############## 速度还是挺快的
数据走心跳链路,使用了bonding技术,mode设置为6,即不需要交换机参与的负载均衡。

令人奇怪的是该种模式下会丢一些数据包,也许是这种比较奇怪的拓扑结果造成的。

############## model=6 ##############
[root@rac-node01 tmp]# time scp rhel-5.1-server-x86_64-dvd.iso 192.168.0.202:/tmp
root@192.168.0.202's password:
rhel-5.1-server-x86_64-dvd.iso 100% 3353MB 21.4MB/s 02:37

real 2m47.812s
user 0m34.965s
sys 0m19.421s
[root@rac-node01 tmp]# netstat -i #@ Receive
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
bond1 1500 0 5123831 2045 0 0 5138747 0 0 0 BMmRU
eth0 1500 0 2847 0 0 0 703 0 0 0 BMRU
eth2 1500 0 2562665 11 0 0 2569378 0 0 0 BMsRU
eth3 1500 0 2561166 2034 0 0 2569369 0 0 0 BMsRU
lo 16436 0 2261 0 0 0 2261 0 0 0 LRU
############## 有数据包丢失
数据走心跳链路,使用了bonding技术,mode设置为0,即需要交换机参与的负载均衡。

该模式下不像mode=6那样会丢包,而且eth2和eth3的流量几乎平均。下面测试数据中的 RX-ERR是上面测试数据遗留下来的。

############## model=0 ##############
[root@rac-node01 tmp]# time scp rhel-5.1-server-x86_64-dvd.iso 192.168.0.202:/tmp
root@192.168.0.202's password:
rhel-5.1-server-x86_64-dvd.iso 100% 3353MB 38.1MB/s 01:28

real 1m33.508s
user 0m34.539s
sys 0m19.363s
[root@mailserver tmp]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
bond1 1500 0 11133871 2045 0 0 11180462 0 0 0 BMmRU
eth0 1500 0 1334477 0 0 0 2575981 0 0 0 BMRU
eth2 1500 0 5567685 11 0 0 5590236 0 0 0 BMsRU
eth3 1500 0 5566186 2034 0 0 5590226 0 0 0 BMsRU
lo 16436 0 2270 0 0 0 2270 0 0 0 LRU
############## 没有丢包
数据走心跳链路,使用了bonding技术,mode设置为1,即Active-Backup,FailOver模式。

该模式存在一个问题,当服务器A的eth2和服务器B的eth3作为Active设备时,服务器A是不能和服务器B通过心跳链路通信的,此时拔掉其 中一根心跳线再插就好了。

############## model=1 ##############
[root@rac-node01 ~]# time scp /tmp/rhel-5.1-server-x86_64-dvd.iso 192.168.0.202:/tmp/
root@192.168.0.202's password:
rhel-5.1-server-x86_64-dvd.iso 100% 3353MB 41.4MB/s 01:21

real 1m24.162s
user 0m35.007s
sys 0m13.455s

[root@mailserver ~]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
bond1 1500 0 3436804 0 0 0 1774259 0 0 0 BMmRU
eth0 1500 0 3962 0 0 0 773 0 0 0 BMRU
eth2 1500 0 3436804 0 0 0 1774254 0 0 0 BMsRU
eth3 1500 0 0 0 0 0 5 0 0 0 BMsRU
lo 16436 0 3071 0 0 0 3071 0 0 0 LRU
############## 没有丢包,只走单网卡
结论:

从以上结果显示,单就速度来说的确不做绑定单网卡速度最快,但是没有容错能力。其次是绑定后的FailOver模式,但是该模式会存在一定的问题。 而mode=6的负载均衡模式会丢包,比较危险。

mode=0的负载均衡模式貌似并不能加大带宽,但是对于提高最大的可用性来说是最好的选择了。

 

mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗余功能,采用主从工作方式, 默认情况下只有一块网卡工作,另一块做备份.

 

 

 

 

CetOS(RHEL) 5.3下网卡绑定设置指南

修改三类文件:

/etc/sysconfig/network-scripts/下的ifcfg-*文件

/etc/modprobe.conf文件

/etc/init.d/rc.local文件


设置方法:

1. 环境:windows xp+vmware, centos 5.3, 4块网卡,做两组绑定。

当前网卡:eth0-3

绑定后虚拟网卡:bond0-1

eth0、eth2绑定为bond0,eth1、eth3绑定为bond1,不同网段。


2. 修改ifcfg-*文件

增加ifcfg-bond0、ifcfg-bond1两个文件:

文件内容:
[root@localhost network-scripts]# cat ifcfg-bond0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.100.101
NETMASK=255.255.255.0
NETWORK=192.168.100.0
ONBOOT=yes
USERCTL=no
TYPE=Ethernet
GATEWAY=192.168.100.101


[root@localhost network-scripts]# cat ifcfg-bond1
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=bond1
BOOTPROTO=none
IPADDR=172.16.0.1
NETMASK=255.255.255.0
NETWORK=172.16.0.0
ONBOOT=yes
USERCTL=no
#TYPE=Ethernet
TYPE=Ethernet


修改ifcfg-eth0、ifcfg-eth1、ifcfg-eth2、ifcfg-eth3四个网卡配置文件:

内容:

[root@localhost network-scripts]# cat ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
TYPE=Ethernet

[root@localhost network-scripts]# cat ifcfg-eth1
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond1
SLAVE=yes
TYPE=Ethernet

[root@localhost network-scripts]# cat ifcfg-eth2
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
TYPE=Ethernet

[root@localhost network-scripts]# cat ifcfg-eth3
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth3
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond1
SLAVE=yes
TYPE=Ethernet

3. 修改/etc/modprobe.conf文件

[root@localhost network-scripts]# cat /etc/modprobe.conf
alias eth0 pcnet32
alias eth1 pcnet32
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix
alias eth2 pcnet32
alias eth3 pcnet32
alias bond0 bonding
options bond0 miimon=100 mode=0
alias bond1 bonding
options bond1 miimon=100 mode=0


4. 修改/etc/rc.d/rc.local文件
[root@localhost network-scripts]# cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
modprobe bonding miimon=100 mode=0


5. 测试

方法1:检查网络配置是否正常,是否可启动
/etc/init.d/network restart

方法2:检查系统启动时虚拟网卡是否正常启动
reboot

方法3:检查绑定网卡是负载均衡模式,还是主备冗余模式
cat /proc/net/bonding/bond0
cat /proc/net/bonding/bond1


6. 说明

如果是主备冗余模式,需将
options bond0 miimon=100 mode=0中

mode 改为1

其它改为
options bond0 miimon=100 mode=1 primary=eth0

primary=eth0表示当前主网卡为eth0

其它在/etc/rc.d/rc.local中也修改
modprobe bonding miimon=100 mode=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值