|
实验条件:两块网卡,可不限型号,一台交换机,gentoo环境,可以是其他linux,注意区分不同之处.
我的设备:两个8139,TP-LINK交换机,总值不过是百块,大家不要见笑,其实在gentoo的网络配置文件里提到过这种技术,刚好有台交换机,并参考网上一篇文章,试试如何.
将多块网卡虚拟成为一块网卡,使其具有相同的IP地址,来实现提升主机的网络吞吐量或者是提高可用性,这种技术被称作bonding。这项技术其实在 sun和cisco中已经存在,分别称为Trunking和etherchannel技术,在Linux中,这种技术称为bonding。
通过软硬件设置将两块或者多块网卡绑定在同一个IP地址上,接上集线器,使用起来就好象在使用一块网卡。
多网卡绑定的优点不少,首先,可以增大带宽,假如一个网卡的带宽是100M,理论上两块网卡就是200M,三块就是300M,当然实际上的效果是不会是这样简单的增加的,不过经实际测试使用多个网卡对于增加带宽,保持带宽的稳定性肯定是有裨益的。
形成网卡冗余阵列、分担负载,双网卡被绑定成“一块网卡”之后,同步一起工作,对服务器的访问流量被均衡分担到两块网卡上,这样每块网卡的负载压力就小多了,抗并发访问的能力提高,保证了服务器访问的稳定和畅快,当其中一块发生故障的时候,另一块立刻接管全部负载,过程是无缝的,服务不会中断,直到维修人员到来。
1)连接设备:
adsl接入到交换机,交换机接两块网卡,也就是说adsl通过交换机连接两个网卡,进入.
2) 编译带有bonding driver的内核
在内核选项:
Device Drivers->
Network device support->
<M>Bonding driver support
编译成模块。
3) 获取并安装用户管理工具
安装ifenslave程序,gentoo是支持emerge的,其他版本的linux要自己找了,找不到的说说,有附带源代码
#emerge ifenslave
设置,执行命令:
#modprobe bonding
加载模块
#ifconfig bond0 192.168.0.1 netmask 255.255.0.0
设置设备bond0的IP
#ifenslave bond0 eth0 eth1
#绑定两个网卡
用命令ifconfig看出bond0设备的情况:
# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0A:EB:FA:08:A9
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.0.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:179812 errors:0 dropped:0 overruns:0 frame:0
TX packets:147859 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:204694202 (195.2 Mb) TX bytes:67080581 (63.9 Mb)
eth0 Link encap:Ethernet HWaddr 00:0A:EB:FA:08:A9
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:89088 errors:0 dropped:0 overruns:0 frame:0
TX packets:73543 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:101695763 (96.9 Mb) TX bytes:33487215 (31.9 Mb)
Interrupt:16 Base address:0x2f00
eth1 Link encap:Ethernet HWaddr 00:0A:EB:FA:08:A9
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:90724 errors:0 dropped:0 overruns:0 frame:0
TX packets:74318 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:102998439 (98.2 Mb) TX bytes:33593500 (32.0 Mb)
Interrupt:17 Base address:0x4e00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:269 errors:0 dropped:0 overruns:0 frame:0
TX packets:269 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:21908 (21.3 Kb) TX bytes:21908 (21.3 Kb)
ppp0 Link encapoint-to-Point Protocol
inet addr:221.4.185.60 P-t-P:221.4.184.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:178863 errors:0 dropped:0 overruns:0 frame:0
TX packets:146823 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:200336566 (191.0 Mb) TX bytes:63717954 (60.7 Mb)
需要重新设置adsl,因为原adsl是使用eth0,现在eht0和eth1都绑在bond0身上,没有网卡了,所以,把这项改为:
(default eth1): bond0
启动adsl,看到网卡和交换机的灯同时闪烁,说明已经工作了.
工作情况,如下:
# dmesg |grep eth
eth0: RealTek RTL8139 at 0xd0802f00, 00:0a:eb:fa:08:a9, IRQ 16
eth0: Identified 8139 chip type 'RTL-8100B/8139D'
eth1: RealTek RTL8139 at 0xd0804e00, 00:14:78:2c:d8:98, IRQ 17
eth1: Identified 8139 chip type 'RTL-8100B/8139D'
eth0: link down
eth0: link down
eth1: link up, 100Mbps, full-duplex, lpa 0x45E1
eth1: link down
eth1: link up, 100Mbps, full-duplex, lpa 0x45E1
eth1: link down
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
eth1: link up, 100Mbps, full-duplex, lpa 0x45E1
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
bonding: bond0: enslaving eth0 as an active interface with an up link.
eth1: link up, 100Mbps, full-duplex, lpa 0x45E1
bonding: bond0: enslaving eth1 as an active interface with an up link.
用bt下载一些文件,速度看不出加快,峰值是比原来高一些,那路高手有时间做做测试,搞些新玩法,贴贴出来,
下面是参考文章:http://www.hackhome.com/2005/6-17/1904107338.shtml |
|