如何在Linux中设置以太网绑定

时间:2020-03-05 15:24:47  来源:igfitidea点击:

以太网绑定是一种将两个或者多个网络接口组合(合并)为单个虚拟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