Page 1

中壢資策會網工 82 期 LXLAB Report

Linux Bonding

指導老師:彭學勤、楊宏文、 林旺聰顧問 學 員:曾昭瑾


– 將多片網卡虛擬成一片(竄改成同一個 IP/MAC),以便達到分散負 載。虛擬後所有 eth(#)網卡的 IP 和 MAC 將會變成完全相同,然後 多出一個 bond0 的虛擬網卡。 這個功能本來是高階網路卡,如 Intel、3COM 之類才有的硬體功能, 有自己的商業名詞,現在在 Linux 下也能夠用軟體實現,Linux 下 則是稱作 bonding。

Bonding 功能,一般又稱呼為 Port Trunking,目的如下 • 1.網路自動備援 • 2.增加網路傳輸頻寬 • 3.網路傳輸負載平衡 網路頻寬增加示意圖

網路備援示意圖


MODE 0 (balance-rr) 負載平衡模式,需有 switch 設定 (trunk) 支援才能發揮實質效果, 具容錯功能,其中一張 Slave 網卡失效仍可持續運作。 MODE 1 (active-backup) 同一時間只有單一 Slave 網卡運作,Active Slave 網卡失效時自動啟 用次一順位 Slave 網卡,不需 switch 支援。 MODE 2 (balance-xor) 利用 XOR 運算來源目的的 MAC 位址來決定哪張網卡進行連線,具有 負載平衡及容錯功能。 MODE 3 (broadcast) 所有 Slave 網卡一起收送網路封包,具容錯功能, 其中一張 Slave 網 卡失效仍可持續運作。 MODE 4 (802.3ad) 根據 802.3ad 規範將多張網卡整合成一張虛擬網卡。可搭配 802.1Q trunking 連接不同 VLAN 但網卡驅動程式需支援 ethtool,switch 需支 援 802.3ad Dynamic link aggregation 才能使用此功能。具有負載平衡 及容錯功能。


MODE 5 (balance-tlb) 傳出自動負載平衡,傳入由 Current Active Slave 負責,具容錯功能, 其中一張 Slave 網卡失效仍可持續運作,不需 switch 支援及設定。 MODE 6 (balance-alb) 傳出及傳入皆自動負載平衡,具容錯功能,其中一張 Slave 網卡失效 仍可持續運作,Slave 網卡 driver 需支援 setting hardware address 功能,不需 switch 支援及設定。


於 Linux 主機上建置 Linux bonding,利用多張網卡虛擬成一張網卡, 並使用 Mode 1 & 6 來測試容錯與負載平衡機制,以利紓解 Server 對 Client 端服務頻寬不足的問題。

1. 主機上新增網卡,並於網卡組態上做修改 ,並且新增編輯一虛擬網卡 bond0,編輯選定 要合併之網卡

,最後加入 Mode 選項,

看是採用頻寬加倍還是線路備援的機制。

2. 於 client 端安裝 ftp 並做下載 ftp 檔案的動作,停止其一 slave 網卡, 再觀察上述設定的機制是否成功運作。(增加對外下載測試)


系統:OpenSUSE 11.3 使用套件:Pure-ftpd 網卡:Realtek 8111*1 8139*2

Step1 未啟動 bonding 前 各網卡的硬體位址都還是不一樣的


Step2 針對各網卡組態檔做修改 修改欄位如下

Step3 新增 bonding 組態檔

↑在這邊是把 eth0-2 三張網卡設為 bondong slave card,bonding mode=1(active-backup)。


Step4 兩邊組態檔都設定完成,重新啟動網路

↑可以看到目前 master 網卡已改成 bond0 虛擬網卡。

↑Bonding 啟動成功,ifconfig 後會看到每張實體網卡硬體位址都換成 跟 bond0 虛擬網卡位址一樣。


PS:如果不確定網卡是否有支援 bonding 功能或者是對於組態檔不熟, 也可以使用 YAST 來做設定,選擇要合併的網卡並選擇底下的 bonding 模式。


Step5 對外連線測試使用 bonding mode = 1,看 eth0 移除後下載動作 是否會繼續(啟用備援線路)並將主網卡切換(時間 0.1 秒)到下一順位 網卡 eth1

↑拔掉於 eth0 網卡上的網路線,下載還是繼續跑。


↑Currently active slave 有確實切換到 eth1,也可看見 eth0 連線失敗 次數也增加 1,eth 1 & 2 狀態為 up。

↑多交叉測試拔除網路線,可以發現下載都有順利進行。


Step6 對內連線測試使用 bonding mode = 6,使用另一台電腦當 linux client 端,用 ftp 方式連到 bonding server 去下載 ftp 檔案

↑在 bonding 未建立以前,ping bond0 ip failed。

↑bonding 建立後,ping bond0 ip success。


↑目前是負載平衡與容錯模式 mode = 6,未中斷任一網路前。


↑bonding mode = 6

↑測試多次拔除網路線


↑實際觀察速率是有往下掉,但是幅度不大,重點是下載動作是有持 續的。


Linux 個別的套件在上課有教如何架設,如何去把它們合併作使用就 變成最重要的課題,從 70%的報告開始,不斷地上網 survey 資料,也 參考了學長的資料,開始試著從虛擬機器開始架設,從指令的下達, 不同流派有不同語法,是卡了一些時間,當解決組態檔問題 rcnetwork restart 後看到 bonding master,真是無比的開心;但真正的惡夢在 30% 實機開始,與 DRBL 主機的整合發生了套件版本不合的問題,bonding 也無法如期啟動,最後把 bonding 功能單獨拉出來用 FTP 作簡單測試 驗收,這是可惜的地方。還有 bonding 在虛擬機器上測試會有問題, 而且看不出網路速率的效果,建議在實體機器新增網卡作 bonding 的 設定並作測試,如此一來才能真的了解 bonding 的模式是否有運作成 功。

跟著 Guru 老師學習 Linux,發現 Linux open source 是很好玩,多多 man 與 survey 套件資料,會發現箇中樂趣,不過企鵝真是讓人又愛 又恨,後面的學弟妹上課得全神貫注,因為一切密技都在上課中。一 旦錯過就會追不上 Guru 老師腳步了。

linux_bonding  

linux_bonding

Read more
Read more
Similar to
Popular now
Just for you