如何在Linux中设置以太网绑定
以太网绑定是一种将两个或者多个网络接口组合(合并)为单个虚拟NIC卡的方法,这可能会增加带宽并提供NIC卡的冗余。
Linux允许我们使用名为bonding的特殊内核模块来绑定多个网络接口。
该功能已在Linux上启用,因此我们可以创建一个称为bond的新虚拟接口。
我们有两个NIC卡ens33和ens34.
该帖子显示了RHEL 7和CentOS 7上的过程。
1)启用绑定模块
第一步,我们需要检查是否启用了绑定模块。
我们可以使用以下命令进行检查
# modinfo bonding modinfo: ERROR: Module alias bonding not found.
如果不存在,则可以使用以下命令:
# modprobe --first-time bonding
我们可以再次检查。
我们将得到以下结果
# modinfo bonding
我们可以看到该命令为我们提供了结果,并且我们可以查看内容描述行。
2)创建一个绑定通道接口
我们首先将在/etc/modprobe.d /
目录中创建一个新文件名为bonding.conf。
该名称可以是任何我们喜欢的名称,只要它以.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 line,绑定使用各种选项和模式。
模式可以是:
- 模式0或者balance-rr:设置容错和负载均衡的轮询策略。
- 模式1或者活动备份:设置活动备份策略以实现容错。
- 模式2或者balance-xor:设置XOR(异或者)模式以实现容错和负载平衡。
- 模式3或者广播:设置用于容错的广播策略。所有传输都在所有从接口上发送。
- 模式4或者802.3ad:设置IEEE 802.3ad动态链接聚合策略。创建共享相同速度和双工设置的聚合组。
- 模式5或者balance-tlb:设置用于容错和负载平衡的传输负载平衡(TLB)策略。根据每个从接口上的当前负载分配传出流量。当前从站接收到传入流量。如果接收方从站发生故障,则另一个从站将接管发生故障的从站的MAC地址。此模式仅适用于内核绑定模块已知的本地地址,因此不能在与虚拟机桥接的后面使用。
- 模式6或者balance-alb:为容错和负载平衡设置自适应负载平衡(ALB)策略。包括针对“ IPv4”流量的发送和接收负载平衡。
选项可以是:
- miimon = time_in_milliseconds:显示(以毫秒为单位)链接状态检查链接失败的频率。如果需要高可用性,这将很有用,因为使用MII来验证NIC是否处于活动状态
- arp_interval = time_in_milliseconds:指定(以毫秒为单位)ARP监视发生的频率。如果在模式0或者模式2(两种负载平衡模式)下使用此设置,则必须将网络交换机配置为在NIC上平均分配数据包。
3)配置物理接口
下一步是通过将“ MASTER = bond0”和“ SLAVE = 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)激活绑定通道
要激活绑定,请养育所有奴隶。
如果在修改过程中已经激活了该接口,则需要先取消激活该接口。
因此,我们将首先停用该界面
# 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)监视与本地网络上另一主机的连接。
如果未配置任何链接监视,则绑定驱动程序将无法检测到链接故障,并将假定所有链接始终可用。
启用链接监视后,将禁用发生故障的设备。
活动备份模式将故障转移到备份链接,其他模式将忽略发生故障的链接。
Related Read: Interface (NICs) Bonding in Linux using nmcli