绑定(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 绑定。