這是最近碰到這個問題,需要將兩張網卡綁定,共用一個IP,實現冗餘效果。實際上linux雙網卡的繫結模式有7中,而在這裡常用的是 active-backup
linux有七種網卡繫結模式:0. round robin,1.active-backup,2.load balancing (xor), 3.fault-tolerance (broadcast), 4.lacp, 5.transmit load balancing, 6.adaptive load balancing
linux下網卡綁定的7種模式:
mode=0 表示 load balancing (round-robin)為負載平衡方式,兩塊網卡都工作。
mode=1 表示 fault-tolerance (active-backup)提供冗餘功能,工作方式是主 從的工作方式,也就是說預設情況下只有一塊網卡工作,另一塊做備份。
mode=2 表示 XOR policy 為平衡策略。此模式提供Server Load Balancer和容錯能力
mode=3 表示 broadcast 為廣播策略。此模式提供了容錯能力
mode=4 表示 IEEE 802.3ad Dynamic link aggregation 為 IEEE 802.3ad 為 動態連結彙總。該策略可以通過 xmit_hash_policy 選項從預設的 XOR 策略改變到其他策略。
mode=5 表示 Adaptive transmit load balancing 為適配器傳輸負載平衡。該 模式的必要條件:ethtool 支援擷取每個 slave 的速率
mode=6 表示 Adaptive load balancing 為適配器適應性負載平衡。該模式包含 了 balance-tlb 模式,同時加上針對 IPV4 流量的接收負載平衡(receive load balance, rlb),而且不需要任何 switch(交換器)的支援。
操作步驟
1,安裝基礎bond組件
sudo apt-get install ifenslave
安裝時若提示找不到包,需要執行 apt-get update
2,編輯modules 檔案:
vi /etc/modules
在該檔案中加入以下內容:
bonding mode=1 miimon=100
其中mode為上面介紹的模式,這裡為1,miimon是用來進行鏈路監測的。比如:miimon=100,那麼系統每100ms監測一次鏈路串連狀態,如果有一條線路不通就轉入另一條線路;
3,網卡配置資訊
vi /etc/network/interfaces
加入以下內容:
auto bond0
iface bond0 inet static
address 192.168.2.3
netmask 255.255.255.0
gateway 192.168.2.1
post-up ifenslave bond0 eth0 eth1
pre-down ifenslave -d bond0 eth0 eth1
4,重啟伺服器
shutdown -r now
重啟後測試有效,可拔掉某一網線測試。
如果是多個bond?
如果是多個bond,如:
eth0 和 eth1 做一個bond0
eth1 和 eth2 做一個bond1
那麼需要將 /etc/modules 中的內容改為:
bonding mode=1 miimon=100 max_bonds=2
也就是在原有基礎上加一個 max_bonds=2 。
網卡配置部分與bond0 的相同,只不過將配置中的eth0和eth1改為 eth2和eth3.