RHEL 7网卡配置中存在primary概念,主要用于bonding场景下指定主网卡,primary网卡是bond中的关键成员,优先处理流量,在主网卡故障时,备用网卡自动接管,保障网络高可用,配置时可通过NetworkManager或ifcfg文件实现,在bond配置中设置"PRIO"参数指定优先级,或直接定义"PRIMARY=yes",实践中需注意primary网卡需与slave网卡类型一致,且确保链路检测机制(如miimon)正常,以实现故障快速切换,合理配置primary可优化bond性能,提升网络稳定性。
在 RHEL 7(Red Hat Enterprise Linux 7)的网络配置中,用户常会遇到“primary”相关的疑问——是否可以直接为单个网卡设置“primary”属性?或是在多网卡场景下如何通过“primary”实现主备切换?本文将结合 RHEL 7 的网络管理机制,详细解析“primary”概念在网卡配置中的存在形式、应用场景及具体配置方法。
RHEL 7 网卡配置基础:NetworkManager 与 ifcfg 文件
RHEL 7 默认使用 NetworkManager 作为网络管理核心服务,负责动态配置和管理网络接口(如以太网卡、bond、team 等),传统上,网卡的静态配置通过 /etc/sysconfig/network-scripts/ 目录下的 ifcfg-* 文件实现(如 ifcfg-eth0),而 NetworkManager 同时支持图形化(nm-connection-editor)、命令行(nmcli)和 ifcfg 文件三种配置方式。
需明确的是:“primary”并非 RHEL 7 中单个网卡的固有属性,而是特定场景(如网卡绑定、路由策略)下的角色定义,其核心作用是标识“主接口”,在多网卡环境中实现流量优先转发或故障切换。

“Primary”概念在 RHEL 7 中的核心应用场景
网卡绑定(Bonding)中的“Primary”接口
网卡绑定(Bonding)是将多个物理网卡虚拟为一个逻辑接口(如 bond0)的技术,常用于提高网络带宽或实现高可用,在 Bonding 的 主备模式(mode=1,即 active-backup) 下,“primary”参数用于指定主用物理网卡,当主网卡故障时,备用网卡自动接管流量。
关键配置参数:
BONDING_OPTS:Bonding 的核心配置选项,需包含primary和primary_reselect等参数。PRIMARY:在ifcfg-bond0中通过BONDING_OPTS指定主网卡名称(如eth0)。primary_reselect:定义主网卡恢复后的行为(always:始终切换回主网卡;better:仅在当前活动网卡性能更差时切换;failure:仅在当前活动网卡故障时切换)。
配置示例:
假设使用 eth0(主)和 eth1(备)创建 bond0,配置文件如下:
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 TYPE=Bond BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 BONDING_OPTS="mode=1 primary=eth0 primary_reselect=failure miimon=100" ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-eth0(主网卡)
DEVICE=eth0 TYPE=Ethernet BOOTPROTO=none MASTER=bond0 SLAVE=yes ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-eth1(备网卡)
DEVICE=eth1 TYPE=Ethernet BOOTPROTO=none MASTER=bond0 SLAVE=yes ONBOOT=yes
验证:
使用 cat /proc/net/bonding/bond0 查看 Bonding 状态,确认 Primary Slave 为 eth0,Currently Active Slave 为 eth0,当 eth0 断开时,Currently Active Slave 会自动切换为 eth1。
网卡团队(Team)中的“Primary”接口
Team 是 RHEL 7 推荐的新一代网卡绑定技术,相比 Bonding 更灵活且支持动态扩展,在 Team 的 主备模式(runner=activebackup) 下,可通过 runner 的 primary 选项指定主网卡。
配置示例(使用 nmcli 命令行配置):
# 创建 Team 接口 myteam,主备模式,主网卡为 eth0 nmcli connection add type team con-name myteam ifname myteam \ ipv4.method manual ipv4.addresses 192.168.1.100/24 \ runner.activebackup primary="eth0" # 将 eth0、eth1 加入 Team nmcli connection add type team-slave con-name myteam-slave-eth0

