- 浏览: 3473523 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
作者:北南南北
来自:LinuxSir.Org
摘要:如何把多个网卡绑定成为一个网卡,并且指定为一个IP地址,解决网络负载问题;本文在Slackware Linux系统进行实例进行解说实现的方法,希望对新手弟兄在解决网络负载问题过程中有点帮助;
目录
++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++
1. 什么是bonding;
Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。
The Linux bonding driver provides a method for aggregating multiple
network interfaces into a single logical bonded interface. The behavior
of the bonded interfaces depends upon the mode; generally speaking,
modes provide either hot standby or load balancing services.
Additionally, link integrity monitoring may be performed.
2.bonding 应用方向;
2.1 网络负载均衡;
对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个
IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的
IP地址弄很多个来解决网络负载的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服
务器在多个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器。为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据
的吞吐量是有限制的。如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是 bonding ;
2.2 网络冗余;
对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的系统中,网卡的可靠性就更为重要了。在
生产型的系统中,大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding
也能为网卡提供冗余的支持。把网个网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡也能提供正常的服务。
3. 网络负载均衡应用实例;
3.1 系统环境及实现目标 ;
操作系统环境:Slackware 11.0,内核 2.6.20
网卡:三张;
实
现目标:让三张网卡eth0、eth1、eth2 绑定为一张,实现网络负载均衡。
通过Google能找到好多bonding的文档,但大多是洋文的,国内也有一篇吧,好象是在Redhat/Fedora环境下的应用,也就是说对于
System V风格的init脚本启动脚本的。对于BSD风格的启动服务的脚本的Linux操作系统,网上并没有太多的现成文档。对于Debian
、Fedora、Redhat、Ubuntu都是System V风格的。
对于Slackware来说则是BSD-like风格的。除了在Slackware的官方文档中,提到bonding的用法以外,网上的文档比较少。我为
此走了不少弯路。最主要的原因是我还是没读懂Slackware,虽然Slackware用起来简单,但如果不读文档,一样解决不了问题。看来官方文档对
我来说是多么重要了,如果你解决不了呢?是不是也和我一样不去读DOC?如果和我一样,还是象我一样,老老实实的读官方DOC吧,只要是应用的问题,大多
是可以解决的。
3.2 对于System V的风格Linux系统的解决办法;
对于Debian 、Fedora、Redhat、Ubuntu都是System V风格的系统,您可以参考 《Bonding》
3.3 在Slackware下通过bonding来实现网络负载均衡;
本文主要是解决网络负载均衡,并非是通过bonding 来实现到网络设备冗余的实现;
3.31 判断内核版本;
[root@linuxsir:/home/beinan#] uname -a
Linux linuxsir 2.6.20 #7 SMP Sun May 6 00:20:14 CST 2007 x86_64 x86_64 x86_64 GNU/Linux
根本内核版本来安装您的内核源码包,一般发行版都有提供。安装好后,一般是放在/usr/src目录中。如果您是自己编译的,你应该知道你的源码包放的位置;比如我把源码包放在了 /usr/src/linux-2.6.20。
3.32 编译bonding;
bonding 是需要编译才能用的,Linux的内核默认是否已经支持了,可以通过 modinfo bonding 来查看;
[root@linuxsir:/home/beinan#] /sbin/modinfo modinfo
如果没有详细的信息输出,可能就不支持了,您应该自己编译;要把Bonding driver support以模块方式编译; 内核编译方法,请参考《》 挂载bonding 模块的方法;
[root@linuxsir:/home/beinan#] modprobe bonding
3.33 编译 ifenslave ;
在Linux 比较新的内核中,ifenslave 并不是默认被内核支持的,需要我们自己编译;我们要进入内核源码包中类似如下的位置;
[root@linuxsir:/home/beinan#] cd /usr/src/linux-2.6.20/Documentation/networking
[root@linuxsir:/home/networking#] gcc -Wall -Wstrict-prototypes -O -I/usr/src/linux-2.6.20/include ifenslave.c -o ifenslave
[root@linuxsir:/home/networking#] cp ifenslave /sbin/ifenslave
3.34 修改网络相关配置文件;
在Slackware 中,我们首先要修改 /etc/rc.d/rc.inet 文件;找到 如下一行;
. /etc/rc.d/rc.inet1.conf
加入下面一段;
# bonding conf
/sbin/ifenslave bond0 eth0
/sbin/ifenslave bond0 eth1
/sbin/ifenslave bond0 eth2
这样做的目的是,让多个网卡都绑定到bond0设备上; 修改/etc/rc.d/rc.inet1.conf,把关于eth0、eth1……等网卡设置都关掉,不设置任何值;比如eth0的设置不让他生效应该是
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""
GATEWAY="192.168.1.1"
#注:网关的ip地址,局域网都通过192.168.1.1 出去,可以自己根本情况来设置 ;
IFNAME[4]="bond0" #注:bond0 网络设备
HWADDR[4]="00:13:72:25:f3:6c" #注:eth0 网卡的物理地址;
IPADDR[4]="" #注:如果您用指定IP地址,就可以设置为您所指定的IP地址,要放在""之间;
NETMASK[4]="" #注:bond0的掩码,比如 255.255.255.0 类似的,这个也是根据自己的情况来设置;
USE_DHCP[4]="yes" #注:是否用DHCP,我是用DHCP ,所以我就要设置为yes ;
DHCP_HOSTNAME[4]="192.168.1.1 "
#注:DHCP 服务器主机名,比如dns.linuxsir.org也行,当然您得做DHCP 服务器了,如果没做,就用IP地址也可以 。
这样做的目的是让bond0设备自动通过DHCP服务器地址,如果指定地址,也是一样的; 修改 /etc/rc.d/rc.modules,加入;
/sbin/modprobe bonding
alias bond0 bonding
options bonding mode=0 miimon=100
这样做的目的是,bonding 模块,在开机后自动挂载;
3.35 尝试绑定多个网卡为一个设备bond0;
首先,我们要把所有网卡挂掉;
[root@linuxsir:/home/beinan#]modprobe bonding
注:挂载bonding 模块;
[root@linuxsir:/home/beinan#] /sbin/ifconfig eth0 down
[root@linuxsir:/home/beinan#] /sbin/ifconfig eth0 down
[root@linuxsir:/home/beinan#] /sbin/ifconfig eth0 down
然后运行如下命令来绑定网卡到bond0上;
[root@linuxsir:/home/beinan#] /sbin/ifenslave bond0 eth0
[root@linuxsir:/home/beinan#] /sbin/ifenslave bond0 eth1
[root@linuxsir:/home/beinan#] /sbin/ifenslave bond0 eth2
绑定是否成功?是不是bond0设备和eth0、eth1、eth2的网卡的物理地址都一样???
[root@linuxsir:/home/beinan#] /sbin/ifconfig
bond0 Link encap:Ethernet HWaddr 00:23:00:a5:b3:3C
inet addr:192.168.1.171 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::213:72ff:fe25:f36c/64 Scope:Link
UP BROADCAST NOTRAILERS RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:601775 errors:0 dropped:0 overruns:0 frame:0
TX packets:421244 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:866655472 (826.5 Mb) TX bytes:26175996 (24.9 Mb)
eth0 Link encap:Ethernet HWaddr 00:23:00:a5:b3:3C
inet6 addr: fe80::213:72ff:fe25:f36c/64 Scope:Link
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:192677 errors:0 dropped:0 overruns:0 frame:0
TX packets:138863 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:278360897 (265.4 Mb) TX bytes:9486604 (9.0 Mb)
Interrupt:17
eth1 Link encap:Ethernet HWaddr 00:23:00:a5:b3:3C
inet6 addr: fe80::213:72ff:fe25:f36c/64 Scope:Link
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:206372 errors:0 dropped:0 overruns:0 frame:0
TX packets:141191 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:296700989 (282.9 Mb) TX bytes:8348311 (7.9 Mb)
Interrupt:18 Base address:0xae00
eth2 Link encap:Ethernet HWaddr 00:23:00:a5:b3:3C
inet6 addr: fe80::213:72ff:fe25:f36c/64 Scope:Link
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:202726 errors:0 dropped:0 overruns:0 frame:0
TX packets:141190 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:291593586 (278.0 Mb) TX bytes:8341081 (7.9 Mb)
Interrupt:16 Base address:0xcf00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:200 (200.0 b) TX bytes:200 (200.0 b)
4. 关于本文;
本文是为解决公司内部局域网落负载而写的,可能还有不足之处,请弟兄们修改之,谢谢;
本文也有未尽的方面,比如通过bonding 实现网卡冗余并没有说明;有这方面经验的弟兄,请补充,谢谢;
5. 更新日志;
2007-06-16 v0.1b
6. 参考文档;
在内核源码的目标下有类似bonding.txt的文档,可以参考;比如 /usr/src/linux-2.6.20/Documentation/networking/bonding.txt
Slackware 关于一些配置文件的用法,可以参考 Slackware book ,到Slackware官方去看,如果您安装了Slackware book 包,可以在本地机上查看;
《binding文档》
发表评论
-
collectd
2011-08-03 14:27 2239collectd是一个守护(daemon)进程,用来收集系 ... -
HP ASR(Automatic Server Recovery)机制
2011-04-15 14:24 3517ASR(Automatic Server Re ... -
LINUX下用HP的IML工具查看服务器的日志信息
2011-04-14 16:40 4806LINUX下用HP的IML工具查看 ... -
LINUX做服务器的无盘系统
2011-01-26 18:19 1890客户端是支持PXE方式启 ... -
简易搭建一个私有云平台
2010-11-17 18:30 3173众说周知Amazon EC2是一个公共云的计算平台,属于Iaa ... -
[HA]利于heartbeat构建Oracle高可用
2010-09-17 12:41 472210月 24th, 2008 @ Kevin.yuan ... -
服务部署--IP SAN潜在的关键应用
2010-08-26 09:38 2060IP SAN可以说是近几年来存储领域的关键技术之一, ... -
通过HAProxy构建开源负载均衡架构平台
2010-08-09 00:07 49471. 目的 通过此作业指导书,知道如何使用ubu ... -
MySQL负载均衡
2010-08-08 23:39 46421. 添加监控MySQL状态的端口 # vi /etc/se ... -
Ha-proxy 学习
2010-08-08 23:08 8923什么是ha-proxy ... -
SQL Server 各版本的区别
2010-08-08 17:49 3965SQL Server 2005 Enterprise Ed ... -
Oracle数据库11g版本介绍
2010-08-08 17:44 3451无论您是独立开发者、中小企业还是大型企业,这些世界一 ... -
tpmC简单计算法
2010-07-29 18:59 17922计算原则: 以单台服务器性能进行计算,即确保单台服务器工作的时 ... -
KVM遥控服务器群
2010-07-07 15:54 2119众所周知,所谓KVM,就是键盘(Keyboard)、显示器 ... -
数据存储配置参考
2010-07-02 10:07 1774型号 配 置 数量 ... -
More Numbers (OpenDS and a hint at ApacheDS)
2010-04-29 23:45 2450Some more numbers have come in. ... -
利用Copssh在windows下搭建ssh服务
2010-03-09 01:04 13402现在远程维护基本上用ssh连接,linux系 ... -
Taking a load off: Load balancing with balance
2010-03-05 16:00 1761A server is limited in how man ... -
Software Based Load Balancers
2010-03-05 15:57 1794keyword:Load Balance ref: http ... -
SAN,NAS,DAS及其架构之间区别
2010-02-26 14:11 1648随着计算机技术的发展 ...
相关推荐
对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理...
Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。 bonding一共有7种工作模式(mode): 1)、bond=0,(balance-rr) Round-robin policy: (平衡轮询...
本文介绍的Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的 设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项技术在...
linux双网卡绑定 bonding
现在在关于Linux bonding 技术中,有几种算法来实现负载均衡的要求,此文针对这些算法,在此进行简单分析与研究,讨论其不足,并提出另外一种在此本文基础上改进的一种基于传输协议的负载均衡实现方法。讨论如何实现...
背景:公司的采集主机要实现双网卡的功能,开始两个网卡定义在不一样的网段上,可以独立使用,但要通过网关连接外网时发现他们不能共用同一个网关。但默认网关只能设置一个,这就用要把它设在同一个网段才能只使用一...
bonding是linux系统中两个网卡绑定为一个网卡 实现负载均衡和冗余
但这种不对称的技术在实现接收数据负载均衡时,只是通过ARP协商机制实现静态分配多网口,因此在实际应用中存在性能上的缺陷。鉴于此,在对现有的相关技术和算法进行研究后,提出了另外一种在此基础上改进的算法,即...
负载均衡技术的使用能够在不对网络中各种设备进行重大改造的条件下提高各种服务的质量,是解决当前网络业务迅猛增加和升级硬件设施之间矛盾的一个有效措施,本文简单描述了关于负载均衡方面的研究现状,重点介绍了...
我们在这介绍的Linux双网卡绑定实现是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项技术在...
网卡绑定和负载均衡 方式方法
Linux双网卡绑定实现负载均衡,供大家参考,具体内容如下 系统环境:CentOS release 6.9 (Final) Linux centos6 2.6.32-696.10.1.el6.x86_64 Ubuntu系统下使用ifenslave进行网卡配置,方法大同小异。 关闭...
linux bonding 标准文档中文翻译版
redhat xen linux bonding
详细描述在linux下如何使用bonding实现双网切换。主网口正常收发,从网口静默,当主网口出现问题时,切换到从网口。
为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。比如我们能够将eth0和eth1绑定成虚拟网卡bond0
双网卡bonding技术是两块网卡绑定同一个IP,是进行双网络热备的一个成熟方案。
2、系统重启后,编辑 /etc/modules.conf 文件,加入如下一行内容(最好加在modules.conf文件的第一行中),以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0 : alias bond0 bonding 同时,再添加...
Windows Teaming & Linux Bonding,详细的说明了windows linux对team Bonding的详细的信息,非常值得一看
Linux bonding配置指导书(CentOS5.3).doc