51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

在 RHEL 上配置网络绑定(成组)

网络 绑定Bonding(成组Teaming) 是 Linux 的一项内核特性,它让我们可以将多个网络接口(例如 ens192ens224)聚合为一个专有的虚拟网络接口,被称为通道绑定(bond0)。这样做能够提升吞吐量并增加冗余备份。

网络绑定一共支持 7 种模式,你可以根据实际需求进行设置。链接聚合控制协议Link Aggregation Control Protocol(LACP), 即模式 4(802.3ad)因其支持链接聚合与冗余而被广泛应用。

在本篇文章中,我们将引导你学习如何在 RHEL 系统中配置网卡(网络)绑定。

LACP 绑定的前置条件 {#lacp-%E7%BB%91%E5%AE%9A%E7%9A%84%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6}

  • 网络团队需要在网络交换机的端口上开启 LACP(802.3ad)来实现链接的聚合。
  • 一个 Linux 系统应该配备至少两个网络接口。
  • 对于物理服务器,我们推荐在板载接口与 PCI 接口间进行绑定配置,以避免在主机端的网络卡出现单点故障。

Bonding 模块 {#bonding-%E6%A8%A1%E5%9D%97}

你可以使用 lsmod 命令来确认你的 Linux 系统是否已经加载了 bonding 模块。

lsmod | grep -i bonding
bonding               12451  0

系统应该默认已加载。如果未看到,可以运用 modprobe 命令进行加载。

modprobe bonding

创建绑定接口 {#%E5%88%9B%E5%BB%BA%E7%BB%91%E5%AE%9A%E6%8E%A5%E5%8F%A3}

/etc/sysconfig/network-scripts/ 路径下,创建一个名为 ifcfg-bond0 的绑定接口文件。依据你的网络情况,你可能需要修改诸如 IPMASK 以及 GATEWAY 等值。

vi /etc/sysconfig/network-scripts/ifcfg-bond0

TYPE=Bond
DEVICE=bond0
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"

| 参数 | 描述 | |----------------------|-----------------------------------------------------------------------------------| | BONDING_MASTER=yes | 表示设备是一个绑定主设备。 | | mode=4 | 绑定模式是 IEEE 802.3ad 动态链接聚合(LACP)。 | | miimon=100 | 定义以毫秒单位的 MII 链路监测频率,这决定了多久检查每个从属链路的状态一次以寻找失败的链路。0 值将禁用 MII 链路监测。100 是个不错的初始值。 | | lacp_rate=1 | 一个设置项,规定我们将以何种频率要求我们的链路伙伴每秒钟发送 LACPDU。默认为慢,即 0。 |

配置第一个子接口 {#%E9%85%8D%E7%BD%AE%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%AD%90%E6%8E%A5%E5%8F%A3}

修改你希望添加到绑定中的第一个子接口。请根据你的实际环境使用合适的接口名。

vi /etc/sysconfig/network-scripts/ifcfg-ens192

TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens192
ONBOOT=yes
MASTER=bond0
SLAVE=yes

配置第二个子接口 {#%E9%85%8D%E7%BD%AE%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%AD%90%E6%8E%A5%E5%8F%A3}

修改你希望添加到绑定中的第二个子接口。请根据你的实际环境使用合适的接口名。

vi /etc/sysconfig/network-scripts/ifcfg-ens224

TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens224
ONBOOT=yes
MASTER=bond0
SLAVE=yes

重启网络服务 {#%E9%87%8D%E5%90%AF%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1}

重启网络服务以激活绑定接口。

systemctl restart network

验证绑定配置 {#%E9%AA%8C%E8%AF%81%E7%BB%91%E5%AE%9A%E9%85%8D%E7%BD%AE}

你可以借助 ip 命令 来查看绑定接口以及其子接口的情况。可以看到,bond0 现在已启动并在运行。

查阅绑定接口状态 {#%E6%9F%A5%E9%98%85%E7%BB%91%E5%AE%9A%E6%8E%A5%E5%8F%A3%E7%8A%B6%E6%80%81}

检查以下文件,你可以看到绑定接口及其子接口的详细信息。输出结果应该看起来很不错,我们能看到诸如绑定模式,MII 状态,MII 轮询间隔,LACP 速率,端口数量等信息。

cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0


802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: c8:5b:76:4d:d4:5c
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 15
Partner Key: 32773
Partner Mac Address: e4:a7:a0:32:fc:e9


Slave Interface: ens192
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: c8:5b:76:4d:d4:5c
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned State: 0
Partner Churned State: 0
details actor lacp pdu:
system priority: 65535
system mac address: c8:5b:76:4d:d4:5c
port key: 15
port priority: 255
port number: 1
port state: 63
details Partner lacp pdu:
system priority: 32667
system mac address: e4:a7:a0:32:fc:e9
oper key: 32773
port priority: 32768
port number: 290
port state: 61

`Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: e4:a7:a0:32:fc:e9
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned State: 0
Partner Churned State: 0
details actor lacp pdu:
system priority: 65535
system mac address: e4:a7:a0:32:fc:e9
port key: 15
port priority: 255
port number: 2
port state: 63
details Partner lacp pdu:
system priority: 32667
system mac address: c8:5b:76:4d:d4:5c
oper key: 32773
port priority: 32768
port number: 16674
port state: 61
`

容错/冗余测试 {#%E5%AE%B9%E9%94%99%E5%86%97%E4%BD%99%E6%B5%8B%E8%AF%95}

为了验证容错性和连接速度,你可以逐个断开接口,然后检查服务器是否仍旧可达。

  • 测试用例-1:当两个子接口都启动并运行时,使用 ethtool 命令 检查链路速度。
  • 测试用例-2:断开第一个子接口,然后尝试访问系统。
  • 测试用例-3:断开第二个子接口,然后尝试访问系统。

测试用例-1: {#%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B-1}

如果你想检测下连接速度:没错,我在 bond0 上看到了 20 Gbps 的速度,因为每个子接口支持 10 Gbps。

ethtool bond0

Settings for bond0:
        Supported ports: [ ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 20000Mb/s
        Duplex: Full
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: off
        Link detected: yes

测试用例-2: {#%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B-2}

现在我们将关闭第一个子接口。

ifdown ens192

Device 'ens192' successfully disconnected.

通过 ssh 尝试访问系统。没问题,系统现在是可以访问的。

ssh [email protected]

由于已经有一个子接口关闭,你现在在 bond0 上只能看到 10 Gbps 的速度。

ethtool bond0 | grep -i speed

            Speed: 10000Mb/s

现在,我们再次查看绑定接口的状态。可以看出,只有一个子接口处于活跃状态。

cat /proc/net/bonding/bond0

测试用例-3: {#%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B-3}

我们来关闭第二个子接口,并进行类似测试用例-2 的测试:

ifdown ens224

Device 'ens224' successfully disconnected.

结语 {#%E7%BB%93%E8%AF%AD}

我希望你已经掌握了在 RHEL 上配置 LACP 绑定的方法。

在本教程中,我们为你展示了在 RHEL 系统配置网络绑定或网卡聚合的最简单方式。

如果你有任何疑问或者反馈,欢迎在下面留言。

(题图:MJ/939f6ba6-eb46-480d-8879-3a422c7425d2)


via: https://www.2daygeek.com/configure-network-bonding-nic-teaming-rhel/

作者:Jayabal Thiyagarajan 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

赞(3)
未经允许不得转载:工具盒子 » 在 RHEL 上配置网络绑定(成组)