验证网络绑定(Bonding)的配置
- 检查“ip addr show”命令输出中的新接口:
# ip addr show 1: lo: [LOOPBACK,UP,LOWER_UP] mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 4: ens37: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 5: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff inet 192.168.2.12/24 brd 192.168.2.255 scope global bond0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe54:f720/64 scope link valid_lft forever preferred_lft forever
- 还可以使用以下命令验证绑定接口的当前状态以及当前处于活动状态的接口:
# 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: ens33 MII Status: up MII Polling Interval (ms): 1 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens33 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:20 Slave queue ID: 0 Slave Interface: ens37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:34 Slave queue ID: 0
从上面的命令输出中,我们可以看到 ens33 是绑定中当前活动的从属设备。
Bonding模式
根据你的需求,我们可以将Bonding模式设置为以下 7 种模式之一)
模式 | 策略 | 如何工作 | 容错 | 负载均衡 |
---|---|---|---|---|
0 | Round Robin | 数据包依次通过每个接口一个接一个地发送/接收。 | 不 | 是的 |
1 | Active Backup | 一个 NIC 处于活动状态,而另一个 NIC 处于休眠状态。如果活动 NIC 出现故障,另一个 NIC 将变为活动状态。仅在 x86 环境中受支持。 | 是的 | 不 |
2 | XOR [exclusive OR] | 在这种模式下,从 NIC 的 MAC 地址与传入请求的 MAC 匹配,一旦建立此连接,同一个 NIC 将用于发送/接收目标 MAC。 | 是的 | 是的 |
3 | Broadcast | 所有传输都在所有从机上发送 | 是的 | 不 |
4 | Dynamic Link Aggregation | 聚合的 NIC 充当一个 NIC,这会导致更高的吞吐量,但也会在 NIC 发生故障的情况下提供故障转移。动态链路聚合需要支持 IEEE 802.3ad 的交换机。 | 是的 | 是的 |
5 | Transmit Load Balancing (TLB) | 根据每个从接口上的当前负载分配传出流量。当前从站接收传入流量。如果接收从站出现故障,另一个从站将接管故障从站的 MAC 地址。 | 是的 | 是的 |
6 | Adaptive Load Balancing (ALB) | 与动态链路聚合不同,自适应负载平衡不需要任何特定的交换机配置。自适应负载平衡仅在 x86 环境中受支持。接收报文通过ARP协商进行负载均衡。 | 是的 | 是的 |
测试Bonding配置的容错性
- 由于这是一种主动-备份绑定配置,当一个接口出现故障时,绑定中的另一个接口成为主动从属接口。
为了验证此功能,我们将关闭当前界面 ens33.
# ifdown ens33
- 如果再次查看bond接口状态,会发现新的active slave是接口ens37.
# 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: ens37 MII Status: up MII Polling Interval (ms): 1 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:34 Slave queue ID: 0
绑定接口也将启动并运行:
# ip add show bond0 5: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff inet 192.168.2.12/24 brd 192.168.2.255 scope global bond0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe54:f720/64 scope link valid_lft forever preferred_lft forever
网络接口绑定(Network interface bonding)有多种名称:端口中继(Port Trunking)、通道绑定(Channel Bonding)、链路聚合(Link Aggregation)、NIC 组队(NIC teaming)等。
它将多个网络连接组合或者聚合到单个通道绑定接口中。
这允许两个或者多个网络接口作为一个接口,以增加吞吐量并提供冗余或者故障转移。
Linux 内核附带了用于将多个物理网络接口聚合为单个逻辑接口的绑定驱动程序(例如,将 eth0 和 eth1 聚合为 bond0)。
对于每个绑定接口,我们可以定义模式和链路监控选项。
有七种不同的模式选项,每种模式都提供特定的负载平衡和容错特性,如下表所示。
监控网络Bonding链路
Bonding驱动程序支持两种方法来监视从站的链接状态:
- MII(媒体独立接口)监视器
- 这是默认和推荐的链接监控选项。
- 它监视本地网络接口的载波状态。
- 我们可以指定监控频率和延迟。
- 延迟时间允许我们考虑交换机初始化。
- ARP监控
- 这会向网络上的对等系统发送 ARP 查询,并将响应用作链路已启动的指示。
- 我们可以指定监控频率和目标地址。
之路教程 https://onitr oad .com
配置网络绑定(Network Bonding)
创建绑定接口文件
我们可以在 /etc/sysconfig/network-scripts 目录中手动创建绑定接口文件。
首先创建绑定接口,然后将物理网络接口添加到绑定。
这些物理网络接口称为“从设备”。
对于本文中的示例,bond0 接口的从站是 ens33 和 ens37.
启动前,请确保绑定模块已正确加载。
要验证这一点,请使用如下所示的命令:
# lsmod |grep bonding bonding 122351 0
如果模块未加载,请使用 modprobe 命令加载它。
# modprobe bonding
- 下面是一个bonding接口文件的例子:
# cat /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=active-backup" TYPE=Bond BONDING_MASTER=yes BOOTPROTO=none IPADDR=192.168.2.12 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=bond0 UUID=bbe539aa-5042-4d28-a0e6-2a4d4f5dd744 ONBOOT=yes
- 下面的例子将ens33物理网络接口定义为bond0的slave:
# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet NAME=ens33 UUID=817e285b-60f0-42d8-b259-4b62e21d823d DEVICE=ens33 ONBOOT=yes MASTER=bond0 SLAVE=yes
- 下面的例子将ens37物理网络接口定义为bond0的slave:
# cat /etc/sysconfig/network-scripts/ifcfg-ens37 TYPE=Ethernet NAME=ens37 UUID=f0c23472-1aec-4e84-8f1b-be8a2ecbeade DEVICE=ens37 ONBOOT=yes MASTER=bond0 SLAVE=yes
- 重启网络服务
重启网络服务,使能bonding接口。
# systemctl restart network
如果我们不想重新启动网络服务,我们可以单独检测绑定接口:
# ifup bond0
日期:2020-09-17 00:12:01 来源:oir作者:oir