Linux Bond的原理及其不足


http://www.tektea.com/archives/1969.html.

在企業及電信Linux服務器環境上,網絡配置都會使用Bonding技術做網口硬件層面的冗余,防止單個網口應用的單點故障。
Linux Bond的配置很簡單,當下網絡上也有很多資料,這里我們就不介紹了。我們在這篇文章中介紹Linux Bond的原理及其不足。

原理
Linux Bond有兩種典型的模式:主備,負載均衡。無論哪種模式,Bonding技術都是通過更改Linux的網口驅動,來實現網口故障后平滑切換的。

主備模式:
Linux Bond主備模式

負載均衡模式:
Linux Bond負載均衡模式

1. 我們先看主備模式
主備模式下,Linux Bonding實現會將Bond的兩個slave網口的MAC地址改為Bond的MAC地址,而Bond的MAC地址是Bond創建啟動后,主用slave網口的MAC地址。

當住用網口故障后,Bond會切換到備用網口,切換過程中,上層的應用是無感知不受影響的,因為Bond在驅動層,會接管上層應用的數據包,緩存起 來等備用網卡起來后再通過備用網卡發送出去。當然,前提是切換時間很短,否則緩沖區是會溢出的,溢出后就開始丟包了。具體的時間值本人還沒有驗證過。

2. 再看負載均衡模式
負載均衡模式下,Linux Bonding實現可以保持兩個slave網口的MAC地址不變,Bond的MAC地址是其中一個網卡的,Bond MAC地址的選擇是根據Bond自己實現的一個算法來的,具體如何選擇還沒有研究。

當然,這里要重點說明的是,Bond負載均衡模式下,要求交換機做配置,是的兩個slave網口能夠互通,否則的話,丟包會很厲害,基本沒法使用。這個是因為Bond的負載均衡模式算法,會將包在兩個網口之間傳輸以達到負載均衡。
由於負載均衡模式下,兩個slave有獨立的MAC地址,你可能會想,我能否給slave網口再綁定一個IP地址,用作其他用途。
這種方法是實現不了的。
負載均衡模式下,兩個slave網口在操作性系統上看到是兩個獨立的MAC地址,但是當你指定一個MAC地址發送包的時候,實際上發生的現象,不是你期望的。你指定MAC地址1發包,這個數據包可能到MAC地址2出去了。
這個是因為Bond對這兩個網口做了手腳,改了網口的驅動。看起來他們有獨立的MAC地址,實際上他們的MAC地址不是獨立的,只能給Bond使用。

不足
從上面的介紹中,很容易看到Bond的一點不足:
Bond更改了網口的驅動,其網口不能被用作其他用途。

Bond還有一點不足就是其故障監測上面:
Bond默認只能做網口MII監測不能做鏈路監測(鏈路是指本機到網關的路徑),也就是只能監測網口是否連接(網口是否亮);當然Bond也支持ARP協議的鏈路監測,但是ARP鏈路監測在一些場景下,太消耗資源,得不償失。我們曾經在實際應用中使用過,效果確實不好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM