为高可用性配置Bonding

高可用性是指通过在主机和世界其他地方之间具有冗余或者备份设备、链接或者交换机来提供最大网络可用性的配置。
目标是提供网络连接的最大可用性(即网络始终有效),即使其他配置可以提供更高的吞吐量。

Bonding的模式

除了用于多交换机拓扑(见下文)的 active-backup(1) 和 broadcast(3) 模式之外,我们还可以将以下模式用于单交换机拓扑:

  • balance-rr(0) :循环策略:从第一个可用的从站到最后一个按顺序传输数据包。此模式提供负载平衡和容错。这是默认模式。因此,如果 /etc/modprobe.conf 中未指定模式,则绑定驱动程序将在 balance-rr 模式下工作。但是最好的做法是在 /etc/modprobe.conf 中说明模式,如上。
  • balance-xor(2) : XOR 策略:基于选定的传输散列策略进行传输。这是基于使用 XOR 运算的 MAC 地址上的散列函数。此模式提供负载平衡和容错。
  • 802.3ad (4) : IEEE 802.3ad 动态链路聚合。创建共享相同速度和双工设置的聚合组。根据 802.3ad 规范使用活动聚合器中的所有从设备。准备工作:
  • 基本驱动程序中的 Ethtool 支持用于检索每个从站的速度和双工。
  • 支持 IEEE 802.3ad 动态链路聚合的交换机。
  • 大多数交换机需要某种类型的配置才能启用 802.3ad 模式。
  • balance-tlb(5) :自适应传输负载平衡:不需要任何特殊交换机支持的信道绑定。根据每个从站上的当前负载(相对于速度计算)分配传出流量。当前从站接收传入流量。如果接收从站发生故障,另一个从站将接管发生故障的接收从站的 MAC 地址。准备工作:
  • 基本驱动程序中的 Ethtool 支持用于检索每个从站的速度。
  • balance-alb(6) :自适应负载均衡:包括 balance-tlb 和 IPV4 流量的接收负载均衡 (rlb),不需要任何特殊的交换机支持。从服务器创建的连接接收流量也是平衡的。当链接重新连接或者新的从站加入绑定时,接收流量将在绑定中的所有活动从站之间重新分配。准备工作:
  • 基本驱动程序中的 Ethtool 支持用于检索每个从站的速度。
  • 基本驱动程序支持在设备打开时设置其硬件地址。

Bonding模式

在上述示例的拓扑中,主动备份和广播模式是优化可用性时唯一有用的绑定模式;其他模式要求所有链路终止在同一个对等点上,以便它们合理地运行。

  • active-backup(或者 1):这通常是首选模式,特别是如果交换机具有 ISL 并且可以很好地协同工作。如果网络配置使得一台交换机专门用作备用交换机(例如,容量较低、成本较高等),则可以使用主要选项来确保首选链路在可用时始终使用。
  • broadcast(或者 3):广播模式,这种模式确实是一种特殊用途的模式,仅适用于非常特定的需求。例如,如果两个交换机没有连接(没有 ISL),并且它们之外的网络是完全独立的。在这种情况下,如果某些特定的单向流量需要到达两个独立的网络,那么广播模式可能是合适的。

Linux查询Bonding配置

每个绑定设备都有一个位于 /proc/net/bonding 目录中的只读文件。
文件内容包括有关每个从站的绑定配置、选项和状态的信息。

比如驱动加载完mode=0和miimon=1000的参数后,/proc/net/bonding/bond0的内容一般如下:

# cat /proc/net/bonding
Ethernet Channel Bonding Driver: 2.6.1 (October 29, 2004)
Bonding Mode: load balancing (round-robin)
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 1000
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Link Failure Count: 1
Slave Interface: eth0
MII Status: up
Link Failure Count: 1

确切的格式和内容将根据绑定配置、状态和绑定驱动程序的版本而变化。

Linux 中以太网绑定(Ethernet Bonding)

Linux 绑定驱动程序提供了一种将多个网络接口聚合为单个逻辑“绑定”接口的方法。
绑定接口的行为取决于模式;一般来说,模式提供热备或者负载均衡服务。
此外,可以执行链路完整性监控。

可以在 http://kernel.org 上找到的最新版本的 linux 内核中找到最新版本的绑定驱动程序。
最新版本和完整文档可以在最新的内核源代码(名为 Documentation/networking/bonding.txt)或者绑定 sourceforge 站点 http://www.sourceforge.net/projects/bonding 上找到

多交换机拓扑中的高可用性

使用多个交换机时,bonding 和网络的配置会发生巨大变化。
在多交换机拓扑中,需要在网络可用性和可用带宽之间进行权衡。

下面是一个示例网络,配置为最大限度地提高网络的可用性:

在此配置中,两台交换机之间有一条链路(ISL,或者交换机间链路),以及多个连接到外部世界的端口(每个交换机上的“端口 3”)。
没有技术原因不能将其扩展到第三个交换机。

Linux配置Bonding

在 Enterprise Linux 中,除非 ethX 设备配置了 IP 地址,否则系统不会自动加载网络适配器驱动程序。
由于此限制,用户必须为将成为 bondX 链接成员的所有物理适配器手动配置网络脚本文件。
网络脚本文件位于以下目录中:

/etc/sysconfig/network-scripts

文件名必须以“ifcfg-eth”为前缀,并以适配器的物理适配器号为后缀。
例如,eth0 的脚本将命名为 /etc/sysconfig/network-scripts/ifcfg-eth0 。
将以下文本放入文件中:

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

每个 ethX 设备的“DEVICE=”行都不同,并且必须与文件名相对应,即 ifcfg-eth1 必须有一个“DEVICE=eth1”设备行。
“MASTER=”行的设置还取决于为绑定选择的最终绑定接口名称。
与其他网络设备一样,这些通常从 0 开始,并为每个设备增加一个,即第一个绑定实例是 bond0,第二个是 bond1,依此类推。

接下来,创建一个绑定网络脚本。
此脚本的文件名将是 /etc/sysconfig/network-scripts/ifcfg-bondX,其中 X 是绑定的编号。
对于bond0,文件名为“ifcfg-bond0”,对于bond1,文件名为“ifcfg-bond1”,依此类推。
在该文件中,放置以下文本:

# vi /etc/sysconfig/network-scripts/ifcfg-bondX
DEVICE=bond0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

请务必更改网络特定行(IPADDR、NETMASK、NETWORK 和 BROADCAST)以匹配网络配置。

最后,有必要编辑 /etc/modules.conf 以在启动 bond0 接口时使用我们想要的选项加载绑定模块。
/etc/modules.conf (或者 modprobe.conf )中的以下几行将加载绑定模块,并选择其选项:

# vi /etc/modprobe.conf
alias bond0 bonding
options bond0 mode=balance-alb miimon=100

对于 CentOS/RHEL 5,绑定模式在文件 /etc/sysconfig/network-scripts/ifconfig-bond0 中设置,而不是在文件 /etc/modprobe.conf 中。

对于 CentOS/RHEL 6,在目录 /etc/modprobe.d/ 中创建一个名为 /etc/modprobe.d/bonding.conf 的新文件,内容为“alias bond0 bonding”。
并在文件 /etc/sysconfig/ 中设置绑定模式network-scripts/ifconfig-bond0 而不是 /etc/modprobe.d/bonding.conf。

对于 /etc/sysconfig/network-scripts/ifcfg-bond0 文件,将示例参数替换为适合配置的一组选项。
最后以 root 身份运行“/etc/rc.d/init.d/network restart”或者“service network restart”。
这将重新启动网络子系统,绑定链接现在应该已启动并正在运行。

on it road .com

单交换机拓扑中的高可用性

如果两台主机(或者一台主机和一台交换机)通过多条物理链路直接连接,那么优化最大带宽不会造成可用性损失。
在这种情况下,只有一个交换机(或者对等方),因此如果它发生故障,则没有其他访问可以进行故障转移。
此外,绑定负载平衡模式支持对其成员的链路监控,因此如果单个链路出现故障,负载将在其余设备之间重新平衡。

日期:2020-09-17 00:14:58 来源:oir作者:oir