多网卡绑定链路聚合提升出口带宽上限实操指南
为什么要做多网卡绑定链路聚合
单张网卡的带宽(比如千兆)可能无法满足大流量场景,但再加上一张网卡直接用并不能自动叠加。
通过多网卡绑定(bonding)技术,操作系统可以把多张物理网卡虚拟成一张逻辑接口,配合链路聚合协议,实现出口带宽的叠加提升。
本文适合手上有双网卡服务器、想利用多条宽带提升吞吐量的零基础用户阅读,所有操作均在 CentOS 7 上验证。
准备工作:确认硬件与系统环境
- 至少两张物理网卡(eth0、eth1),确保系统能识别。
- 备份原有网络配置:
cp -a /etc/sysconfig/network-scripts /root/network-backup - 安装必要工具:
yum install -y net-tools ethtool - 确认交换机端口已配置端口聚合(LACP)或允许未受控模式,不同模式对应不同交换机要求。
- 本文以 mode=4(802.3ad) 为例,该模式需要交换机支持 LACP;若交换机不支持,可使用 mode=0(round-robin) 但注意易乱序。
分步配置:从零创建绑定接口
第一步:创建 bond0 配置文件
vi /etc/sysconfig/network-scripts/ifcfg-bond0
写入以下内容:
DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast"
miimon=100表示每100毫秒监测链路状态,lacp_rate=fast加快聚合协商。
第二步:修改物理网卡配置文件
编辑 eth0 配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
同样方法编辑 ifcfg-eth1,将 DEVICE 改为 eth1,其余内容相同。
第三步:加载 bonding 模块
echo "bonding" >> /etc/modules-load.d/bonding.conf
modprobe bonding
第四步:重启网络服务并验证
systemctl restart network
重启后检查 bond0 是否被分配 IP:ip addr show bond0,
查看绑定状态:cat /proc/net/bonding/bond0,
看到 MII Status:
up 和 Link Failure Count:
0 说明正常工作。
避坑指南:常见问题与模式选择
- 带宽不叠加:如果选了 mode=1(active-backup)只有主链路工作,无法提升带宽。想让带宽相加必须选 mode=0 或 mode=4,且前者交换机需要支持 802.3ad 或直接做端口聚合。
- 丢包严重:检查交换机端口是否配置了正确的聚合协议;如果混用不同速率网卡,bonding 可能不稳定,建议统一速率。
- 网卡名混乱:CentOS 7 网卡名可能为 ens33、ens38,请用
ip link找出正确名称,配置时使用实际名。 - MTU 不一致:所有物理网卡及 bond0 的 MTU 值必须相同,否则大包会被丢弃。
效果验证与高频问题解答
验证带宽是否提升
使用 iperf3 分别测试单网卡和 bond0 的吞吐:
# 服务端(另一台机器)
iperf3 -s
# 客户端(本机)
iperf3 -c <服务端IP> -P 4 -t 30 # 4个并发流
观察输出中的带宽值,如果接近两张网卡之和则生效。
也可以通过 sar -n DEV 1 看到 bond0 的总流量飙升。
FAQ
Q:重启后 bond0 未自动激活?
A:检查 ifcfg-bond0 的 ONBOOT=yes,以及物理网卡是否都设置为 ONBOOT=yes。
Q:流量集中在其中一张网卡上?
A:检查 bonding 模式。mode=0 按包轮询;mode=4 需要交换机正确响应 LACPDU,否则会回退为模式 0。
Q:配置后无法上网?
A:确认 GATEWAY 只写在 bond0 配置中,物理网卡不要写网关;检查 ifconfig 是否看到 bond0 MAC 与物理网卡一致。
通过以上步骤,你可以正式用多网卡绑定链路聚合技术提升出口带宽上限。
如果遇到交换机配置问题,建议先查阅交换机的链路聚合手册,确保两边参数一致。