Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3142144
  • 博文数量: 1805
  • 博客积分: 135
  • 博客等级: 入伍新兵
  • 技术积分: 3345
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-19 20:01
文章分类

全部博文(1805)

文章存档

2017年(19)

2016年(80)

2015年(341)

2014年(438)

2013年(349)

2012年(332)

2011年(248)

分类: LINUX

2013-12-23 13:03:58

原文地址:Linux下的bonding 作者:ericwangdl

环境:RHEL6.1,网卡 eth3,eth4àbond0

介绍:

         什么是Bonding Linux Bonding 驱动提供了一个把多个网络接口设备绑定为单个网络接口来使用,用于网络负载均衡及冗余。类似于思科交换机上的Etherchannel.

         应用的方向,主要是网络负载均衡,和网络的冗余。

         网络负载: 服务器中一般情况下使用的是千兆网卡(1 Gbps),而且有多个网络接口。如果有较大流量需求,可以通过bonding把几个网络接口聚合到一起,使用一个IP对外提供服务。

         网络冗余:服务器上有很多硬件冗余,电源,硬盘,内存。关于网卡的冗余,bonding可以提供冗余支持,把多个网卡绑到一个IP上,当一个网卡故障或者线路中断,另一个网卡自动启动,服务可以正常运行。一个网卡正常工作,其他网卡做standby.
配置过程
查看是否支持bonding

[root@TEST ~]# modprobe -l bond*

kernel/drivers/net/bonding/bonding.ko

[root@TEST ~]# lsmod | grep bond*

bonding               107911  0

ipv6                  266112  46

 

如果没有,参考下面的方法编译。一般情况下,系统默认安装就有bonding的支持

xz -d linux-3.12.6.tar.xz

tar vxf linux-3.12.6.tar

进入目录

make menuconfig

Network device support " -> " Bonding driver support

make bzImage
make modules && make modules_install
make install

参考文档位置,这里可以找到bonding模式的说明。

/usr/share/doc/kernel-doc-2.6.32/Documentation/networking/bonding.txt.


 配置eth3

创建eth3文件,/etc/sysconfig/network-scripts/ifcfg-eth3

DEVICE=eth3

TYPE=Ethernet

USERCTL=no

ONBOOT=yes

MASTER=bond0  指向bond0

SLAVE=yes

BOOTPROTO=none

NM_CONTROLLED=no

IPV6INIT=no


创建eth4配置文件/etc/sysconfig/network-scripts/ifcfg-eth4

DEVICE=eth4

TYPE=Ethernet

USERCTL=no

ONBOOT=yes

MASTER=bond0

SLAVE=yes

BOOTPROTO=none

NM_CONTROLLED=no

IPV6INIT=no


1.      配置网卡bond0

Vi /etc/sysconfig/network-scripts/ifcfg-bond0

此文件里面不要有mac地址。

TYPE=Bond

BOOTPROTO=none

IPADDR=192.168.3.239

NM_CONTROLLED=no

NAME="bond0"

ONBOOT=yes

DEVICE=bond0

USERCTL=no

GATEWAY=192.168.3.1

NETMASK=255.255.255.0

IPV6INIT=no


 编辑模块

vi /etc/modprobe.d/bonding.conf

alias bond0 bonding

options bond0 miimon=100 mode=5

说明:

miimon是用来进行链路监测的。比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0123456七种模式。这里用5来测试。

关于模式的说明,请看最后面的说明,此模式说明也可以在下面的文档中找到。

/usr/share/doc/kernel-doc-2.6.32/Documentation/networking/bonding.txt

 

保存后,执行

modprobe bonding


然后重启网络服务。
重启网络,测试。
断开一个网卡的连接,ping测试。
查看状态

[root@TEST etc]# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

 

Bonding Mode: transmit load balancing

Primary Slave: None

Currently Active Slave: eth3

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

 

Slave Interface: eth3

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:57:15:27

Slave queue ID: 0

 

Slave Interface: eth4

MII Status: down

Link Failure Count: 1

Permanent HW addr: 00:0c:29:57:15:1d

Slave queue ID: 0


7种模式的说明。

Specifies one of the bonding policies. The default is

        balance-rr (round robin).  Possible values are:

 

        balance-rr or 0  Round-robin policy(平衡抡循环策略)

 

                Round-robin policy: Transmit packets in sequential

                order from the first available slave through the

                last.  This mode provides load balancing and fault

                tolerance.

数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1....一直循环下去,直到最后一个传输完毕), 此模式提供负载平衡和容错能力

 

 

 

 

        active-backup or 1-----主备策略,此模式只提供容错。只有一个网络接口工作,如果有N个网卡,使用率是1/N

                Active-backup policy: Only one slave in the bond is

                active.  A different slave becomes active if, and only

                if, the active slave fails.  The bond's MAC address is

                externally visible on only one port (network adapter)

                to avoid confusing the switch.

 

                In bonding version 2.6.2 or later, when a failover

                occurs in active-backup mode, bonding will issue one

                or more gratuitous ARPs on the newly active slave.

                One gratuitous ARP is issued for the bonding master

                interface and each VLAN interfaces configured above

                it, provided that the interface has at least one IP

                address configured.  Gratuitous ARPs issued for VLAN

                interfaces are tagged with the appropriate VLAN id.

 

                This mode provides fault tolerance.  The primary

                option, documented below, affects the behavior of this

                mode.

 

        balance-xor or 2  平衡策略,此模式提供负载均衡和容错

 

                XOR policy: Transmit based on the selected transmit

                hash policy.  The default policy is a simple [(source

                MAC address XOR'd with destination MAC address) modulo

                slave count].  Alternate transmit policies may be

                selected via the xmit_hash_policy option, described

                below.

 

                This mode provides load balancing and fault tolerance.

broadcast or 3------广播策略,提供冗余功能。在每个slave接口上传输数据。

 

                Broadcast policy: transmits everything on all slave

                interfaces.  This mode provides fault tolerance.

 

802.3ad or 4     802.3ad 动态链路聚合。

必要条件:
条件1ethtool支持获取每个slave的速率和双工设定
条件2switch(交换机)支持IEEE 802.3ad Dynamic link aggregation
条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

 

                IEEE 802.3ad Dynamic link aggregation.  Creates

                aggregation groups that share the same speed and

                duplex settings.  Utilizes all slaves in the active

                aggregator according to the 802.3ad specification.

 

                Slave selection for outgoing traffic is done according

                to the transmit hash policy, which may be changed from

                the default simple XOR policy via the xmit_hash_policy

                option, documented below.  Note that not all transmit

                policies may be 802.3ad compliant, particularly in

                regards to the packet mis-ordering requirements of

                section 43.2.4 of the 802.3ad standard.  Differing

                peer implementations will have varying tolerances for

                noncompliance.

 

                Prerequisites:

 

                1. Ethtool support in the base drivers for retrieving

                the speed and duplex of each slave.

 

                2. A switch that supports IEEE 802.3ad Dynamic link

                aggregation.

 

                Most switches will require some type of configuration

                to enable 802.3ad mode.

balance-tlb or 5--- (balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)此模式不需要交换机支持。

 

                Adaptive transmit load balancing: channel bonding that

                does not require any special switch support.  The

                outgoing traffic is distributed according to the

                current load (computed relative to the speed) on each

                slave.  Incoming traffic is received by the current

                slave.  If the receiving slave fails, another slave

                takes over the MAC address of the failed receiving

                slave.

 

                Prerequisite:

 

                Ethtool support in the base drivers for retrieving the

                speed of each slave.

balance-alb or 6-----(balance-alb) Adaptive load balancing(适配器适应性负载均衡),--(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

                Adaptive load balancing: includes balance-tlb plus

                receive load balancing (rlb) for IPV4 traffic, and

                does not require any special switch support.  The

                receive load balancing is achieved by ARP negotiation.

                The bonding driver intercepts the ARP Replies sent by

                the local system on their way out and overwrites the

                source hardware address with the unique hardware

                address of one of the slaves in the bond such that

                different peers use different hardware addresses for

                the server.

 

                Receive traffic from connections created by the server

                is also balanced.  When the local system sends an ARP

                Request the bonding driver copies and saves the peer's

                IP information from the ARP packet.  When the ARP

                Reply arrives from the peer, its hardware address is

                retrieved and the bonding driver initiates an ARP

                reply to this peer assigning it to one of the slaves

                in the bond.  A problematic outcome of using ARP

                negotiation for balancing is that each time that an

                ARP request is broadcast it uses the hardware address

                of the bond.  Hence, peers learn the hardware address

                of the bond and the balancing of receive traffic

                collapses to the current slave.  This is handled by

                sending updates (ARP Replies) to all the peers with

                their individually assigned hardware address such that

                the traffic is redistributed.  Receive traffic is also

                redistributed when a new slave is added to the bond

                and when an inactive slave is re-activated.  The

                receive load is distributed sequentially (round robin)

                among the group of highest speed slaves in the bond.

When a link is reconnected or a new slave joins the

                bond the receive traffic is redistributed among all

                active slaves in the bond by initiating ARP Replies

                with the selected MAC address to each of the

                clients. The updelay parameter (detailed below) must

                be set to a value equal or greater than the switch's

                forwarding delay so that the ARP Replies sent to the

                peers will not be blocked by the switch.

 

                Prerequisites:

 

                1. Ethtool support in the base drivers for retrieving

                the speed of each slave.

 

                2. Base driver support for setting the hardware

                address of a device while it is open.  This is

                required so that there will always be one slave in the

                team using the bond hardware address (the

                curr_active_slave) while having a unique hardware

                address for each slave in the bond.  If the

                curr_active_slave fails its hardware address is

                swapped with the new curr_active_slave that was

                chosen.






阅读(438) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~