Quantcast
Channel: SQLParty »系统
Viewing all articles
Browse latest Browse all 5

Linux下多网卡绑定bonding同一IP(RedHat 5.5/6.2)

$
0
0

工作上,遇到某台服务器上某网卡工作不稳定的情况,时断时续,非常纠结。该服务器共有4块网卡,于是琢磨下利用多网卡实现高性能和高可用。

Linux下实现此功能,使用bonding技术,可以将两个或多个网卡对外使用一个IP,以提高吞吐和冗余。bonding在内核2.4以上均已包含,只需要在编译的时候将网络设备选型中的Bonding driver support选中即可。

本文分别介绍Red Hat Enterprise 5.5与6.2下的配置方式,两者有所不同。

Red Hat Enterprise 5.5

1.检查发行版的内核是否已经支持Bonding

shell>vi /boot/config-2.6.18-194.el5  #对应版本的configxxx

#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_IFB=m
CONFIG_DUMMY=m
CONFIG_BONDING=m   #已经支持了!OK!

2.编辑/etc/modprobe.conf文件,添加内容

shell>vi /etc/modprobe.conf
alias bond0 bonding
options bonding mode=0 miimon=100 downdelay=200 updelay=200

以上是配置bonding驱动的选项,在启动时传递给modprobe命令。

bonding的一些选项:

  • mode指定bonding的策略,常用的有
    • balance-rr或0(默认),即轮询策略,从多个可用网卡上依次传输包。该选项提供了负载均衡和容错。
    • active-backup或1,主备策略,同一时刻只有一个网卡在使用,其他网卡备用。活跃网卡不可用时,自动切换至某一备用网卡,MAC地址不变。
    • balance-xor或2:传输依赖于选中的传输哈希策略。基本的策略是(源MAC XOR 目的MAC)%备用网卡数。这样,相同的目的MAC每次使用同一个物理网卡进行传输。该模式也提供了负载均衡和容错。
    • broadcast或3:广播。任何内容每个网卡都传输。提供了容错功能。
    • 802.3ad或4:IEEE 802.3ad动态链路聚合。创建聚合组,由hash策略来决定实际使用哪个网卡进行数据传输。这个模式下有两点要求:
      • 驱动支持获取每个网卡流量和双工通道
      • 交换机支持IEEE 802.3ad动态链路聚合。大多数需要进行配置来启动该模式。
  • miimon指定MII连接监控的时间间隔,单位为毫秒。它决定了检查活跃与否的频率。0则禁用了监控。
  • updelay指定了启用miimon时,连接被检测到恢复时,等待多久启用对应网卡。单位为毫秒。
  • downdelay指定了启用miimon时,连接被检测到失效时,等待多久禁用对应网卡。单位为毫秒。

3.配置network脚本

/etc/sysconfig/network-scripts目录下ifcfg-xx名称的文件是对物理网卡的设置文件。如第一个网卡的设置文件可以是/etc/sysconfig/network-scripts/ifcfg-eth0。

内容如:
# Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.10.255
HWADDR=78:45:C4:ED:23:24
IPADDR=192.168.10.124
IPV6INIT=yes
IPV6_AUTOCONF=yes
NETMASK=255.255.255.0
NETWORK=192.168.10.0
ONBOOT=yes

这里,新建ifcfg-bond0文件。

shell>vi /etc/sysconfig/network-scripts/ifcfg-bond0
# Bonded interface
DEVICE=bond0   #步骤2中指定的名称
BOOTPROTO=none #不要设置static,会有网络不稳定的情况
ONBOOT=yes
IPADDR=192.168.10.125
NETMASK=255.255.255.0
NETWORK=192.168.10.0
BROADCAST=192.168.10.255
TYPE=Ethernet

然后,更新需要使用到的网卡对应的设置文件。

shell>vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0   #步骤2中指定的名称
SLAVE=yes
TYPE=Ethernet

shell>vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0   #步骤2中指定的名称
SLAVE=yes
TYPE=Ethernet

4.重启网络子系统,使变更生效

shell>service network restart

Red Hat Enterprise 6.2

6版本与5版本的配置方式有所不同。

6版本没有modprobe.conf文件,而且bond接口上配置MASTER以及BONDING_OPTS参数,对于加入bond的物理接口只要配置SLAVE以及相应的MASTER。

1.创建bond接口,在接口配置文件的路径下/etc/sysconfig/network-scripts/

shell>vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none #不要设置static,会有网络不稳定的情况。实际上REDHAT6 已经没有static选项。
IPADDR=192.168.10.125
NETMASK=255.255.255.0
PREFIX=24
GATEWAY=192.168.10.1
DEFROUTE=yes
NM_CONTROLLED=no   #这个参数时NetworkManager相关,关闭
MASTER=yes
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
BINDING_OPTS=”mode=0 miimon=100 downdelay=100 updelay=100″

2.修改要加入bond的两种物理口的接口配置文件

shell>vi /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=em1
NM_CONTROLLED=no
BOOTPROTO=none
MASTER=bond0  #设置master为bond0
SLAVE=yes   #设置为slave
ONBOOT=yes

shell>vi /etc/sysconfig/network-scripts/ifcfg-em2
DEVICE=em2
NM_CONTROLLED=no
BOOTPROTO=none
MASTER=bond0 #设置master为bond0
SLAVE=yes   #设置为slave
ONBOOT=yes

3.配置模块别名

shell>vi /etc/modprobe.d/bond0.conf
alias bond0 bonding

4.重启网络

shell>service network restart
如果配置正常,这个步骤甚至可以远程操作,虽然网络会有小段时间断开连接。

5.查看配置

shell>cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: em1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 6
Permanent HW addr: 90:b1:1c:3d:f5:f5
Slave queue ID: 0

Slave Interface: em2
MII Status: down
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 6
Permanent HW addr: 90:b1:1c:3d:f5:f6
Slave queue ID: 0

补充:由于网络管理不再使用NetworkManager,而已直接关闭它,并不使它开机自启动。

shell>service NetworkManager stop

shell>chkconfig –level 2345 NetworkManager off

参考:
http://www.fogproject.org/wiki/index.php?title=Bonding_Multiple_NICs
http://blog.csdn.net/zhouzhuan2008/article/details/8447281
http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding
http://www.datacentersky.com/the-redhat-6-dual-cards-network.html

The post Linux下多网卡绑定bonding同一IP(RedHat 5.5/6.2) appeared first on SQLParty.


Viewing all articles
Browse latest Browse all 5

Trending Articles