如何配置Linux雙網卡負載均衡 流量分擔實現方案

linux雙網卡實現負載均衡需選擇合適綁定模式并配置路由策略。1. 推薦使用mode=6(balance-alb),可在多數環境實現流量分擔;2. 配置bond接口包括創建bond0文件、修改物理網卡配置并重啟網絡服務;3. 多網關下通過策略路由控制流量,分別設置路由表和規則使不同源ip走不同線路;4. 注意交換機配置匹配、arp響應問題、測試驗證及mtu一致性。

如何配置Linux雙網卡負載均衡 流量分擔實現方案

配置linux雙網卡實現負載均衡和流量分擔,是提升網絡帶寬、增強系統穩定性的常見做法。關鍵在于選擇合適的綁定模式,并合理設置路由策略。

如何配置Linux雙網卡負載均衡 流量分擔實現方案


1. 網卡綁定(bonding)模式選擇

Linux下通過bonding驅動可以將多個網卡邏輯上合并為一個接口。要實現負載均衡,首先要選對綁定模式:

如何配置Linux雙網卡負載均衡 流量分擔實現方案

  • mode=0 (balance-rr):輪詢方式發送數據包,適用于一般負載均衡,但交換機需要配合。
  • mode=1 (active-backup):主備模式,不實現負載均衡,僅提供冗余。
  • mode=2 (balance-xor):根據MAC地址做哈希決定出口,一定程度支持負載分擔。
  • mode=4 (802.3ad):鏈路聚合協議,需交換機支持LACP,適合高帶寬需求場景。
  • mode=5 (balance-tlb)mode=6 (balance-alb):動態調整流量方向,不需要交換機特殊配置。

推薦使用mode=6 (balance-alb),在大多數環境中都能較好地實現流量分擔。


2. 配置bonding接口的基本步驟

centos/RHEL為例,操作如下:

如何配置Linux雙網卡負載均衡 流量分擔實現方案

  1. 創建bond接口的配置文件:

    sudo vi /etc/sysconfig/network-scripts/ifcfg-bond0

    內容示例:

    DEVICE=bond0 TYPE=Bond NAME=bond0 BONDING_MASTER=yes BOOTPROTO=none ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 BONDING_OPTS="mode=6 miimon=100"
  2. 修改兩個物理網卡的配置文件:

    DEVICE=enp1s0 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes

    另一個網卡類似,如enp2s0。

  3. 重啟網絡服務或使用ifdown/ifup啟用bond接口。


3. 多網關下的策略路由配置(更靈活的流量分擔)

如果你有兩個不同的網關(比如連接兩個不同ISP),就需要用到策略路由來控制流量走向。

基本思路:

  • 給每個網卡分配獨立的路由表
  • 根據源IP地址選擇對應路由表
  • 設置默認路由指向各自的網關

例如,在/etc/iproute2/rt_tables中添加:

200 isp1 201 isp2

然后分別添加規則:

ip route add default via 192.168.1.1 dev enp1s0 table isp1 ip route add default via 192.168.2.1 dev enp2s0 table isp2  ip rule add from 192.168.1.100 lookup isp1 ip rule add from 192.168.2.100 lookup isp2

這樣就能根據不同來源IP走不同線路了。


4. 常見問題與注意事項

  • 交換機配置不匹配:特別是使用LACP(mode=4)時,交換機端必須開啟相應聚合組。
  • ARP響應混亂:某些模式下可能出現多個網卡同時回應ARP請求,建議配置arp_ip_target等參數。
  • 測試驗證方法:可以通過cat /proc/net/bonding/bond0查看狀態;使用iftop或nload觀察實際流量分布。
  • MTU一致性:確保綁定接口和物理接口的MTU一致,避免出現丟包。

基本上就這些。Linux雙網卡負載均衡看起來復雜,其實只要選對模式、配好路由,整體并不難,只是有些細節容易被忽略。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享