结合界面是甚么,它如何运作?

结合界面等同连接阜中断法。以下我会使用结合这个名词因为我们实际上是将界面结合在一起。

结合界面容许你把多个端口聚合为单一群组,有效地将带宽合并到一个连接。结合界面亦让你创建数十亿位元的管道来输送流量到网络上流量早最高的地方。举个例说,你可以集合三个兆位元的端口作为一个三兆位元的中断端口。它等同於一个时速有三兆字节的界面。

我应该何时应用结合界面?

你可应用在任何需要有冗余连接、容错、或负载平衡的网络上。这是创建高可用性网络段的最佳方法。一个有效地结合界面的方法就是同时利用 802.1q VLAN 的支持(你的网络设备必需实施 802.1q 通讯协议)。

有甚么结合模式可供使用?

最好的文档已收录在 Linux Channel Bonding 计划的网页 http://sourceforge.net/projects/bonding/

mode=1(active-backup)

有效备用政策:结合界面里只有一个生效的从属。唯有当有效的从属失效,另一个从属才会有效。为了避免混淆网络交换器,结合界面的 MAC 地址只会在一个端口(网络适配器)上显现出来。这个模式提供容错。主要的选项会影响这个模式的特性。

mode=2(balance-xor)

XOR 政策:传输时根据[(来源地 MAC 地址 XOR 目的地 MAC 地址) modulo 从属数量]。这样同一个 MAC 地址便会选用同一个从属。这个模式提供负载平衡和容错。

mode=3(broadcast)

广播政策:将一切通过所有从属界面传输。这个模式提供容错。

mode=4(802.3ad)

IEEE 802.3ad 动态连结聚合。创建拥有相同速度及双工设置的聚合群组。按照 802.3ad 规范应用所有从属於生效的聚合器中。

mode=5(balance-tlb)

可调适传输负载平衡:不需要支持任何特殊交换的结合通道。外传信息会按照各个从属的现有负载(相对速度而运算出来)作出配置。内传信息是通过现时生效的从属接收。假若接收的从属失效,另一个从属会取用失效的从属的 MAC 地址。

mode=6(balance-alb)

可调适负载平衡:包括 IPV4 流量的 balance-tlb 及接收负载平衡(rlb),而且不需要支持任何特殊交换。接收负载平衡是通过 ARP 协商来达成。结合界面驱动程序会拦截本地系统所发送的 ARP 答复,然后将来源地的硬件地址以结合界面内某个从属的独特硬件地址取代,好达到个别同级采用不同的服务器硬件地址。

CentOS 4 上的结合界面

modprobe.conf 档内加入下列内容:

alias bond0 bonding
options bond0 miimon=80 mode=5

在加入任何网络别名前,先确定已经加入模式

模式:
mode=0 (Balance Round Robin)
mode=1 (Active backup)
mode=2 (Balance XOR)
mode=3 (Broadcast)
mode=4 (802.3ad)
mode=5 (Balance TLB)
mode=6 (Balance ALB)

/etc/sysconfig/network-scripts/ 目录内置立配置文件 ifcfg-bond0

DEVICE=bond0
IPADDR=<ip address>
NETMASK=
NETWORK=
BROADCAST=
GATEWAY=
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

修改 ifcfg-eth0 以参与新的结合界面:

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes

检查结合界面的现况。

cat /proc/net/bonding/bond0

你可以使用多个结合界面,但你必需根据界面数量及个别选项多重装入结合界面的模块。假设你需要两个结合界面,你必须将 /etc/modules.conf 如下设置:

 alias bond0 bonding
 options bond0 -o bond0 mode=0 miimon=100
 alias bond1 bonding
 options bond1 -o bond1 mode=1 miimon=100

你可以使用 ifenslave 这个指令来亲自管理结合界面的状态。详情请参阅 ifenslave 的指令说明。

CentOS 4 之后

随着时间的推移, 编辑 /etc/modprobe.conf 已经不受欢迎,而更受欢迎的是编写,或通过启动脚本编译更小的以 .conf 为后缀的配置文件,但并不强求。 这些文件位于: /etc/modprobe.d/ 并且按字母顺序进行排列。采用这个命名惯例,有利于 '面向未来' 的发行版迎接 'init' 的继任者,比如 systemd

Translation of revision 19

zh/TipsAndTricks/BondingInterfaces (last edited 2013-01-23 07:27:28 by haoweilee)