找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7702|回复: 12

[linux] Linux 下实现网卡高可用性的几种方法

[复制链接]
发表于 2004-12-21 11:12:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
Linux Channel Bonding

QUOTE
Linux 下实现网卡高可用性的几种方法(一)  供稿者:东丰  在当前的 IBM eServer xSeries 服务器产品中,有很多产品都集成了的千兆以太网卡,另外,在 xSeries 服务器产品的选件中,也提供了多种可以选配的以太网卡的选件,而当一台服务器配置了多块以太网卡时,我们通常都会考虑把多块网卡绑定在一起,做为一个网卡来使用,以此来提高网络的可用性和性能。对于 Windows 操作系统下,Intel 公司提供了 Proset 工具来实现,Broadcom 公司提供了 BASP (Broadcom Advanced Server Program) 工具来实现,这些我们已经比较熟悉,而在 Linux 操作系统下,我们要如何来实现网卡的高可用性呢?下面,就介绍一下在Linux 下实现网卡高可用性的几种方法。一、Linux Channel Bonding目前在各个发行版本的 Linux 中,使用最普遍的内核版本应该就是 2.4.x的版本了,而 Linux Channel Bonding, 在 Linux 2.4 的内核中, 就提供了 bonding 的驱动, 可以支持把多个网络适配器集合在一起, 当作一个网络适配器来使用。在 Linux 下,网卡的高可用性是通过 MII 或者 ETHTOOL 的状态监测来实现的,所以,需要检查系统中的网络适配器是否支持 MII 或者 ETHTOOL 的连状态监测。可以用命令 "ethtool eth0" 来检查,如果显示的 "Link detected:" 信息与实现的连接状态一致,就没有问题。如果系统中的网络适配器不支持 MII 或者 ETHTOOL 状态监测,当连接失效时,系统就不能检测到,同时,在 bonding 驱动加载时,会记录一条不支持 MII 和 ETHTOOL 的警告信息。下面以 Red Hat 为例,简单介绍一下实现的基本方法:首先,我们需要打开内核对 bonding 支持。设置内核 'make menuconfig/xconfig/config',在"Network device support"区段中选择"Bonding driver support",建议设置该驱动程序为模块,这样才能支持给驱动传递参数和设置多个bonding设备。生成并安装新的内核和模块。Bonding 的设置我们需要在 /etc/modules.conf 中加入一行,这样才可以在设置了 bond 设置后,系统启动的时候自动加载 bonding 的驱动程序alias bond0 bonding另外,在 /etc/sysconfig/network-scripts 目录中,创建一个名为 ifcfg-bond0 的文件。DEVICE=bond0IPADDR=192.168.1.1NETMASK=255.255.255.0NETWORK=192.168.1.0BROADCAST=192.168.1.255ONBOOT=yesBOOTPROTO=noneUSERCTL=no在 bond 中的所有网络适配器的脚本中,都要有 SLAVE 和 MASTER 的定义。例如,如果要让eth0和eth1成为bond0的成员,它们对应的配置文件(ifcfg-eth0和ifcfg-eth1)就要仿照下面的内容进行更改:DEVICE=eth0USERCTL=noONBOOT=yesMASTER=bond0SLAVE=yesBOOTPROTO=none在脚本文件ifcfg-eth1中,把eth0替换成eth1,同时,根据需要还要加入IP地址方面的信息。如果需要设置另外的 bonding 设备(例如bond1),就把MASTER=bond0改成bond1,这样,该网络适配器就成为bond1的附属设备了。使 bond 生效用命令 '/etc/rc.d/init.d/network restart' 重新启动网络子系统,也可以重新启动系统来使 bond0 生效。这样,bond 的设置就基本结束了,如果希望了解更详细的信息,可以参考 '/usr/src/linux-2.4/Documentation/networking/bonding.txt
routeros
 楼主| 发表于 2004-12-21 11:13:46 | 显示全部楼层
Linux 下的 BASP(Broadcom Advanced Server Program)

QUOTE
Linux 下实现网卡高可用性的几种方法(二)  供稿者:东丰  二、Linux 下的 BASP(Broadcom Advanced Server Program)Broadcom 公司不仅在 Windows 平台上提供了 BASP 工具来实现网卡的高可用性,同样,在 Linux 操作系统下,也提供了对应的工具来实现。下面,就介绍一下如何在 Linux 下利用 BASP 来实现多块 Broadcom 以太网卡的 teaming。首先,BASP 是一个为 2.4.x 的内核设计的模块,通过由多个网卡创建的team,可以提供负载平衡(load-balancing),容错(fault-tolerance)和VLAN等功能。一个 team 可以包括1到8块网卡,每块网卡都可以被指定为主(Primary)或者是热备(hot-standby,只适用于SLB team)。team 中所有的主网卡都会通过发送和接收全部网络流量的一部分来参与负载平衡的工作,而热备的网卡会在所有的主网卡失去连接时进行接管。VLAN 可以添加到 team 中,通过不同的 VLAN ID 来实现多个 VLAN,每个 VLAN 都会创建一个虚拟设备。通常,我们得到的 BASP 的打包文件中包括两个文件,一个是 RPM 包,一个是 TAR 格式的文档。安装 TAR 文档    解压并展开 TAR 文档    % tar xzvf basplnx-{version}.{arch}.tgz    (1) 创建内核模块 "basp.o"    % make    (2) 创建设备文件并复制文件    % make install    (3) 更新模块信息    % depmod -a    (4) 加载驱动程序    % insmod basp安装 RPM 包    (1) 安装 RPM 的源文件包    % rpm -i basplnx-{version}.src.{arch}.rpm    (2) 进入 RPM 的路径并为内核创建驱动程序    % cd /usr/src/redhat    % rpm -bb SPECS/basplnx.spec    注意:如果 Linux 的发行版本包含的是 RPM v4.1 或者更新版本,使用 rpmbuild 命令代替 "rpm"    (3) 安装刚刚创建的包    % rpm -i RPMS/i386/basplnx-{version}.{arch}.rpm    驱动程序和其它需要的文件会自动被安装。    (4) 加载驱动程序    % insmod basp下面,以 Red Hat 为例,介绍一下配置信息在 BASP 的包里面包含了一个工具和几个 team 配置的脚本,大部分的步骤要在第一次安装完驱动以后来做,而步骤"更改配置脚本",是只要需要更改 team 的配置,就可以参照着来操作。由于 Linux 不会自动加载网络设备的驱动程序,除非该设备设置了IP地址,所以用户必须为 team中的所有的物理适配器手工配置一个网络脚本文件。这些网络脚本文件位于 /etc/sysconfig/network-scripts (Red Hat) 或者 /etc/sysconfig/ network (United Linux 1.x)。文件名必须以 "ifcfg-" 开头,然后跟着物理适配器的别名,如果是网卡 eth0,就应该创建一个文件,该文件的文件名是 ifcfg-eth0,然后加入下面的内容DEVICE=eth0BOOTPROTO=staticONBOOT=yes配置的过程包括下面几个步骤:1. 可以从 "/etc/basp/samples" 目录中拷贝一个配置脚本到 "/etc/basp" 目录,注意,配置脚本的文件名必须是以 "team-" 开头。2. 更改配置脚本:(a) 更改 team 的类型( 添加/删除物理网络适配器?添加/删除虚拟的网络适配器(d) 为每个虚拟的网络适配器分配IP地址配置脚本中的语法可以在 /etc/basp/sample/team-sample 脚本文件中查到。注意,在配置 Teaming 时,至少要有一个主适配器 (Primary Adapter)
routeros
回复

使用道具 举报

 楼主| 发表于 2004-12-21 11:15:03 | 显示全部楼层
Intel ANS (Advanced Networking Services) for Linux

QUOTE
Linux 下实现网卡高可用性的几种方法(三)?供稿者:东丰?3.在第一次时,手工启动 team:% /etc/init.d/basp start注意:这个步骤只在第一次安装时需要,在以后的启动过程中,team 的配置会自动启动。注意:如果所有的虚拟网络适配器中有的没有设置 IP 地址,那么在启动 BASP team 的过程中,会有错误信息,如果出现这种现象,请按照步骤2操作,为所有的虚拟网络适配器配置 IP 地址。注:如果要创建多个 team 的话,可以拷贝示例脚本文件到 "/etc/basp/team-",然后根据需要更改示例文件。三、Intel ANS (Advanced Networking Services) for LinuxANS 是 Intel 公司提供的在 Linux 系统下实现 teaming (包括其它厂商 Multi-Vendor Teaming) 和 VLAN 的软件包,目前从 Intel 网站上可以下载的最新版本是 3.0.2。这个版本的 ANS 对基于 Linux 的网卡的驱动程序有一定的要求, 如果是 PRO/100 的网卡, 驱动程序版本要求是 e100-2.3.x, 如果是 PRO/1000 的网卡, 驱动程序版本要求是 e1000-5.2.x, 而有的发行版本中提供的驱动程序没有包含 ANS 需要的 MII 接口的支持。另外, 对于 Linux 的内核, 要求是 2.4.7 或者更高, 这个版本主要在 Red Hat Enterprise Linux ES 2.1 (内核 2.4.9-e.27) 和 Red Hat Enterprise Linux ES 3 (内核 2.4.21-4.EL) 并且配置了多处理器的的系统上进行了测试。同时, 该软件包也支持基于安腾的系统。当前版本的 ANS 也可以用命令行工具 PROCfg 来配置, 使用 PROCfg 的好处是可以省去很多手工配置的麻烦,但是, PROCfg 目前只能在32位的架构上使用。注::ANS 只在以模块方式加载驱动程序的环境下测试过, 并没有在把驱动程序静态的建立在内核中的环境下进行过测试。对于 MVT (Multi-Vendor Teaming) 的支持, 要求 team 中至少要有一块 Intel 的服务器网络适配器,并且做为主设备, 而其它厂商的网络适配器的驱动也要正常加载, 而建立 team 时使用的命令和参数与 Intel 网卡相同.下面先讲一下 ANS 的安装:首先确认所有的网络适配器工作正常, 并且驱动程序 e100.o 和/或 e1000.o 位于 /lib/modules//kernel/drivers/net/ (不同的 LINUX 发行版本路径可能会有所不同)1. 以 root 身份登录2. 拷贝 iANS-3.0.2.tar.gz 到 /tmp 下3. 用命令 'tar xzf iANS-3.0.2.tar.gz' 展开4. 进入 iANS-3.0.2/src 的目录, 运行 'make' 来编译5. 运行 'make install'配置 ANS要配置 ANS, 有下面几种方法:1. PROCfg 工具, 这是一个简单的配置工具, 可以减少命令行方式的输入工作2. 脚本, 建议新用户使用3. 手工, 使用 ianscfg 工具下面以手工配置方式为例:1. 停止要加入 team 中的网络适配器ifconfig -a (列出当前所有的网络设备)ifconfig ethx down (停止网络适配器, 这样 ANS 才可以使用它们,x代表网络适配器的序号)2. 加载 ANS 模块insmod ians3. 用 ianscfg 工具来创建和更改 teamianscfg -a -t test (创建名称为 test 的 team, 默认情况下, team 的类型是 AFT, Adapter Fault Tolerance)ianscfg -a -t test -m eth0 (添加 eth0 到名称为 test 的 team 中)ianscfg -a -t test -m eth1 (添加 eth1 到名称为 test 的 team 中)ianscfg -a -t test -v vnet0 (添加名称为 vnet0 的虚拟网络适配器到 test 中)ianscfg -c test (提交名称为 test 的 team 信息)4. 激活 teamifconfig vnet0  [netmask ]现在, 网卡就可以工作了.5. 通过 ianscfg, 我们可以保存 ANS 的配置, 也可以恢复以前的配置。如果希望在系统每次启动的时候, 都激活配置好的 team, 可以用下面的命令ianscfg -w -b (保存当前的 team 配置信息到默认的 /etc/ians/ians.conf 文件中, 并且在启动过程中加载)通常情况下, 我们为虚拟网卡设置的都是静态IP地址, 所以, 我们要检查一下 /etc/sysconfig/network-scripts/ 目录中对应脚本是否与我们希望的一致,例如:脚本 ifcfg-vnet0DEVICE=vnet0ONBOOT=yesBOOTPROTO=staticIPADDR=NETMASK=这样, 整个 ANS 的配置工作就基本结束了. 如果要了解更详细的信息, 可以参见 iANS 软件包中的 README 文件, 以及 man ianscfg.从上面的几种方法来看,如果要实现VLAN的功能的话,就需要 BASP 或者 iANS 这样的工具,同时,还要使用对应的可以支持的网络适配器,当使用第三方的网络适配器时,BASP和iANS都不能实现VLAN的功能。如果只是需要实现网卡的高可用性,三种方法都可以实现。
routeros
回复

使用道具 举报

 楼主| 发表于 2004-12-21 11:16:28 | 显示全部楼层
建议先用第一种方法实现,毕竟是linux内核支持的。老大又有事干了哦,HOHO~~
routeros
回复

使用道具 举报

 楼主| 发表于 2004-12-21 11:18:03 | 显示全部楼层
还有点资源:为了避免链接丢失,我干脆都贴上来了。 PC Cluster ?路架?

QUOTE
Channel Bonding  作者 : narusawa   2000-10-29 03:12:57  ?是我在?Channel Bonding?候的心得,Post出?跟大家分享一下。所?的Channel Bonding??的?就是把多??路卡串起?,使得原?的BandWidth增加,理?上加???路卡,Bandwidth就?增加?倍,??上可能?有其他因素,例如Switch可能要有support的能力等等的。我在Linux(Redhat6.2, kernel version 2.2.16-3)下面可以安?成功1.基本上?定make kernel?候 Network Setting下有Channel Bonding????,然後?它做成Modules,2.在/etc/conf.modules ???案加入    alias bond0 bonding ?一行3.切?到 /etc/sysconfig/network-scripts  下,改?ifcfg-bond0和ifcfg-eth?(?依序?0、1、、)      ifcfg-bond0?容?:    DEVICE=bond0  USERCTL=no  ONBOOT=yes  BOOTPROTO=none  BROADCAST=XXX.XXX.XXX.255 (你ip前面三?8bit的?)  NETWORK=XXX.XXX.XXX.0    (你ip前面三?8bit的?)  NETMASK=255.255.255.0  IPADDR=XXX.XXX.XXX.XXX  (你的ip)  ifcfg-eth??容如下:    DEVICE=eth?  USERCTL=no  ONBOOT=yes  MASTER=bond0  SLAVE=yes  BOOTPROTO=none  reboot之後?行ifconfig若看到如下的?容表示  你成奶F,恭喜!bond0     Link encap:Ethernet  HWaddr 00:10:5A:5C:54:61            inet addr:140.110.30.13  Bcast:140.110.30.255  Mask:255.255.255.0          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1          RX packets:6714536 errors:6 dropped:0 overruns:0 frame:6          TX packets:6239841 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0 eth0      Link encap:Ethernet  HWaddr 00:10:5A:5C:54:61            inet addr:140.110.30.13  Bcast:140.110.30.255  Mask:255.255.255.0          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1          RX packets:3349405 errors:4 dropped:0 overruns:0 frame:4          TX packets:3119921 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:100           Interrupt:18 Base address:0xe400 eth1      Link encap:Ethernet  HWaddr 00:10:5A:5C:54:61            inet addr:140.110.30.13  Bcast:140.110.30.255  Mask:255.255.255.0          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1          RX packets:3365131 errors:2 dropped:0 overruns:0 frame:2          TX packets:3119920 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:100           Interrupt:19 Base address:0xe800 lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0          UP LOOPBACK RUNNING  MTU:3924  Metric:1          RX packets:283 errors:0 dropped:0 overruns:0 frame:0          TX packets:283 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0      或???a方可能要大家????,若有其他??     之?,也可以提出?大家交流交流。
routeros
回复

使用道具 举报

发表于 2004-12-21 12:21:25 | 显示全部楼层
具体哪些网卡支持?INTEL的557\558\559行吗?
routeros
回复

使用道具 举报

 楼主| 发表于 2004-12-21 12:38:59 | 显示全部楼层
应该可以的。不过似乎需要用同样的网卡。具体的我也不清楚,网络上好象有用普通交换机或者集线器的文章。
routeros
回复

使用道具 举报

 楼主| 发表于 2004-12-21 13:30:51 | 显示全部楼层
还有篇文章,找不到了,大家找找,然后帖上来。

QUOTE
林信宏:?立中正大??工所博士班二年?(中文) Linux乙太?路?境下使用??交?式集?器之通道?整技? (英文) Channel Bonding in Linux Ethernet Environment using Regular Switching Hub
routeros
回复

使用道具 举报

发表于 2004-12-22 07:51:06 | 显示全部楼层
需要交换机支持的吧?
routeros
回复

使用道具 举报

 楼主| 发表于 2004-12-22 10:16:31 | 显示全部楼层
QUOTE (Sense @ Dec 22 2004, 07:51 AM)
需要交换机支持的吧?  
  你仔细看,还有篇论文没找到呢
routeros
回复

使用道具 举报

 楼主| 发表于 2004-12-22 12:40:45 | 显示全部楼层
还有测试呢:Channel Bonding Performance Test
routeros
回复

使用道具 举报

发表于 2005-4-16 10:21:57 | 显示全部楼层
哎 老大你能把CL的核版本升级到2.4.7 或者更高吗?我想试Linux 下实现网卡高可用性的几种方法的第3种方法 太诱人了  到时就是 nWAN+nLAN了!
routeros
回复

使用道具 举报

发表于 2005-4-16 13:04:04 | 显示全部楼层
这些高可性方案(HA)对用于普通用户(网桥、路由、网关、代理等)的帮助实际并不大。用于关键业务的集中式的服务器上是比较有实际意义的。影响实际使用的主要的原因是:1、局域网下网卡的稳定性、可靠性实际上是相当高的(我用过的一些甚至很便宜的10、100M卡,无论ISA、PCI、PCI-X,几乎没有一张是在使用过程中损坏的,有若干张的ISA的 NE-2000 兼容卡,都用了快10年!!!今天还依然为我提供服务);2、用于在网关的网卡几乎没有过载的情况出现(正常的使用负载当然会有阻塞,DDoS也会有的),但这些不可用的结果与网卡的高可用性基本无关(大多数的WAN并没有这样的带宽要求,如果有这么高的要求,就是电信局了);3、这些高可用性的方案,基本是高端需要,有用户的实际需要推动(可惜数量小、范围窄),亦有厂商的技术推动,我们只需要看一下千兆网卡的推出时间与桌面应用的实际应用就可以看到这一点了。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-6-9 03:42 , Processed in 0.063808 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表