Bonding 配置四步法 (RHEL/CentOS 傳統網絡腳本)
1. 創建 Bond 接口配置
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.180
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
BONDING_OPTS="mode=1 miimon=100 primary=eth0"
# mode: 模式號, miimon: MII 鏈路監測間隔(ms), primary: 主網卡 (mode=1 專用)
2. 配置從屬物理網卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
# HWADDR=00:0C:29:XX:XX:XX # 可選,綁定具體 MAC
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
3. 配置模塊參數 (確保 bonding 模塊加載時應用 opts)
vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding mode=1 miimon=100 primary=eth0
# 或寫入 /etc/modprobe.conf (舊版)
4. 重啟網絡驗證
systemctl restart network
# 查看狀態
cat /proc/net/bonding/bond0
# 關鍵輸出:
# Bonding Mode: fault-tolerance (active-backup)
# Primary Slave: eth0
# Currently Active Slave: eth0
# MII Status: up
七種 Bonding 模式詳細對比
| Mode | 名稱 | 策略 | 特點 | 需交換機支持 | 典型場景 |
| 0 | balance-rr | 輪詢策略 | 順序分發包到各網卡,提供負載均衡和容錯。缺點:可能導致包亂序,TCP 性能下降。 | 無 | 單機多網卡聚合帶寬,對端不支持 LACP,容忍亂序 |
| 1 | active-backup | 主備策略 | 僅一張網卡工作,故障切換。MAC 地址唯一對外,交換機無感知。**資源利用率 1/N**,但高可用性最強。 | 無 | 高可用雙機熱備、無交換機聚合支持環境 |
| 2 | balance-xor | XOR 雜湊策略 | 基於 (源 MAC XOR 目標 MAC) % slave 數 選擇網卡。同一會話固定走一張卡,無亂序。提供負載均衡和容錯。 | 無 | 需負載分發且無交換機聚合支持 |
| 3 | broadcast | 廣播策略 | 所有包從所有網卡發送。極高容錯,**資源浪費嚴重**,帶寬不增長。 | 無 | 極高可靠性需求 (金融/軍工)、無線多路徑冗餘 |
| 4 | 802.3ad (LACP) | 動態鏈路聚合 | IEEE 802.3ad 標準,與交換機協商形成聚合組。**最佳負載均衡**,支持連接故障快速檢測。**需交換機配置 LACP**。 | 是 (必須) | 企業級核心交換機聚合、高性能集群互聯 |
| 5 | balance-tlb | 適應性發送負載均衡 | 根據各網卡當前負載 (速率) 動態分發發送流量。接收流量走當前活動網卡。故障自動切換 MAC。**無需交換機支持**。需 ethtool 支持獲取速率。 | 無 | 發送流量大、接收流量小、無交換機聚合支持 |
| 6 | balance-alb | 適應性負載均衡 | 包含 mode 5 + **接收負載均衡 (RLB)**。通過 ARP 協商讓不同對端使用不同 MAC 地址通信,實現接收分發。**無需交換機支持**,最完美的軟件層聚合。 | 無 | 雙向流量均衡需求、無交換機聚合支持、IPv4 環境 |
模式選擇決策樹
有交換機且支持 LACP? → 是 → Mode 4 (802.3ad) 最佳
↓ 否
需要雙向負載均衡? → 是 → Mode 6 (balance-alb)
↓ 否
僅需高可用 (主備)? → 是 → Mode 1 (active-backup)
↓ 否
需發送負載分發? → 是 → Mode 5 (balance-tlb) / Mode 2 (balance-xor)
↓ 否
極致容錯 (廣播)? → Mode 3
現代系統 (NetworkManager / netplan) 配置提示
- NetworkManager:
nmcli con add type bond ifname bond0 mode active-backup → nmcli con add type ethernet ifname eth0 master bond0 → nmcli con up bond0。
- Netplan (Ubuntu 18.04+):
/etc/netplan/01-bond.yaml 定義 bonds、interfaces、parameters (mode, mii-monitor-interval, primary)。
常見問題排查
| 現象 | 原因 | 解決 |
| bond0 無法獲取 IP | 從屬網卡未正確綁定 / 模塊未加載 | 檢查 lsmod | grep bonding、cat /proc/net/bonding/bond0 |
| Mode 4 聚合不生效 | 交換機未配置 LACP / 鏈路速率雙工不一致 | 交換機配置 channel-group X mode active,確保 ethtool ethX 速率匹配 |
| Mode 1 切換慢 | miimon 間隔過大 / primary 設置錯誤 | 設置 miimon=100、primary=eth0、fail_over_mac=1 (活動備份 MAC 策略) |
| 流量不均衡 | XOR 雜湊導致大流量集中單卡 / Mode 6 ARP 更新延遲 | 調整 xmit_hash_policy (layer2/3/4)、檢查 ARP 表刷新 |