-
双网卡双
IP
概览:
目前网卡绑定
mode
共有七种
(0~6)bond0
、
bond1
、
bond2
、
bon
d3
、
bond4
、
< br>bond5
、
bond6
常用的有三种
:
mode=0
:平衡负载模式,有自动备援,但需要”
Switch
”支援及设定。
mode=1
:自动备援模式,其中一条线若断线,其他线路将会自动备援。
mode=6
:平衡负载模式,有自动备援,不必”
Swi
tch
”支援及设定。
说明
:
需要说明的是如果想做成
mode
0
的负载均衡
,
仅仅设置这里
optionsbond0
miimon=100
mode=0
是不够的
,
与网卡相
连的交换机必须做特殊配置(这两个端口应该采取聚合方式)
,
因为做
bonding
的这两块网卡是使用同一个
MAC
地址
.
从原理分析一
下
(
bond
运行在
< br>mode0
下)
:
mode
0
下
bond
所绑定的网卡的
IP
都被修改成相同的
mac
地址
,如果这些网卡都被接
在同一个交换机,那么交换机的
arp<
/p>
表里这个
mac
地址对应的端口就有多<
/p>
个,那么交换机
接受到发往这个
mac
地址的包应该往哪个端口转发呢?正常情况下
< br>mac
地址是全球唯一的,
一个
mac
地址对应多个端口肯定使交换机迷惑了。所以
mode
0
下的
bond
如果连接到交换
机,交换机这几个端口应该采取聚合方式(
cisco
称为
ethernetchannel
,
foundry
称为
portgroup
)
,因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个
mac
地址
.
我们的<
/p>
解
决办法是,两个网卡接入不同的交换机即可。
mode6
模式下无需
配置交换机,
因为做
bonding
的
这两块网卡是使用不同的
MAC
地址。
七种
bond
模式说明:
第一种模式:
mod=0
,即:
(balance-rr)Round-robin
policy
(平衡抡循环策略)
特
点:传输数据包顺序是依次传输(即:第
1
个包走
eth0
,下一个包就走
eth1
< br>…
.
一直循环
下去,直到最后一
个传输完毕)
,此模式提供负载平衡和容错能力;但是我们知道如果一个
连接或者会话的数据包从不同的接口发出的话,
中途再经过不同的链路,
在客户端很有可能
会出现数据包无序到达的问题,
而无序到达的数据包需要重新要求被发送,
这样网络的吞吐
量就会下降
第二种模式:
mod=1
,即:
(active-
backup)Active-backup policy
(主
-
备份策略)
特点:
只有一个设备处于活动状态,
当一个宕掉另一个马上由备份转换为主设备。<
/p>
mac
地址
是外部可见得,从外面看来,
bond
的
MAC
地址是唯一的,以避免
switch(
交换机
)
发生混乱。
此模式只提供了容错能力;
由此可见此算法的优点是可以提供高网络连接的可用性,
但是它
的资源利用率较低,只有一个接口处于工作状态,在有
N
个网络接口的情况下,资源利用
率为
1
/N
第三种模式:
m
od=2
,即:
(balance-xor)XOR
policy
(平衡策略)
特点:<
/p>
基于指定的传输
HASH
策略传输数据包
。
缺省的策略是:
(
源
MAC
地址
XOR
目标<
/p>
MAC
地址
)%
slave
数量。其他的传输策略可以通过
xmit_has
h_policy
选项指定,此模式提供负载
平衡和容错能力<
/p>
第四种模式:
mod=3
,即:
broadcast
(广播策略)
特点:在每个
sl
ave
接口上传输每个数据包,此模式提供了容错能力
第五种模式:
mod=4
,即:
(802.3ad)IEEE 802.3ad Dynamic
link aggregation
(
IEEE802.3ad
动态
链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据
802.3ad
p>
规范将多个
slave
工作在同一个激活的
聚合体下。
外出流量的
slave
选举
是基于传输
hash
策略,
该策略可以
通
过
xmit_hash_policy
选项从缺省的
XOR
策略改变到其他策略。
< br>需要注意的
是,
并不是所有的
传输策略都是
802.3ad
适应的,
尤其考虑到在
802.3ad
标准
43
.2.4
章节提及的包乱序问题。
不同的实现可能会有不同的适
应
性。
必要条件:
条件
1
:
ethtool
支持获取每个
slave
的速率和双工设定
条件
2
:
switc
h(
交换机
)
支持
IEEE802.3ad Dynamic link aggregation
条件
3
:大多数
switch(
交换机
)
需要经过特定配置才能支持
802.3ad
模式
第六种模式:
mod=5
,即:
(balance-tlb)Adaptive transmit load balanc
ing
(适配器传输负载均
衡)
p>
特点:不需要任何特别的
switch(
交
换机
)
支持的通道
bonding
p>
。在每个
slave
上根据当前的负
载
(根据速度计算)
分配外出流量。
如果正在接受数据的
slave
出故障了,
p>
另一个
slave
接管
失败的
slave
的
MAC
地址。
该模式的必要条件:
ethtool
支持获取每个
slave
的速率
第七种模式:
mod=6
,即:
(balance-
alb)Adaptive load
balancing
(适配器适应性负载均衡)
特点:该模式包含了
balance-tlb
< br>模式,同时加上针对
IPV4
流量的接收负载均衡
(receiveload
balance, rlb)
,
而且不需要任何
switch(
交换机
)
的支持。
接收负载均
衡是通过
ARP
协商实现的。
bond
ing
驱动截获本机发送的
ARP
应答
,
并把源硬件地址改写为
bond
中某
个
slave
的唯一硬
件地址,从而使
得不同的对端使用不同的硬件地址进行通信。
来自服务器端的
接收流量也会被均衡。当本机发送
ARP
请求时,
bonding
驱动把对端的
IP
< br>信息从
ARP
包中复制并保存下来。
当
ARP
应答从对端到达时,
bo
nding
驱动把它的硬件地址
提取出来,并发起一个
ARP
应答给
bond
中的某个
slave
。使用
ARP
p>
协商进行负载均衡的一
个问题是:每次广播
ARP
请求时都会使用
bond
的硬件
地址,因此对端学习到这个硬件地址
后,接收流量将会全部流向当前的
< br>slave
。这个问题可以通过给所有的对端发送更新(
ARP
应答)
来解决,
应答中包含他们
独一无二的硬件地址,
从而导致流量重新分布。
当新的
slave
加入到
bond
中时,或者某个未激活的
slave
重新
< br>
激活时,接收流量也要重新分布。接收的
负载被顺序地
分布(
roundrobin
)在
bo
nd
中最高速的
slave
上当某个链
路被重新接上,或者
一个新的
slave
加入到
bond
中,接收流量在所有当前激活的
slave
中全部重新分配,通过使
用指定的
MAC
地址给每个
client
发起
ARP
应答。
下面介
绍的
updelay
参数必须被设置为某个
大于等于
switch(
交换机
)
转发延时的值,
从而保证发往对端的
A
RP
应答
不会被
switch(
交换机
)
阻截。<
/p>