集群重启后Bond网络异常问题

举报
寒衣 发表于 2026/09/20 22:22:20 2026/09/20
【摘要】 集群服务器重启后 Bond 网络异常,根因是 network‑scripts 会加载目录内 ifcfg‑* 备份文件,多份配置冲突覆盖网卡参数,导致业务网络故障,需清理 bak 备份文件并增加巡检规避复发。

集群重启后Bond网络异常问题

1. 故障概述与现场时序

本次故障发生为计划性下电重启后自发产生,全程无人工修改网卡配置、无手动执行网络操作。

故障时序

  1. 集群所有节点计划性下电关机;

  2. 整机重新上电后,部分节点 service-bond 业务网络不通;

  3. 手动重启 network 服务,网络故障依旧无法恢复;

  4. 排查发现 Bond 运行模式异常变为 mode0(round robin 轮询),不符合业务标准配置;

  5. 核对主配置文件 ifcfg-service-bond4,配置参数完全正确、无篡改;

  6. 删除目录下残留的 ifcfg-service-bond4.bak.时间戳 等备份文件后,重启 network 服务,Bond 网络立即恢复正常。

2. 故障底层机制与根因

2.1 系统过滤规则固有缺陷

系统 network-functions 内置过滤规则仅过滤标准备份后缀,规则如下:

/\(~\|\.bak\|\.old\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d

该规则仅拦截 .bak/.old/.orig 等常规后缀,不拦截 .bak+时间戳 格式文件,导致 ifcfg-xxx.bak.20250907 这类备份文件不会被忽略。

2.2 网络服务扫描加载逻辑

network 服务启动时,会通过ls ifcfg-* 全局遍历目录下所有 ifcfg- 前缀文件,无后缀限制。带时间戳的备份文件因不匹配过滤规则,会被纳入开机启动列表。

可以看到除上述$__sed_discard_ignored_files拦截规则外,还有如下几个规则

-e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d'

筛掉几类特殊文件:

  • ifcfg-lo$:回环接口 lo,不需要处理。
  • 包含 : 的:通常是 VLAN 子接口,如 ifcfg-eth0:1
  • ifcfg-*-range:某些范围配置文件。

-e '{ s/^ifcfg-//g; s/[0-9]/ &/ }'

  • s/^ifcfg-//g:去掉文件名开头的 ifcfg-
    例如 ifcfg-eth0eth0ifcfg-bond0bond0
  • s/[0-9]/ &/:在每个数字前插入一个空格
    例如 eth0eth 0eth10eth 10bond0bond 0
    这样做是为了后面排序时,数字能按数值大小排,而不是按字典序排。

LC_ALL=C sort -k 1,1 -k 2n

  • -k 1,1:先按第一列(接口名前缀,如 ethbond)排序。
  • -k 2n:再按第二列(数字部分)做数值排序
    这样 eth2 就会排在 eth10 前面,而不是字典序的 eth10eth2 前。

LC_ALL=C sed 's/ //'

把前面插入的第一个空格删掉,还原成接口名。
例如 eth 0eth0eth 10eth10
最终 interfaces 变量里就是干净的接口名列表。

2.3 配置覆盖异常流程

系统全自动执行、无人工干预,异常流程如下:

  1. 目录同时存在正常主配置文件带时间戳的旧备份配置文件,两者 DEVICE 指向同一个 Bond 设备;

  2. 按字典序加载,备份文件后置加载,后加载的配置全覆盖前置主配置参数

  3. 旧备份文件 Bond 模式为 mode0,覆盖了业务正常 Bond 配置;

  4. 最终出现「主配置文件正常、系统运行配置异常」的迷惑性故障。

3. 根因总结

1. 核心根因:操作系统网络过滤机制存在局限,仅过滤标准后缀备份,无法拦截 .bak.时间戳 自定义备份文件;

2. 触发条件:网卡配置目录残留 ifcfg- 前缀、带时间戳且参数不一致的历史备份文件;

3. 故障特征:开机自动双配置加载覆盖,隐蔽性极强,常规查看主配置无法定位问题。

4. 修复方案

4.1 临时应急恢复

清理所有带时间戳的 ifcfg 备份文件并重启网络:

rm -f /etc/sysconfig/network-scripts/ifcfg-*.bak.*
systemctl restart network

4.2 长期生产规范

规避该机制缺陷,统一运维标准:

  1. 网卡配置目录禁止留存任意 ifcfg- 前缀备份文件(含 .bak.时间戳 格式);

  2. 所有配置备份统一移出默认目录,存放至独立备份目录;

  3. 配置变更、节点重启前,强制巡检清理冗余 ifcfg 备份文件。

5. 日常巡检命令

一键排查所有系统将自动加载的网卡配置,提前发现异常备份文件:

cd /etc/sysconfig/network-scripts
. ./network-functions
ls ifcfg-* | LC_ALL=C sed -e "$__sed_discard_ignored_files" -e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d'

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。