网卡绑定(bonding)与多网口

把物理机的多块网卡聚合成一个逻辑接口,以获得更高带宽或更强冗余。

物理机(独立服务器)通常带有两块甚至更多物理网口。默认情况下它们各自为政,一块出故障或跑满,业务就受影响。网卡绑定(bonding,亦称 link aggregation / teaming) 把多块网卡合并成一个逻辑接口 bond0,对上层业务表现为一张网卡,却能在底层做到带宽叠加或故障切换。

为什么要做绑定

绑定通常出于两个目的:

  • 冗余(高可用): 一根网线、一个交换机端口或一块网卡损坏时,流量自动切到剩余链路,业务不中断。
  • 带宽聚合: 多条链路并行转发,把两块 1G 网口叠成接近 2G 的吞吐,适合备份、存储同步等大流量场景。

常见绑定模式

  • active-backup(mode=1,冗余): 同一时刻只有一块网卡工作,另一块待命。不需要交换机特殊配置,最稳妥、最常用的高可用方案。
  • 802.3ad / LACP(mode=4,聚合): 真正的带宽聚合,但要求交换机支持并开启 LACP,且两端在同一聚合组。带宽利用最充分。
  • balance-alb(mode=6,聚合): 自适应负载均衡,收发都能分摊,无需交换机配合,是想聚合又不方便动交换机时的折中选择。

用 netplan 配置(Ubuntu/Debian)

新版 Ubuntu 用 netplan。编辑 /etc/netplan/01-bond.yaml,以 active-backup 为例:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
    eth1:
      dhcp4: no
  bonds:
    bond0:
      interfaces: [eth0, eth1]
      addresses: [192.168.1.10/24]
      routes:
        - to: default
          via: 192.168.1.1
      parameters:
        mode: active-backup
        primary: eth0
        mii-monitor-interval: 100

若要 LACP,把 mode 改为 802.3ad 并加 lacp-rate: fast(同时确认交换机侧已配聚合组)。应用配置:

sudo netplan apply

传统 /etc/network/interfaces 体系则需 apt install ifenslave,在 bond0 段写 bond-mode、bond-slaves eth0 eth1 等参数,再 ifup bond0。

验证绑定状态

配好后务必核对内核视角的真实状态:

cat /proc/net/bonding/bond0
ip -br link show bond0

重点看输出里的 Bonding Mode(是否为期望模式)、每个 Slave Interface 的 MII Status: up,以及 active-backup 下的 Currently Active Slave。可拔掉一根网线,再看该文件确认流量切换,验证冗余是否真的生效。

小结

绑定的选择很简单:只求不中断就用 active-backup,无需动交换机;要真带宽且交换机可控就上 802.3ad LACP;两者之间选 balance-alb。配置在 netplan 里几行 YAML 即可完成,而 /proc/net/bonding/bond0 是判断是否真正生效的唯一权威依据——配完必看,冗余方案还应实拔网线做一次故障演练。