以太网绑定是一种将两个或多个网络接口组合(连接)到单个虚拟 NIC 卡中的方法,它可以增加带宽并提供 NIC 卡的冗余。
Linux 允许我们使用名为绑定的特殊内核模块绑定多个网络接口。该功能在 Linux 上启用,因此我们可以创建一个称为绑定的新虚拟接口。我们有两张网卡 ens33 和 ens34。该帖子显示了 RHEL 7 和 CentOS 7 上的过程。
1) 启用绑定模块
作为第一步,您需要检查绑定模块是否已启用。您可以使用以下命令进行检查
# modinfo bonding
modinfo: ERROR: Module alias bonding not found.
如果它不存在,您可以使用以下命令:
# modprobe --first-time bonding
你可以再检查一下。你会得到下面的结果
# modinfo bonding
您可以看到该命令为我们提供了一个结果,您可以查看描述行。
2)创建绑定通道接口
我们将首先在目录中创建一个新的文件名为bonding.conf/etc/modprobe.d/
。该名称可以是任何您喜欢的名称,只要它以.conf扩展名结尾即可。这是一个名为bonding的驱动程序的配置文件
# vim /etc/modprobe.d/bonding.conf
alias bond0 bonding
插入上面的内容,保存退出。/etc/modprobe.d/bonding.conf
对于每个配置的通道绑定接口,您的文件中必须有相应的条目
现在我们可以创建一个通道绑定接口。为此,我们需要在名为之前创建的别名的/etc/sysconfig/network-scripts/
目录中创建一个文件。ifcfg-bond0
您必须注意到我们对包含网络接口文件的文件夹进行操作。
# vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.43.100
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100"
注意指令BONDING_OPTS行,bonding 使用了多种选项和模式。模式可以是:
- mode 0 或 balance-rr:为容错和负载平衡设置循环策略。
- mode 1或active-backup:为容错设置主动备份策略。
- mode 2或balance-xor:为容错和负载平衡设置 XOR(异或)模式。
- mode 3或broadcast:为容错设置广播策略。所有传输都在所有从接口上发送。
- mode 4或802.3ad:设置 IEEE 802.3ad 动态链路聚合策略。创建共享相同速度和双工设置的聚合组。
- mode 5或balance-tlb:为容错和负载平衡设置传输负载平衡 (TLB) 策略。根据每个从接口上的当前负载分配传出流量。当前从站接收传入流量。如果接收从机发生故障,另一个从机接管故障从机的 MAC 地址。此模式仅适用于内核绑定模块已知的本地地址,因此不能在与虚拟机的网桥后面使用。
- mode 6或balance-alb:为容错和负载平衡设置自适应负载平衡 (ALB) 策略。包括
IPv4
流量的传输和接收负载平衡。
选项可以是:
- miimon= time_in_milliseconds: 显示(以毫秒为单位)检查链接状态是否存在链接故障的频率。如果需要高可用性,这很有用,因为 MII 用于验证 NIC 是否处于活动状态
- arp_interval= time_in_milliseconds:指定(以毫秒为单位)ARP 监控发生的频率。如果在模式 0 或模式 2(两种负载平衡模式)下使用此设置,则必须将网络交换机配置为跨 NIC 均匀分配数据包。
3)配置物理接口
MASTER=bond0
下一步是通过将andSLAVE=yes
指令添加到其配置文件来编辑用于绑定的物理接口。这意味着通道绑定接口是主 接口,要绑定的接口称为从接口。每个通道绑定接口的配置文件几乎相同,您需要注释或删除每个文件中的IP 地址、网络掩码、网关和硬件地址,因为设置只能来自 ifcfg-bond0上面的文件。确保在这些文件中添加 MASTER 和 SLAVE 配置。
对于 ens33 接口,我们将有下面的配置
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
NAME=bond0-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
对于 ens34 接口,文件应如下所示
# vim /etc/sysconfig/network-scripts/ifcfg-ens34
DEVICE=ens34
NAME=bond0-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
4) 激活绑定通道
要激活bonding,请调出所有slave。如果修改时接口已经激活,则需要先去激活接口。
所以我们先去激活界面
# ifdown ifcfg-ens33
Device 'ens33' successfully disconnected.
# ifdown ifcfg-ens34
Device 'ens34' successfully disconnected.
现在我们将重新激活接口
# ifup ifcfg-ens33
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/5)
# ifup ifcfg-ens34
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/6)
或重新加载所有界面
# nmcli con reload
您可以使用以下命令检查配置:
# ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 192.168.43.100 netmask 255.255.255.0 broadcast 192.168.43.255
inet6 fe80::20c:29ff:feb4:f30a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b4:f3:0a txqueuelen 1000 (Ethernet)
RX packets 26 bytes 4705 (4.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22 bytes 3711 (3.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:b4:f3:0a txqueuelen 1000 (Ethernet)
RX packets 13 bytes 2196 (2.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12 bytes 2072 (2.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens34: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:b4:f3:0a txqueuelen 1000 (Ethernet)
RX packets 13 bytes 2509 (2.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10 bytes 1639 (1.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 1172 bytes 86468 (84.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1172 bytes 86468 (84.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
您可以看到只有绑定接口有 IP 地址。您还可以使用以下命令检查配置
# 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): 100
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:b4:f3:0a
Slave queue ID: 0
Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:b4:f3:14
Slave queue ID: 0
有关以太网绑定的更多详细信息,请参阅 Linux 基础页面。
结论
可以通过 miimon 或 arp_interval 参数启用链路监控,其中 miimon 监控由底层网络设备感知的运营商状态,而 arp 监控器 (arp_interval) 监控与本地网络上另一台主机的连接。如果未配置链路监控,则绑定驱动程序将无法检测链路故障,并假定所有链路始终可用。启用链路监控后,故障设备将被禁用。主动备份模式将故障转移到备份链路,其他模式将忽略故障链路。