CentOS 网卡配置 MASTER:构建高可用网络基石
在 CentOS 服务器运维中,确保网络连接的持续稳定至关重要,尤其对于承担关键业务的主机,单点网卡故障可能导致服务中断,带来严重后果,利用 Linux 内核的 bonding(或 team)驱动,将多块物理网卡聚合为逻辑上的单一接口,并配置 MASTER/SLAVE 主备模式,是实现网络高可用性(High Availability)的经典且高效方案,本文将深入解析 CentOS 下配置网卡为 MASTER 角色的完整流程与核心要点。
理解 MASTER 角色:核心与备援

在 bonding 的主备模式(通常为 mode=1)中:
- MASTER 网卡:这是逻辑聚合接口(bondX)在正常工作状态下唯一激活并承担数据流量的物理网卡,它是网络连接的“主力军”。
- SLAVE 网卡:作为 MASTER 的热备份,当系统检测到 MASTER 网卡发生故障(如链路断开)时,SLAVE 网卡会自动无缝接管网络流量,保障业务不中断,故障恢复后,流量通常切回 MASTER(取决于配置)。
配置实战:分步打造 MASTER 高可用网卡
确认硬件与驱动
- 确保服务器至少安装了两块物理网卡(如
eth0,eth1)。 - 检查内核是否支持 bonding:
lsmod | grep bonding,若未加载,执行modprobe bonding。 - 安装必要工具:
yum install -y net-tools(包含ifconfig) 或确保iproute2(ip命令) 可用。
创建 Bonding 逻辑接口
- 创建 bond 接口配置文件,使用你熟悉的编辑器(如
vi或nano)创建文件/etc/sysconfig/network-scripts/ifcfg-bond0如下:DEVICE=bond0 TYPE=Bond NAME=bond0 BONDING_MASTER=yes IPADDR=192.168.1.100 # 替换为你的实际业务IP NETMASK=255.255.255.0 # 替换为你的子网掩码 GATEWAY=192.168.1.1 # 替换为你的网关 DNS1=8.8.8.8 # 替换为你的DNS DNS2=8.8.4.4 ONBOOT=yes # 开机启动 BOOTPROTO=none # 静态IP BONDING_OPTS="mode=1 miimon=100 primary=eth0" # 关键!主备模式,100ms检测,主接口eth0mode=1: 指定 bonding 模式为主备(active-backup)。miimon=100: 每 100 毫秒检查一次 slave 接口的链路状态。primary=eth0: 明确指定eth0为 MASTER 角色(主接口),这是将 eth0 配置为 MASTER 的核心设置。
配置 MASTER 物理网卡 (eth0)
- 修改
/etc/sysconfig/network-scripts/ifcfg-eth0:DEVICE=eth0 TYPE=Ethernet NAME=eth0 ONBOOT=yes BOOTPROTO=none MASTER=bond0 # 指定所属的bond接口 SLAVE=yes # 声明自己是slave(物理角色) # 注意:此处的物理网卡eth0被配置为bond0的SLAVE, # 但通过bond0的`primary=eth0`参数,它在逻辑上被指定为MASTER(主用)角色。- 关键点在于
MASTER=bond0和SLAVE=yes,物理网卡本身配置为 SLAVE,隶属于 bond0。MASTER 角色的指定是在 bond0 的配置中通过primary=参数实现的。
- 关键点在于
配置 SLAVE 物理网卡 (eth1)

- 修改
/etc/sysconfig/network-scripts/ifcfg-eth1:DEVICE=eth1 TYPE=Ethernet NAME=eth1 ONBOOT=yes BOOTPROTO=none MASTER=bond0 # 指定所属的bond接口 SLAVE=yes # 声明自己是slave(物理角色,同时逻辑上是备援)
重启网络服务 & 验证配置
重启网络服务:
systemctl restart network(CentOS 7+) 或service network restart(CentOS 6)。检查 bond0 状态:
ip addr show bond0:确认 bond0 已启动并获取了正确的 IP 地址。cat /proc/net/bonding/bond0:这是最重要的验证文件! 输出应清晰显示:Bonding Mode: fault-tolerance (active-backup) # 主备模式 Primary Slave: eth0 (if_active) # 主接口是 eth0 且当前活跃 Currently Active Slave: eth0 # 当前活跃的slave是eth0 MII Status: up # MII 状态 MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up # eth0 状态 up Link Failure Count: 0 # 链路失败次数 Permanent HW addr: xx:xx:xx:xx:xx:xx Slave Interface: eth1 MII Status: up # eth1 状态 up (作为备份) Link Failure Count: 0 Permanent HW addr: yy:yy:yy:yy:yy:yy输出明确展示了
eth0被标识为Primary Slave且Currently Active Slave,这就是 MASTER 角色的体现。eth1作为备份 Slave 在线。
关键测试:模拟故障切换
- 断开 MASTER (
eth0) 物理连接:拔掉 eth0 的网线或在服务器上执行ifdown eth0。 - 观察切换:
- 立即再次查看
cat /proc/net/bonding/bond0,输出应变为:Currently Active Slave: eth1 # 当前活跃的slave已切换到eth1 Slave Interface: eth0 MII Status: down # eth0 状态 down ... Slave Interface: eth1 MII Status: up ... - 测试业务连通性(如 ping 网关或业务地址)。正常情况下,网络应仅出现极其短暂(毫秒级)的中断或无感切换,业务持续可用。
- 立即再次查看
- 恢复 MASTER (
eth0):插回网线或执行ifup eth0。 - 观察切回(取决于
fail_over_mac和primary_reselect策略,默认通常切回 primary):- 查看
cat /proc/net/bonding/bond0,确认Currently Active Slave是否变回eth0(可能需要几秒到几十秒,受miimon和链路协商影响)。
- 查看
配置要点与注意事项
primary=是关键:在ifcfg-bond0的BONDING_OPTS中设置primary=eth0是明确指定 eth0 为 MASTER (逻辑主用)角色的唯一方式,物理网卡配置文件 (ifcfg-ethX) 中MASTER=bond0和SLAVE=yes的配置对所有加入 bond 的物理网卡是相同的。- MAC 地址处理:主备模式下,bond 接口 (
bond0) 默认会使用 MASTER 网卡 (eth0) 的 MAC 地址,这通常是期望的行为,避免了交换机学习新 MAC 带来的延迟,可通过fail_over_mac参数调整策略。 - 切换策略:
primary_reselect参数控制主接口恢复后是否以及如何重新成为活动接口,常用值primary_reselect=always(总是切回主) 或better(仅当主比当前备好时切回)。 - 链路检测 (
miimon):miimon=100是常用且可靠的间隔,确保物理交换机端口也启用了快速链路检测(如 STP PortFast 等)。 - 接口命名一致性:CentOS 7+ 可能使用新的接口命名规则 (如
ens192),务必在配置文件中使用实际的接口名称。
个人观点
将关键服务器的核心网卡配置为 bonding MASTER 角色,绝非冗余摆设,而是构建服务韧性的基石,主备自动切换能力,直接决定了业务遭遇硬件故障时的生存底线,每次配置后的严格故障模拟测试,是检验可靠性的唯一标准——稳定性的价值,往往在链路中断的瞬间才真正显现,高可用网络的实现,本质上要求系统管理员具备前瞻性的架构思维和严谨的操作习惯,这比掌握单条命令更为重要。
说明:本文档基于 CentOS 7/8 及 NetworkManager 结合传统 network-scripts 的环境编写,CentOS 流或未来版本若转向
NetworkManager的keyfile或nmcli原生配置方式,语法会有差异,但 bonding 的核心概念(模式、主接口设定)保持不变,关键永远是理解primary=参数的作用和通过/proc/net/bonding/bondX验证状态。
