Linux多網卡負載平衡 : bond

來源:互聯網
上載者:User

標籤:style   http   color   get   使用   strong   

在這介紹的Linux雙網卡綁定實現就是使用兩塊網卡虛擬成為一塊網卡,這個彙總起來的裝置看起來是一個單獨的乙太網路介面裝置,通俗點講就是兩塊網卡具有相同的IP地址而並行連結彙總成一個邏輯鏈路工作。其實這項技術在Sun和Cisco中早已存在,被稱為Trunking和Etherchannel技術,在Linux的2.4.x的核心中也採用這這種技術,被稱為bonding。bonding技術的最早應用是在叢集——beowulf上,為了提高叢集節點間的資料轉送而設計的。下面我們討論一下bonding 的原理,什麼是bonding需要從網卡的混雜(promisc)模式說起。我們知道,在正常情況下,網卡只接收目的硬體地址(MAC Address)是自身Mac的乙太網路幀,對於別的資料幀都濾掉,以減輕驅動程式的負擔。但是網卡也支援另外一種被稱為混雜promisc的模式,可以接收網路上所有的幀,比如說tcpdump,就是運行在這個模式下。bonding也運行在這個模式下,而且修改了驅動程式中的mac地址,將兩塊網卡的Mac地址改成相同,可以接收特定mac的資料幀。然後把相應的資料幀傳送給bond驅動程式處理。

其實在 linux 將雙網卡綁定成一塊網卡,配置起來非常簡單,只需要簡單幾個步驟即可實現,下面我們就一起來體驗一下吧。首先,還是將本次實驗的環境做個簡單的介紹:

作業系統: RedHat Enterprise linux

綁定的前提條件:晶片集型號相同,而且網卡應該具備自己獨立的BIOS晶片。

 

 

操作過程:

1、編輯虛擬網路介面設定檔,指定網卡IP (沒有這個檔案我們可以從以前的設定檔複製一個過來,減少輸入的文字.)

[root @heng ~] # cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-bond0


確保 /etc/sysconfig/network-scripts/ifcfg-bond0 的內容和以下內容相同

[root @heng ~] # cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.202
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet


2、編輯 /etc/sysconfig/network-scripts/ifcfg-eth0 與 /etc/sysconfig/network-scripts/ifcfg-eth1 ,確保編輯後的內容和以下所顯示的內容相同

[root @heng ~] # cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none

TYPE=Ethernet

MASTER=bond0 

SLAVE=yes


[root @heng ~] # cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none

TYPE=Ethernet

MASTER=bond0 

SLAVE=yes

3、編輯 /etc/modprobe.conf或/etc/modprobe.d/dist.conf 檔案,加入如下一行內容,以使系統在啟動時載入bonding模組,對外虛擬網路介面裝置為bond0。請確保檔案編輯後所顯示的內容與以下內容相同

說明:第一條參數是載入虛擬網卡驅動模組,第二條參數選項的意思是:miimon=100每隔100秒檢查一次鏈路狀態,mode=0 這是網卡工作模式,0代表多網卡負載,1代表多網卡主備

miimon是用來進行鏈路監測的。 比如:miimon=100,那麼系統每100ms監測一次鏈路串連狀態,如果有一條線路不通就轉入另一條線路;mode的值表示工作模式,他共有0,1,2,3四種模式,常用的為0,1兩種。
mode=0表示load balancing (round-robin)為負載平衡方式,兩塊網卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗餘功能,工作方式是主備的工作方式,也就是說預設情況下只有一塊網卡工作,另一塊做備份.
bonding只能提供鏈路監測,即從主機到交換器的鏈路是否接通。如果只是交換器對外的鏈路down掉了,而交換器本身並沒有故障,那麼bonding會認為鏈路沒有問題而繼續使用

4、編輯 /etc/rc.d/rc.local  ,請確保修改後的檔案所顯示的內容與以下內容相同

到這裡配置已經完成,重啟電腦,然後用 ifconfig 查看網卡資訊,會看見多了一個名稱為 bond0 的網卡。

下面我們討論以下mode分別為0,1時的情況

mode=1工作在主備模式下,這時eth1作為備份網卡是no arp的

 

那也就是說在主備模式下,當一個網路介面失效時(例如主交換器掉電等),不回出現網路中斷,系統會按照cat /etc/rc.d/rc.local裡指定網卡的順序工作,機器仍能對外服務,起到了失效保護的功能.

在mode=0 負載平衡工作模式,他能提供兩倍的頻寬,下我們來看一下網卡的配置資訊,注意觀察RX bytes和TX bytes項數值

在這種情況下出現一塊網卡失效,僅僅會是伺服器出口頻寬下降,也不會影響網路使用.

查看bond0狀態:

cat  /proc/net/bonding/bond0

 

註:這裡要注意一點,每一次在修改 bond0 的 mode  後,都需要重新啟動電腦,才能使修改生效。

Linux下通過網卡邦定技術既增加了伺服器的可靠性,又增加了可用網路頻寬,為使用者提供不間斷的關鍵服務。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.