分类: 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
|
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 |
参考文档位置,这里可以找到bonding模式的说明。
/usr/share/doc/kernel-doc-2.6.32/Documentation/networking/bonding.txt.
创建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的值表示工作模式,他共有0,1,2,3,4,5,6七种模式。这里用5来测试。 关于模式的说明,请看最后面的说明,此模式说明也可以在下面的文档中找到。 /usr/share/doc/kernel-doc-2.6.32/Documentation/networking/bonding.txt
保存后,执行 modprobe bonding |
[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 |
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 动态链路聚合。
必要条件:
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. |