linux服务-Bonding网卡绑定工具

Linux 网卡绑定工具 Bonding

本章重点: 网卡绑定的安装使用,绑定检查,一部分常见故障

参考:Linux双网卡绑定bond详解,Linux双网卡绑定bond详解,豆包ai

Bonding 是 Linux 系统中常用的网卡绑定技术,通过将多块物理网卡虚拟为单一设备并共享同一 IP 地址,可实现带宽扩容、负载均衡或高可用,核心原理是统一多网卡的 MAC 地址,避免直接设置同一 IP 导致的网络冲突。

一、Bonding 核心优势

  • 负载均衡:多网卡协同工作,分摊网络流量,缓解单 IP 高负载场景下的服务器网络压力,常见于文件服务器等流量密集型应用。
  • 冗余高可用:绑定后的网卡形成冗余链路,当某块物理网卡故障时,备用网卡自动接管服务,保障网络连接不中断。

二、常见绑定模式详解

模式编号 模式名称 核心策略 优点 缺点 适用场景
Mode 0 balance-rr(轮转) 按顺序在所有从属网卡上轮流发送数据包,链路故障自动切换 流量翻倍,带宽利用率高 需交换机配置端口聚合,否则可能丢包 高带宽需求(如文件服务器)
Mode 1 active-backup(主备) 仅一块网卡活动,其余备用,故障时自动激活备用网卡 冗余性强,切换稳定,无需交换机配置 链路利用率低(仅单卡工作) 高可用需求(如数据库服务器)
Mode 3 broadcast(广播) 在所有从属网卡同步传输所有报文 容错能力突出,数据传输可靠 带宽占用高,无负载均衡效果 数据冗余传输(如关键指令下发)
Mode 2 balance-xor(异或) 基于源 MAC + 目标 MAC 哈希算法分配流量 无需交换机聚合,支持负载均衡 流量分配依赖哈希结果,可能不均 无交换机聚合条件的负载场景
Mode 4 802.3ad(LACP) 动态聚合,遵循 IEEE 802.3ad 标准,协商聚合链路 动态调整聚合链路,负载均衡更优 需交换机支持 LACP 协议,配置复杂 企业级高可用 + 高带宽场景
Mode 5 balance-tlb(传输负载均衡) 基于网卡负载动态分配 outgoing 流量 无需交换机配置,自动适配负载 仅优化出站流量,入站仍单卡接收 出站流量密集的应用(如 Web 服务)
Mode 6 balance-alb(自适应负载均衡) 同时优化入站 + 出站流量,支持 ARP 协商分发入站流量 无需交换机,负载均衡效果全面 配置稍复杂,依赖 ARP 协议 无交换机聚合的全能型场景

三、Bonding 内核模块加载方法(CentOS 7)

  1. 临时加载(重启后失效)

    bash 复制代码
    # 加载bonding模块
    [root@localhost ~]# modprobe bonding
    
    # 验证加载结果(显示bonding相关记录即为成功)
    [root@localhost ~]# lsmod | grep bonding
    bonding               152656  0 
  2. 永久加载(开机自动生效)

    1. 通过 modules-load.d 配置

      bash 复制代码
      # 创建bonding模块加载配置文件
      echo "bonding" >> /etc/modules-load.d/bonding.conf
      
      # 验证配置文件
      cat /etc/modules-load.d/bonding.conf
      
      # 立即加载模块(无需重启)
      systemctl restart systemd-modules-load
    2. 通过 modprobe.d 配置(兼容旧版系统)

      bash 复制代码
      # 创建modprobe配置文件
      echo "alias bond0 bonding" >> /etc/modprobe.d/bonding.conf
      
      # 加载模块
      modprobe bonding
    3. 加载多 Bond 设备(如需创建多个 bond 接口)

      bash 复制代码
      # 临时加载并支持2个bond设备(bond0、bond1)
      modprobe bonding max_bonds=2
      
      # 永久配置多Bond设备(修改modules-load.d配置)
      echo "bonding max_bonds=2" >> /etc/modules-load.d/bonding.conf

四、CentOS7实现Bonding配置

  1. 准备工作

    • 执行 ip a 命令查询系统中待绑定的物理网卡名称(如示例中的 ens33、ens36)。

    • CentOS 7 默认启用 NetworkManager,建议临时禁用(避免配置冲突):

      bash 复制代码
      [root@localhost ~]# systemctl stop NetworkManager && systemctl disable NetworkManager
      Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
      Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
      Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
      Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
    • 确保系统加载 bonding

      bash 复制代码
      [root@localhost ~]# modprobe bonding
      [root@localhost ~]# lsmod | grep bonding
      bonding               152656  0 
  2. 创建配置文件

    1. 环境查看

      bash 复制代码
      # 准备两块网卡
      2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc 
          inet 192.168.189.129/24 brd 192.168.189.255 scope global noprefixroute dynamic ens33
      3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
          inet 192.168.189.131/24 brd 192.168.189.255 scope global noprefixroute dynamic ens36
    2. 进入配置目录: cd /etc/sysconfig/network-scripts/

    3. 创建bond0配置文件(以Mode 0为例,可替换为其他模式)

      bash 复制代码
      [root@localhost network-scripts]# cat > ifcfg-bond0 << EOF
      DEVICE=bond0
      TYPE=Bond
      BONDING_OPTS="mode=0 miimon=100"  # 模式为轮转,100ms链路检测间隔
      IPADDR=192.168.189.132
      PREFIX=24
      GATEWAY=192.168.189.1
      DNS1=114.114.114.114  # 可选配置DNS
      ONBOOT=yes
      BOOTPROTO=none
      EOF
    4. 创建从属网卡ens33配置文件

      bash 复制代码
      # 先备份一下配置
      [root@localhost network-scripts]# mv ifcfg-ens33{,.bak}
      [root@localhost network-scripts]# mv ifcfg-ens36{,.bak}
      
      [root@localhost network-scripts]# cat > ifcfg-ens33 << EOF
      TYPE=Ethernet
      BOOTPROTO=none
      NAME=ens33
      DEVICE=ens33
      ONBOOT=yes
      MASTER=bond0  # 关联至bond0设备
      SLAVE=yes     # 标记为从属网卡
      EOF
      
      # 在复制一张给 ens36
      [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
      [root@localhost network-scripts]# sed -i "s@ens33@ens36@gi" ifcfg-ens36
  3. 启动并验证配置

    • 重启网络服务

      bash 复制代码
      # (CentOS 7推荐使用network服务), 重启完之后用 bonding地址登陆 
      systemctl restart network
    • 查看网卡状态

      bash 复制代码
      [root@localhost ~]# ip a
      2: ens33: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
          link/ether 00:0c:29:fa:dc:ff brd ff:ff:ff:ff:ff:ff
      3: ens36: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
          link/ether 00:0c:29:fa:dc:ff brd ff:ff:ff:ff:ff:ff
      4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
          link/ether 00:0c:29:fa:dc:ff brd ff:ff:ff:ff:ff:ff
          inet 192.168.189.132/24 brd 192.168.189.255 scope global bond0
      
      # BROADCAST,MULTICAST,MASTER,UP,LOWER_UP 注意看这里的状态
    • 查看Bonding详细信息(模式、链路状态、网卡速度等)

      bash 复制代码
      [root@localhost ~]# cat /proc/net/bonding/bond0
      Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
      
      Bonding Mode: load balancing (round-robin)
      MII Status: up
      
      Slave Interface: ens33
      MII Status: up
      Speed: 1000 Mbps
      
      Slave Interface: ens36
      MII Status: up
      Speed: 1000 Mbps
    • 单独验证绑定模式

      bash 复制代码
      [root@localhost ~]# cat /sys/class/net/bond0/bonding/mode
      balance-rr 0
    • 验证成功后,将看到 bond0 设备处于 UP 状态,ens160、ens192 为 SLAVE 状态,三者 MAC 地址一致,共用 192.168.9.31IP。

      bash 复制代码
      ens33: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP>
      ens36: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP>
      bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> 
      MAC地址: link/ether 00:0c:29:fa:dc:ff brd ff:ff:ff:ff:ff:ff
  4. 故障切换测试

    bash 复制代码
    # 关闭其中一块从属网卡,验证备用网卡是否正常接管:
    [root@localhost ~]# ip link set ens36 down
    [root@localhost ~]# cat /proc/net/bonding/bond0 
    Bonding Mode: load balancing (round-robin)
    MII Status: up
    
    Slave Interface: ens33
    MII Status: up
    
    Slave Interface: ens36
    MII Status: down     <--- 注意状态
    Speed: 1000 Mbps
    
    [root@localhost ~]# ip link set ens36 up
    [root@localhost ~]# cat /proc/net/bonding/bond0 
    Slave Interface: ens36
    MII Status: up		  <--- 注意状态

五、交换机聚合配置

  1. 静态聚合(适配 Mode 0) --> 以华为 Quidway 系列交换机为例:

    bash 复制代码
    # 清空接口原有配置(如GigabitEthernet0/0/5)
    interface GigabitEthernet0/0/5
    undo port link-type access
    undo port default vlan
    undo ntdp enable
    undo ndp enable
    undo bpdu enable
    
    # 创建Eth-Trunk 2聚合接口
    interface Eth-Trunk 2
    port link-type access
    port default vlan [VLAN ID]  # 替换为实际业务VLAN
    
    # 将接口加入聚合组
    interface GigabitEthernet0/0/5
    eth-trunk 2
    interface GigabitEthernet0/0/6
    eth-trunk 2
    
    # 查看聚合状态
    dis interface Eth-Trunk
  2. LACP 动态聚合(适配 Mode 4)

    bash 复制代码
    # 交换机创建Eth-Trunk并启用LACP
    interface Eth-Trunk 2
    port link-type access
    port default vlan [VLAN ID]
    mode lacp-static  # 启用静态LACP模式
    
    # 接口加入聚合组
    interface GigabitEthernet0/0/5
    eth-trunk 2
    interface GigabitEthernet0/0/6
    eth-trunk 2
    
    # 查看LACP协商状态
    dis lacp eth-trunk 2

六、常见错误排查手册

  • 网络服务重启失败(Job for network.service failed)
    • 排查方向:配置文件语法错误、网卡名称与实际不符、端口被占用。
    • 解决步骤:
      1. 检查配置文件格式,确保无多余空格、引号闭合:cat /etc/sysconfig/network-scripts/ifcfg-bond0。
      2. 再次执行 ip a 确认网卡名称(如 ens33 而非 ens160),同步修改配置文件中的 DEVICE 和 NAME 字段。
      3. 查看网络服务日志定位错误:journalctl -xe | grep network。
  • 从属网卡未显示为 SLAVE 状态
    • 排查方向:从属网卡配置缺失 MASTER/SLAVE 字段、NetworkManager 未完全禁用。
    • 解决步骤:
      1. 检查从属网卡配置文件,确保包含 MASTER=bond0 和 SLAVE=yes 字段。
      2. 彻底禁用 NetworkManager:systemctl stop NetworkManager && systemctl disable NetworkManager && systemctl mask NetworkManager。
      3. 重启网络服务:systemctl restart network,再次通过 ip a 验证。
  • Bond0 无 IP 地址或无法 ping 通网关
    • 排查方向:bond 配置文件 IP/Gateway 错误、防火墙拦截、路由表异常。
    • 解决步骤:
      1. 核对 ifcfg-bond0 中的 IPADDR、PREFIX、GATEWAY 是否与网段匹配,避免子网掩码错误。
      2. 临时关闭 firewalld 测试:systemctl stop firewalld,若能通信则配置防火墙放行 bond0 接口。
      3. 查看路由表:ip route,确认默认路由指向配置的网关,缺失则手动添加:ip route add default via 192.168.9.1 dev bond0。
  • Mode 0 模式下流量未负载均衡(丢包 / 卡顿)
    • 排查方向:交换机未配置端口聚合、聚合模式不匹配。
    • 解决步骤:
      1. 确认交换机已创建 Eth-Trunk 聚合组,且所有从属网卡对应的交换机端口已加入该组。
      2. 检查交换机聚合模式是否为静态聚合(Mode 0 需静态聚合配合),避免动态聚合协议不兼容。
      3. 通过 ethtool -S bond0 查看网卡流量统计,确认多网卡是否均有数据传输。
  • 网卡故障切换失败
    • 排查方向:miimon 参数配置不当、物理网卡硬件问题。
    • 解决步骤:
      1. 调整 bond 配置中的 miimon 值(建议 50-200ms),如 BONDING_OPTS="mode=0 miimon=200",重启网络服务。
      2. 检查故障网卡硬件状态:ethtool ens160,查看 Link detected 是否为 yes,若为 no 则检查网线、交换机端口。
      3. 查看 Bonding 故障计数:cat /proc/net/bonding/bond0,若 Link Failure Count 持续增加,更换网线或网卡测试。
  • 重启系统后 Bonding 配置失效
    • 排查方向:bonding 模块未开机自动加载、网络服务未设置开机启动。
    • 解决步骤:
      1. 配置 bonding 模块开机加载:echo "bonding" >> /etc/modules-load.d/bonding.conf。
      2. 设置 network 服务开机启动:systemctl enable network。
      3. 验证:reboot 后通过 lsmod | grep bonding 和 ip a 确认配置生效。

七、专属注意事项

  1. 配置文件差异:CentOS 7 的 bond 配置文件需添加TYPE=Bond字段,与 CentOS 6 的配置格式区分。
  2. 网络服务管理:优先使用network服务而非NetworkManager,避免配置不生效。
  3. 内核模块:若系统未自动加载 bonding 模块,可通过/etc/modules-load.d/bonding.conf配置开机自动加载。
  4. 防火墙放行:若启用 firewalld,需确保 bond0 接口的相关端口或服务放行,避免网络不通。
  5. 模式选择:根据业务需求选择合适模式,无需交换机配置可优先选 Mode 1/5/6,需高带宽 + 高可用可选 Mode 4(LACP)。

八、Bonding 配置验证工具脚本

  • 示例

    bash 复制代码
    #!/bin/bash
    # Bonding配置验证工具(CentOS 7)- 修复版
    # 修复点:1. 精准识别bond接口 2. 增加参数空值校验 3. 优化从属网卡检测逻辑
    
    # 定义颜色输出
    RED="\033[31m"
    GREEN="\033[32m"
    YELLOW="\033[33m"
    BLUE="\033[34m"
    RESET="\033[0m"
    
    # 检查脚本运行权限(需root)
    if [ "$(id -u)" -ne 0 ]; then
        echo -e "${RED}[ERROR] 请使用root权限运行脚本(sudo ./bond_verify.sh)${RESET}"
        exit 1
    fi
    
    # 1. 基础环境验证(模块+网络服务)
    echo -e "\n${BLUE}===== 1. 基础环境验证 =====" ${RESET}
    echo -n "验证bonding内核模块加载:"
    if lsmod | grep -q "bonding"; then
        echo -e "${GREEN}[OK]${RESET}"
        MODULE_STATUS=0
    else
        echo -e "${RED}[FAIL]${RESET}"
        echo -e "${YELLOW}[WARNING] bonding模块未加载,尝试临时加载...${RESET}"
        modprobe bonding >/dev/null 2>&1
        if lsmod | grep -q "bonding"; then
            echo -e "${GREEN}[SUCCESS] 临时加载bonding模块成功${RESET}"
            MODULE_STATUS=0
        else
            echo -e "${RED}[ERROR] 加载bonding模块失败,请检查内核配置${RESET}"
            MODULE_STATUS=1
        fi
    fi
    
    echo -n "验证network服务状态:"
    if systemctl is-active --quiet network; then
        echo -e "${GREEN}[OK]${RESET}"
    else
        echo -e "${RED}[FAIL]${RESET}"
        echo -e "${YELLOW}[WARNING] network服务未启动,尝试启动...${RESET}"
        systemctl start network >/dev/null 2>&1
        if systemctl is-active --quiet network; then
            echo -e "${GREEN}[SUCCESS] network服务启动成功${RESET}"
        else
            echo -e "${RED}[ERROR] network服务启动失败,日志:journalctl -xe | grep network${RESET}"
            exit 1
        fi
    fi
    
    # 2. Bond接口存在性验证(仅识别bond开头的接口,修复核心问题)
    echo -e "\n${BLUE}===== 2. Bond接口验证 =====" ${RESET}
    # 仅过滤名称为bond0、bond1等的接口,排除物理网卡
    BOND_INTERFACES=$(ip -o link show | awk '{print $2}' | sed 's/://' | grep -E '^bond[0-9]+$')
    if [ -z "$BOND_INTERFACES" ]; then
        echo -e "${RED}[ERROR] 未检测到真实的bond接口(需命名为bond0、bond1等)${RESET}"
        echo -e "${YELLOW}[提示] 请先配置bond接口,再运行脚本验证${RESET}"
        exit 1
    else
        echo -e "检测到有效bond接口:${GREEN}$BOND_INTERFACES${RESET}"
    fi
    
    # 3. 详细验证每个bond接口
    for BOND in $BOND_INTERFACES; do
        echo -e "\n${BLUE}----- 验证bond接口:$BOND -----${RESET}"
        
        # 3.1 接口状态验证
        echo -n "接口状态(UP/DOWN):"
        if ip link show "$BOND" | grep -q "UP"; then
            echo -e "${GREEN}[UP]${RESET}"
        else
            echo -e "${RED}[DOWN]${RESET}"
            echo -e "${YELLOW}[WARNING] 尝试激活接口:ip link set $BOND up${RESET}"
            ip link set "$BOND" up >/dev/null 2>&1
        fi
        
        # 3.2 IP配置验证
        echo -n "IP地址配置:"
        IP_ADDR=$(ip -4 addr show "$BOND" | grep -oP '(?<=inet\s)\d+(\.\d+){3}/\d+' | head -1)
        if [ -n "$IP_ADDR" ]; then
            echo -e "${GREEN}$IP_ADDR${RESET}"
        else
            echo -e "${RED}[未配置]${RESET}"
            echo -e "${YELLOW}[WARNING] bond接口未配置IP,请检查ifcfg-$BOND文件${RESET}"
        fi
        
        # 3.3 从属网卡验证(优化读取逻辑,避免报错)
        echo -n "从属网卡数量:"
        if [ -f "/proc/net/bonding/$BOND" ]; then
            # 精准提取从属网卡名称,排除空行
            SLAVE_LIST=$(grep -E '^Slave Interface:' /proc/net/bonding/$BOND | awk '{print $3}')
            SLAVE_NICS=$(echo "$SLAVE_LIST" | wc -w)
            if [ "$SLAVE_NICS" -ge 2 ]; then
                echo -e "${GREEN}$SLAVE_NICS 块${RESET}"
                echo -e "从属网卡列表:$SLAVE_LIST"
            else
                echo -e "${RED}$SLAVE_NICS 块(不足2块,无法实现冗余/负载均衡)${RESET}"
                echo -e "当前从属网卡:$SLAVE_LIST"
            fi
        else
            echo -e "${RED}[读取失败]${RESET}"
            echo -e "${YELLOW}[WARNING] 未找到/proc/net/bonding/$BOND,可能配置未生效${RESET}"
        fi
        
        # 3.4 绑定模式验证
        echo -n "绑定模式:"
        if [ -f "/proc/net/bonding/$BOND" ]; then
            BOND_MODE=$(grep "Bonding Mode:" /proc/net/bonding/$BOND | awk -F': ' '{print $2}')
            if [ -n "$BOND_MODE" ]; then
                echo -e "${GREEN}$BOND_MODE${RESET}"
            else
                echo -e "${RED}[未知]${RESET}"
            fi
        else
            echo -e "${RED}[读取失败]${RESET}"
        fi
        
        # 3.5 链路检测间隔验证(增加空值校验,修复整数表达式错误)
        echo -n "链路检测间隔(miimon):"
        MIIMON_PATH="/sys/class/net/$BOND/bonding/miimon"
        if [ -f "$MIIMON_PATH" ]; then
            MIIMON=$(cat "$MIIMON_PATH")
            # 校验是否为整数
            if [[ "$MIIMON" =~ ^[0-9]+$ ]]; then
                if [ "$MIIMON" -ge 50 ] && [ "$MIIMON" -le 200 ]; then
                    echo -e "${GREEN}$MIIMON ms(正常范围)${RESET}"
                else
                    echo -e "${YELLOW}$MIIMON ms(建议调整为50-200ms)${RESET}"
                fi
            else
                echo -e "${RED}$MIIMON(非整数,配置异常)${RESET}"
            fi
        else
            echo -e "${RED}[未配置]${RESET}"
            echo -e "${YELLOW}[WARNING] 请在ifcfg-$BOND中添加BONDING_OPTS=\"miimon=100\"${RESET}"
        fi
        
        # 3.6 连通性测试(ping网关)
        if [ -n "$IP_ADDR" ]; then
            echo -n "网关连通性测试:"
            GATEWAY=$(ip route show default | awk '{print $3}' | head -1)
            if [ -n "$GATEWAY" ]; then
                ping -c 2 -W 1 "$GATEWAY" >/dev/null 2>&1
                if [ $? -eq 0 ]; then
                    echo -e "${GREEN}[可达](网关:$GATEWAY)${RESET}"
                else
                    echo -e "${RED}[不可达](网关:$GATEWAY)${RESET}"
                fi
            else
                echo -e "${YELLOW}[无默认网关]${RESET}"
            fi
        fi
    done
    
    # 4. 故障切换功能测试(可选)
    echo -e "\n${BLUE}===== 3. 故障切换测试(可选) =====" ${RESET}
    read -p "是否执行故障切换测试?(会临时关闭一块从属网卡,y/n):" TEST_CHOICE
    if [ "$TEST_CHOICE" = "y" ] || [ "$TEST_CHOICE" = "Y" ]; then
        BOND_TEST=$(echo "$BOND_INTERFACES" | head -1)
        if [ -f "/proc/net/bonding/$BOND_TEST" ]; then
            SLAVE_TEST=$(grep -E '^Slave Interface:' /proc/net/bonding/$BOND_TEST | awk '{print $3}' | head -1)
            if [ -n "$SLAVE_TEST" ]; then
                echo -e "\n${YELLOW}[TEST] 临时关闭从属网卡:$SLAVE_TEST${RESET}"
                ip link set "$SLAVE_TEST" down
                sleep 2
                
                echo -n "故障切换后bond状态:"
                if ip link show "$BOND_TEST" | grep -q "UP"; then
                    echo -e "${GREEN}[正常]${RESET}"
                    echo -e "详细状态(从属网卡):"
                    grep -A 3 "Slave Interface:" /proc/net/bonding/$BOND_TEST | grep -E "Slave Interface|State"
                else
                    echo -e "${RED}[异常]${RESET}"
                fi
                
                echo -e "\n${YELLOW}[TEST] 恢复从属网卡:$SLAVE_TEST${RESET}"
                ip link set "$SLAVE_TEST" up
            else
                echo -e "${RED}[ERROR] $BOND_TEST 无可用从属网卡用于测试${RESET}"
            fi
        else
            echo -e "${RED}[ERROR] 无法读取$BOND_TEST 配置,测试终止${RESET}"
        fi
    fi
    
    # 5. 总结报告
    echo -e "\n${BLUE}===== 验证总结 =====" ${RESET}
    if [ "$MODULE_STATUS" -eq 0 ] && [ -n "$BOND_INTERFACES" ]; then
        echo -e "${GREEN}[整体状态:正常]${RESET}"
        echo -e "建议:定期通过 ./bond_verify.sh 检查bond状态,确保高可用"
    else
        echo -e "${RED}[整体状态:异常]${RESET}"
        echo -e "请根据上述错误提示修复配置后重新验证"
    fi
    
    exit 0
  • 测试

    bash 复制代码
    [root@localhost ~]# bash check.sh 
    
    ===== 1. 基础环境验证 ===== 
    验证bonding内核模块加载:[OK]
    验证network服务状态:[OK]
    
    ===== 2. Bond接口验证 ===== 
    检测到有效bond接口:bond0
    
    ----- 验证bond接口:bond0 -----
    接口状态(UP/DOWN):[UP]
    IP地址配置:192.168.189.132/24
    从属网卡数量:2 块
    从属网卡列表:ens33
    ens36
    绑定模式:load balancing (round-robin)
    链路检测间隔(miimon):100 ms(正常范围)
    网关连通性测试:[不可达](网关:192.168.189.1)
    
    ===== 3. 故障切换测试(可选) ===== 
    是否执行故障切换测试?(会临时关闭一块从属网卡,y/n):y
    
    [TEST] 临时关闭从属网卡:ens33
    故障切换后bond状态:[正常]
    详细状态(从属网卡):
    Slave Interface: ens33
    Slave Interface: ens36
    
    [TEST] 恢复从属网卡:ens33
    
    ===== 验证总结 ===== 
    [整体状态:正常]
    建议:定期通过 ./bond_verify.sh 检查bond状态,确保高可用
相关推荐
讯捷蓝达3 分钟前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
且从容.1 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落3 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨3 小时前
WSL2的安装与使用
linux·wsl
微小的鱼3 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng3 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮4 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹4 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器
孙克旭_4 小时前
k8s基础组件与创建资源
运维·docker·容器·kubernetes
孙克旭_5 小时前
云原生基础之Containerd容器运行时
运维·云原生