绑定(Bonding)可以说是 Linux 系统的核心特性,它可以将多个网络接口(例如 ens33 和 ens55)聚合成一个虚拟的网络端口,这被称为管道绑定。端口绑定不仅可以提高网络吞吐量,还提高了网络的冗余性。

网络绑定提供了7种模式,我们可以根据实际需要进行相应的配置。链路聚合控制协议(LACP – Mode 4(802.3ad))是应用最为广泛的绑定模式,因为它既支持链路聚合,又支持端口冗余。

本文将详细演示如何在 CentOS 系统配置端口绑定。

1] 配置端口绑定的条件

  • 网络设备支持 LACP 以启用端口绑定
  • Linux 系统至少包含两个网络接口
  • 如果是物理服务器,我们建议将板载网络接口和 PCI 网络接口进行端口绑定,以避免出现单点故障时影响绑定效果

2] 检查系统是否支持端口绑定

使用如下命令检查使用的 Linux 系统是否已经启用了端口绑定功能:

# lsmod | grep -i bonding

示例显示如下,则表示系统已经启用了端口绑定:

图.1 检查端口绑定功能是否启用

如果没有输出相应信息,则可以使用如下命令手动开启端口绑定功能:

# modprobe bonding

3] 创建绑定接口

首先在”/etc/sysconfig/network-scripts/”目录创建一个绑定接口文件”ifcfg-bond0″,根据自己的网络配置,设置绑定接口的 IP 地址、子网掩码以及网关等信息,示例配置如下:

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

对于配置项的说明如下:

  • BONDING_MASTER=yes:用于表示该接口为绑定接口主设备
  • mode=4:绑定模式为 802.3ad (LACP)
  • miimon=100:用于设置 MII(Media Independent Interface)接口监视时间间隔,以毫秒为单位,监视所有从接口是否工作正常。0 值表示不监视,100则为一个相对合理的设置值
  • lacp_rate=1:该选项指定我们要求链接伙伴每 1 秒发送一次 LACPDU 的速率,默认为慢速,值为0

4] 添加从接口

使用”ifconfig”命令,可以查看当前主机的接口情况,示例主机的接口信息如下:

图.2 主机接口信息

可以看到,主机有两个网络接口”ens33″和”ens34″,这两个接口将做为绑定接口的从接口配置端口绑定。

分别编辑两个接口的配置文件”/etc/sysconfig/network-scripts/ens33″和”/etc/sysconfig/network-scripts/ens34″,内容分别如下:

# /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens33
ONBOOT=yes
MASTER=bond0
SLAVE=yes

# /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens34
ONBOOT=yes
MASTER=bond0
SLAVE=yes

5] 验证端口绑定

配置完成后,重新启动网络:

# systemctl restart network

之后使用”ip a”命令查看网络信息:

图.3 查看主机端口绑定信息

可以看到,网络接口”ens33″和”ens34″都已经成功加入绑定端口,并且绑定端口使用了设置的 IP 地址。

使用如下命令,可以查看绑定端口的详细信息:

# 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: layer2 (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: 00:0c:29:ec:9a:29
Active Aggregator Info:
        Aggregator ID: 1
        Number of ports: 1
        Actor Key: 9
        Partner Key: 1
        Partner Mac Address: 00:00:00:00:00:00

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:ec:9a:29
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: churned
Actor Churned Count: 0
Partner Churned Count: 1
details actor lacp pdu:
    system priority: 65535
    system mac address: 00:0c:29:ec:9a:29
    port key: 9
    port priority: 255
    port number: 1
    port state: 79
details partner lacp pdu:
    system priority: 65535
    system mac address: 00:00:00:00:00:00
    oper key: 1
    port priority: 255
    port number: 1
    port state: 1

Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:ec:9a:33
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: churned
Partner Churn State: churned
Actor Churned Count: 1
Partner Churned Count: 1
details actor lacp pdu:
    system priority: 65535
    system mac address: 00:0c:29:ec:9a:29
    port key: 9
    port priority: 255
    port number: 2
    port state: 71
details partner lacp pdu:
    system priority: 65535
    system mac address: 00:00:00:00:00:00
    oper key: 1
    port priority: 255
    port number: 1
    port state: 1

此时,我们手动停止一个网络接口,看网络是否会中断,来验证端口绑定的冗余功能:

# ifdown ens34
# cat /proc/net/bonding/bond0

图.4 测试端口绑定冗余性

可以看到,虽然有一个网络接口手动停止,但这并没有中断网络,因为绑定组中还有一个端口可以正常工作,则绑定组即可正常工作。 

在本教程中,我们演示了如何 CentOS 系统上配置网络绑定的简单步骤。希望有助于各位了解如何配置 LACP 绑定。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注