在CentOS系统运维中,使用nmcli命令行工具配置网卡bonding(链路聚合)是目前主流且推荐的方式,相比传统的ifcfg配置文件方法,nmcli更加灵活、实时生效且不易出错。bonding的核心目的是将多块物理网卡绑定为一个逻辑接口,实现带宽叠加和故障自动切换。常用的bonding模式有mode=0(轮询)、mode=1(主备)、mode=4(802.3ad动态链路聚合)、mode=6(自适应负载均衡)等,其中mode=4需要交换机端支持LACP协议。下面我直接给出完整的配置步骤、监测方法和常见坑点,全部基于nmcli实操。
一、确认环境前提条件在动手之前,你需要确认几件事。第一,系统是CentOS 7/8/9或者RHEL系列,这些版本默认自带NetworkManager服务,nmcli才能用。第二,至少有两块物理网卡,比如ens192和ens224,可以用ip a或者nmcli device status查看。第三,bonding内核模块已经加载,执行lsmod | grep bonding确认。如果没有,执行modprobe bonding加载,并将其写入/etc/modules-load.d/bonding.conf确保开机自启。第四,如果你选mode=4,交换机必须配置LACP聚合,否则bonding会降级为mode=0或者不通。
二、使用nmcli创建bonding接口的完整步骤整个过程分四步:创建bond接口、添加从属网卡、配置IP、启动连接。以下以mode=4(802.3ad)为例,bond名称为bond0,从属网卡为ens192和ens224,IP为192.168.1.100/24,网关192.168.1.1。
第一步,创建bond主接口:
nmcli connection add type bond con-name bond0 ifname bond0 mode 4 miimon 100 lacp-rate 1
这里mode 4就是802.3ad,miimon 100表示每100毫秒检测一次链路状态,lacp-rate 1表示每秒发送一次LACPDU。如果你要用mode=1主备模式,就把mode改成1,去掉lacp-rate参数。
第二步,把物理网卡作为从属接口加入bond0:
nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens192 master bond0 nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens224 master bond0
注意,从属接口不需要配置IP,所有IP配置都放在bond0上。这一点很多人搞混,导致网络不通。
第三步,给bond0配置IP和网关:
nmcli connection modify bond0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual ipv4.dns "8.8.8.8 114.114.114.114"
第四步,依次激活从属接口和bond主接口:
nmcli connection up bond0-port1 nmcli connection up bond0-port2 nmcli connection up bond0
顺序很重要,先起从属,再起主接口。如果报错,用nmcli connection show查看状态,用nmcli connection down再重新up排查。
三、不同bonding模式的选择建议实际运维中,选哪个mode取决于你的网络环境和需求。mode=0(balance-rr)适合两台服务器直连且不需要交换机配置的场景,但对交换机有要求,且容易出现乱序。mode=1(active-backup)最简单,一块坏了自动切另一块,适合高可用但不需要带宽叠加的场景。mode=4(802.3ad)是企业环境最常用的,需要交换机支持,带宽和冗余都有。mode=6(balance-alb)不需要交换机支持,但只能做到出方向负载均衡,入方向还是单块网卡。我个人建议生产环境优先用mode=4,测试环境用mode=1最省事。
四、bonding状态监测与故障排查配置完成后,监测是运维的核心。第一个命令,查看bonding详细状态:
cat /proc/net/bonding/bond0
这个文件会显示每个从属网卡的状态(up/down)、当前活动的从属网卡、聚合模式、LACP速率等信息。如果某块网卡显示down,说明物理链路有问题或者配置有误。
第二个命令,用nmcli快速查看连接状态:
nmcli connection show bond0 nmcli device status
第三个命令,查看内核日志中bonding相关信息:
dmesg | grep -i bond
如果出现"bond0: link status definitely down for slave ens192"之类的信息,说明该从属网卡物理链路断开。此时bonding会自动将流量切换到正常的网卡,这就是故障转移在起作用。
此外,建议配合监控工具如Zabbix、Prometheus+node_exporter来长期监控。node_exporter自带bonding指标,可以通过bonding_active和bonding_slaves等指标做告警。如果你用Zabbix,可以创建一个监控项,定期执行cat /proc/net/bonding/bond0并解析关键字段。
五、常见问题与避坑指南第一个坑:配置完bond0后,原来的物理网卡连接文件没有删除,导致NetworkManager冲突。解决办法是先把旧连接删掉:nmcli connection delete ens192,再创建从属接口。第二个坑:mode=4配置了但交换机没配LACP,结果bonding降级工作或者完全不通。一定要提前和网络工程师确认交换机端口是否做了channel-group。第三个坑:miimon值设得太小,比如设成10毫秒,会导致链路频繁抖动,系统日志刷屏。生产环境建议100-200毫秒。第四个坑:修改bonding配置后没有重新激活连接,nmcli modify只是改了配置文件,必须up才生效。第五个坑:CentOS 8/9上NetworkManager和Network服务冲突,确保NetworkManager是active状态:systemctl status NetworkManager。
六、配置持久化与备份nmcli的配置是持久化的,保存在/etc/NetworkManager/system-connections/目录下。建议做一次备份:
cp -r /etc/NetworkManager/system-connections/ /root/nm-backup/
如果系统重装或者迁移,把这个目录拷过去就能恢复。另外,也可以导出配置为文本方便查看:
nmcli connection show bond0 --export > /root/bond0-config.txt
这个导出的文件可以用nmcli connection import重新导入,在其他机器上快速复用配置。
七、总结与实操建议用nmcli配置CentOS bonding,核心就是四条命令:创建bond主接口、添加从属接口、配置IP、激活连接。整个过程不需要手动编辑ifcfg文件,不需要重启网络服务,实时生效且可回滚。生产环境务必做好监控,重点关注从属网卡的上下线状态和bonding的活动从属数量。mode选择上,有交换机LACP支持就用mode=4,没有就用mode=1或mode=6。把这套流程跑通一次,以后换机器或者扩容网卡都是复制粘贴的事,效率非常高。
