在linux下如何做雙網卡綁定實現冗餘?
一、Linux Channel Bonding
目前在各個發行版本的 Linux 中,使用最普遍的內核版本應該就是 2.4.x的版本了,而 Linux Channel Bonding,在 Linux 2.4 的內核中,就提供了 bonding 的驅動,可以支援把多個網路介面卡集合在一起,當作一個網路介面卡來使用。
在 Linux 下,網卡的高可用性是通過 MII 或者 ETHTOOL 的狀態監測來實現的,所以,需要檢查系統中的網路介面卡是否支援 MII 或者 ETHTOOL 的連狀態監測。可以用命令 "ethtool eth0" 來檢查,如果顯示的 "Link detected:" 資訊與實現的連接狀態一致,就沒有問題。如果系統中的網路介面卡不支援 MII 或者 ETHTOOL 狀態監測,當連接失效時,系統就不能檢測到,同時,在 bonding 驅動載入時,會記錄一條不支援 MII 和 ETHTOOL 的警告資訊。
下面簡單介紹一下實現的基本方法:
首先,我們需要打開內核對 bonding 支援。
設置內核 "make menuconfig/xconfig/config",在"Network device support"區段中選擇"Bonding driver support",建議設置該驅動程式為模組,這樣才能支援給驅動傳遞參數和設置多個bonding設備。
生成並安裝新的內核和模組。
Bonding 的設置
我們需要在 /etc/modules.conf 中加入兩行,這樣才可以在設置了 bond 設置後,系統啟動的時候自動載入 bonding 的驅動程式
alias bond0 bonding
options bond0 miimon=100 mode=1
當mode=1時為主備模式,mode=0時為負載均衡模式。
另外,在 /etc/sysconfig/network-scripts 目錄中,創建一個名為 ifcfg-bond0 的檔。DEVICE=bond0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
在 bond 中的所有網路介面卡的腳本中,都要有 SLAVE 和 MASTER 的定義。例如,如果要讓eth0和eth1成為bond0的成員,它們對應的設定檔(ifcfg-eth0和ifcfg-eth1)就要仿照下面的內容進行更改: