文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SLES FAQ 系列 -- 配置网卡绑定

SLES FAQ 系列 -- 配置网卡绑定

时间:2005-07-07  来源:wjqhd

参见:http://portal.suse.com/sdb/en/2004/10/dcon_bonding_sles8.html

保持服务器的高可用性接的高可用性是企业级IT 环境的重要因素。其中最重要的一点是服务器网络连环境的重要因素。其中最重要的一点是服务器网络连接的高可用性。网卡(NIC)绑定技术有助于保证高可用性特性并提供其它优势以提高网络性能。

   我们在这介绍的Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网 卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项技术在Sun和Cisco中早已存在,被称为Trunking和 Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。bonding技术的最早应用是在集群—— beowulf上,为了提高集群节点间的数据传输而设计的。下面我们讨论一下bonding的原理,什么是bonding需要从网卡的混杂 (promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MACAddress)是自身Mac的以太网帧,对于别的数据帧都滤掉, 以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在个模式下, bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据 帧传送给bond驱动程序处理。

说了半天理论,其实配置很简单:
绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片

SUSE LINUX Enterprise Server 9下的配置步骤

1. 编辑虚拟网络接口配置文件,指定网卡IP

[sles9:/etc/sysconfig/network]# cp /etc/sysconfig/network/ifcfg.template ifcfg-bond0
[sles9:/etc/sysconfig/network]# vi /etc/sysconfig/network/ifcfg-bond0

2. #vi ifcfg-bond0

  #将STARTMODE设置为'onboot'
  STARTMODE='onboot'
#将BOOTPROTO设置为'static'
  BOOTPROTO='static'
#设置IPADDR
  IPADDR=172.31.0.13
#设置子网掩码
  NETMASK=255.255.252.0
#设置广播地址
  BROADCAST=172.31.3.255

    

  这里要主意,不要在单个网卡的配置文件中指定IP地址设定信息如:地址、子网掩码或网卡ID。将上述信息指定到虚拟(bonding)配置文件ifcfg-bond?中即可。
   将IPADDR,NETMASK,BROADCAST的设置从网卡配置文件 /etc/sysconfig/network/ifcfg-eth-id-xx:xx:xx:xx:xx:xx 中删除掉,其中 xx:xx:xx:xx:xx:xx 是要配置bonding 的网卡的 MAC 地址。将BOOTPROTO设置为'static',STARTMODE设置为'onboot'。

3. 编辑/etc/modprobe.conf文件,加入如下内容,系统在加载bonding模块时,使用文件里指定的参数:

alias bond0 bonding
options bond0 miimon=100 mode=1
#options bond0 arp_interval=100 arp_ip_target=xxx.xxx.xxx.xxx mode=1

# if have multi bonding interface, un comment next two lines
#alias bond1 bonding
#options bond1 miimon=100 mode=1
##options bond0 arp_interval=100 arp_ip_target=xxx.xxx.xxx.xxx mode=1  

  说明:miimon是用来进行链路监测的。比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线 路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。bonding可以通过两种机制进行链路监控,miimon需要驱动 支持,arp_interval/arp_ip_target不需要驱动支持,arp_interval指定arp检查的时间间隔, arp_ip_target是要反向查询arp的ip地址列表,最多16个,以逗号分隔,例如:arp_interval=100 arp_ip_target=192.168.100.5,192.168.100.6,表示每100毫秒作一次arp检查,如果 192.168.100.5和192.168.100.6的arp检查的结果都失败了,则链路状态为断开,bonding的active interface作出切换。
mode=0表示load balancing(round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance(active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。
bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用

4 # vi /etc/rc.d/boot.local
加入下面几行
# probe ethernet card kernel module first
/sbin/modprobe e1000

# probe first bonding kernel module
/sbin/insmod bonding miimon=100 mode=1
#/sbin/insmod bonding arp_inerval=100 arp_ip_target=192.168.100.5,192.168.100.6

#if have multi bonding interface, uncomment next line
#/sbin/insmod bonding -o bond1 miimon=100 mode=1

这里我们假设用户只有两块Intel e1000 网卡,首先加载网卡的驱动e1000,如果是其他的网卡使用不同的驱动,然后加载bonding驱动。
实际上在这个阶段需要作的操作是首先按照网卡的逻辑顺序加载网卡驱动,然后在所有网卡的驱动都按所需的顺序成功加载之后再用合适的参数加载bonding驱动。
例如:在逻辑上的 eth0 eth1 为 Intel e1000,eth2 eth3 为 BCM5700,
这种情况下/etc/rc.d/boot.local :

# probe first, second ethernet card kernel module
/sbin/modprobe e1000

# probe third, fourth ethernet card kernel module
/sbin/modprobe bcm5700

# probe first bonding kernel module
/sbin/insmod bonding miimon=100 mode=1
#/sbin/insmod bonding arp_interval=100 arp_ip_target=192.168.100.5,192.168.100.6 mode=1

#if have multi bonding interface, uncomment next line
#/sbin/insmod bonding -o bond1 miimon=100 mode=1

对于链路状态的监控,除了用miimon参数外,还可以用arp_interval/arp_ip_target参数来监控
arp_interval用于配置arp检查的时间间隔,arp_ip_target用于配置在作arp检查时,使用的ip地址,
可以有多个ip地址,用逗号分隔。例如:arp_interval=100 arp_ip_target=10.0.0.1,10.0.0.2

5 添加配置文件 /etc/sysconfig/bonding.conf 和 系统V启动脚本 /etc/init.d/bonding
配置文件 /etc/sysconfig/bonding.conf内容:
declare -a BOND_INTERFACES
declare -a BOND_ARGS
# BOND_INTERFACES: array of bonding interfaces
BOND_INTERFACE=(bond0 bond1)
# BOND_ARGS: array of slaves on each bonding interfaces
BOND_ARGS=("eth0 eth1" "eth2 eth3")

由于粘贴上来的代码包含大括号,我不知道如何让大括号显示出来,所以贴在opensuse.org上了
启动脚本 /etc/init.d/bonding 内容参见网址:
http://www.opensuse.org/User_talk:Juwang

6. 编译 ifenslave 工具
可以通过安装iputils软件包安装ifenslave命令。
此外,
ifenslave util's source code was in kernel source packages, if your system do not install it please install kernel-source package first.

# cd /usr/src/linux/Documentation/networking
# gcc -Wall -Wstrict-prototypes -O -I/usr/src/linux/include ifenslave.c -o ifenslave
# cp ifenslave /sbin/ifenslave

7. 为 bonding 创建系统V 启动脚本链接
# chkconfig -a bonding

  到这时已经配置完毕, 重新启动网络服务。

# /etc/rc.d/boot.local
# /etc/rc.d/network restart
# /etc/rc.d/bonding start

 下面我们讨论以下mode分别为0,1时的情况
 mode=1工作在主备模式下,这时eth1作为备份网卡是noarp的

  [root]#ifconfig验证网卡的配置信息
 bond0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
  inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
  UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:18495 errors:0 dropped:0 overruns:0 frame:0
  TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0
 RX bytes:1587253 (1.5 Mb) TX bytes:89642 (87.5 Kb)

 eth0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
  inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
  UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
  RX packets:9572 errors:0 dropped:0 overruns:0 frame:0
TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
  RX bytes:833514 (813.9 Kb) TX bytes:89642 (87.5 Kb)
  Interrupt:11

 eth1 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
  inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
  UP BROADCAST RUNNING NOARP SLAVE MULTICAST MTU:1500 Metric:1
  RX packets:8923 errors:0 dropped:0 overruns:0 frame:0
  TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
  RX bytes:753739 (736.0 Kb) TX bytes:0 (0.0 b)
  Interrupt:15   

 

 那也就是说在主备模式下,当一个网络接口失效时(例如主交换机掉电等),不会出现网络中断,系统会按照cat /etc/rc.d/boot.local 里指定网卡的顺序工作,机器仍能对外服务,起到了失效保护的功能。

 在mode=0负载均衡工作模式下,能在提供带宽的负载均衡的同时提供失效保护,我们来看一下网卡的配置信息

  [root]# ifconfig
 bond0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
  inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
  UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
  RX packets:2817 errors:0 dropped:0 overruns:0 frame:0
  TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0
 RX bytes:226957 (221.6 Kb) TX bytes:15266 (14.9Kb)

 eth0 Link encap:Ethernet HWaddr00:0E:7F:25:D9:8B
  inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
  UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
  RX packets:1406 errors:0 dropped:0 overruns:0 frame:0
  TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
 RX bytes:113967 (111.2 Kb) TX bytes:7268 (7.0 Kb)
  Interrupt:11

 eth1 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
  inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
  UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
  RX packets:1411 errors:0 dropped:0 overruns:0 frame:0
  TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
RX bytes:112990 (110.3 Kb) TX bytes:7998 (7.8 Kb)
  Interrupt:15  

  在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用。
  通过查看bond0的工作状态查询能详细的掌握bonding的工作状态

  [sles9:~]# cat /proc/net/bond0/info
bonding.c:v2.2.14 (June 30, 2003)
  Bonding Mode: load balancing (round-robin)
  MII Status: up
  MII Polling Interval (ms): 100
  Up Delay (ms): 0
  Down Delay (ms): 0
  Multicast Mode: all slaves

  Slave Interface: eth1
  MII Status: up
  Link Failure Count: 0
  Permanent HW addr: 00:0e:7f:25:d9:8a

  Slave Interface: eth0
  MII Status: up
  Link Failure Count: 0
  Permanent HW addr: 00:0e:7f:25:d9:8b   

SUSE LINUX Enterprise Server 8下的配置步骤

配置步骤与 SLES9 类似,下面只列出区别的地方
(1) SLES8 下内核模块参数的配置是在 /etc/modules.conf
3. 编辑 /etc/modules.conf 文件,加入如下内容,以使系统在启动网络服务时加载bonding模块,对外虚拟网络接口设备为bond0:
alias bond0 bonding
options bond0 miimon=100 mode=1
#options bond0 arp_interval=100 arp_ip_target=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx mode=1

(2) SLES8 下的网卡配置文件缺省命名不是 ifcfg-eth-id-xx.xx.xx.xx.xx.xx,而是
将IPADDR,NETMASK,BROADCAST的设置从网卡配置文件
/etc/sysconfig/network/ifcfg-ethn中删除掉,但保留 BOOTPROTO 为static,STARTMODE 为onboot,其中ethn 是逻辑上要加入 bonding 配置的网卡的逻辑设备名。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载