为什么要聚合网络接口(接口绑定)?

创建接口绑定(bonding)的两个重要原因是:

  1. 提供增加的带宽
  2. 面对硬件故障时提供冗余

配置绑定的准备工作之一是拥有支持 Etherchannel 的网络交换机(在几乎所有交换机的情况下都是如此)。

Red Hat/CentOS:如何创建接口/网卡绑定(NIC bonding)

配置接口绑定

  1. 创建主bond0接口
    为此,我们必须创建一个包含以下内容的文件 /etc/sysconfig/network-scripts/ifcfg-bond0:
# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.10.1.10
NETMASK=255.255.255.0
BONDING_OPTS="miimon=100"

在 RHEL6 上,在 ifcfg-bondX 中配置绑定参数,而不是在 /etc/modprobe.d/bonding.conf 文件中。
好处是这些参数可以在接口初始化过程中更改为每个绑定接口,而不是绑定驱动程序初始化过程。
也就是说,改变参数不再需要重新加载bonding驱动。
这有助于减少系统范围的网络中断,同时对绑定接口进行一些小的更改。

BONDING_OPTS - Specify bonding module parameters, e.g. miimon - link polling interval for fault detection (in ms)

由于我们已使用 IP 地址和网络掩码配置了绑定接口,因此无需在构成绑定的各个接口文件中指定它们。

  1. 创建从接口
    我们将使用 em0 和 em1 作为从接口来创建 bond0 绑定接口。
    MASTER 和 SLAVE 行将主绑定接口 bond0 和 em0/em1 定义为从接口。
# vi /etc/sysconfig/network-scripts/ifcfg-em0
DEVICE=em0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
# vi /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=em1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
  1. 配置bonding驱动
    配置文件 /etc/modprobe.conf 在 RHEL 6 上已弃用,配置文件现在位于目录 /etc/modprobe.d 中。
    旧的配置文件仍然受支持,但不推荐。
    在目录/etc/modprobe.d 中创建一个新文件bonding.conf 来告诉内核它应该为新设备bond0 使用bonding 驱动程序。
# vi /etc/modprobe.d/bond.conf
alias bond0 bonding
  1. 重启网络服务
    重启网络服务,使能bonding接口。
# service network restart

如果我们不想重新启动网络服务,我们可以单独检测绑定接口:

# ifup bond0
  1. 验证
    检查 ifconfig 命令输出中的新接口:
# ifconfig bond0
bond0     Link encap:Ethernet  HWaddr 00:0C:29:9B:FD:2B
          inet addr:10.10.1.10  Bcast:10.10.1.1  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe9b:fd2b/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:39 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:13875 (13.5 KiB)  TX bytes:3446 (3.3 KiB)

要验证绑定模块是否正确加载:

# lsmod |grep bond
bonding               122351  0

要检查哪个接口当前处于活动状态(在主动备份模式的情况下):

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: em0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 5000
Down Delay (ms): 5000
Slave Interface: em0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:21:28:b2:65:26
Slave queue ID: 0
Slave Interface: em1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:21:28:b2:65:27
Slave queue ID: 0

如果我们想测试绑定是否正确配置,请从绑定中关闭活动接口(此处为 em0)。
我们仍然会发现绑定接口仍然可以访问。

# ifdown em0
on it road .com

Bonding的模式

根据要求,我们可以将绑定模式设置为以下 7 种模式中的任何a)
绑定模式可以在绑定接口网络文件/etc/sysconfig/network-scripts/ifcfg-bond0中设置如下:

BONDING_OPTS="mode=active-backup miimon=250"

或者

BONDING_OPTS="mode=1 miimon=250"
模式策略如何工作容错负载均衡
0Round Robin 轮询数据包依次通过每个接口一个接一个地发送/接收。是的
1Active Backup 主备模式一个 NIC 处于活动状态,而另一个 NIC 处于休眠状态。如果活动 NIC 出现故障,另一个 NIC 将变为活动状态。仅在 x86 环境中受支持。是的
2XOR [异或者]在这种模式下,从 NIC 的 MAC 地址与传入请求 's MAC 匹配,一旦建立此连接,同一个 NIC 将用于发送/接收目标 MAC。是的是的
3Broadcast 广播模式所有传输都在所有从机上发送是的
4动态链接聚合(DLA)聚合的 NIC 充当一个 NIC,这会导致更高的吞吐量,但也会在 NIC 发生故障的情况下提供故障转移。动态链路聚合需要支持 IEEE 802.3ad 的交换机。是的是的
5传输负载平衡 (TLB)根据每个从接口上的当前负载分配传出流量。当前从站接收传入流量。如果接收从站出现故障,另一个从站将接管故障从站的 MAC 地址。是的是的
6自适应负载平衡 (ALB)与动态链路聚合不同,自适应负载平衡不需要任何特定的交换机配置。自适应负载平衡仅在 x86 环境中受支持。接收报文通过ARP协商进行负载均衡。是的是的
日期:2020-09-17 00:14:24 来源:oir作者:oir