亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Linux下雙網(wǎng)卡綁定技術(shù)實現(xiàn)負載均衡和失效保護

系統(tǒng) 2513 0

???? 保持服務(wù)器的高可用性是企業(yè)級?IT?環(huán)境的重要因素。其中最重要的一點是服務(wù)器網(wǎng)絡(luò)連接的高可用性。網(wǎng)卡(NIC)綁定技術(shù)有助于保證高可用性特性并提供其它優(yōu)勢以提高網(wǎng)絡(luò)性能。
??????我們在這介紹的Linux雙網(wǎng)卡綁定實現(xiàn)就是使用兩塊網(wǎng)卡虛擬成為一塊網(wǎng)卡,這個聚合起來的設(shè)備看起來是一個單獨的以太網(wǎng)接口設(shè)備, 通俗點講就是兩塊網(wǎng)卡具有相同的IP地址而并行鏈接聚合成一個邏輯鏈路工作。其實這項技術(shù)在Sun和Cisco中早已存在,被稱為Trunking和 Etherchannel技術(shù),在Linux的2.4.x的內(nèi)核中也采用這這種技術(shù),被稱為bonding。bonding技術(shù)的最早應(yīng)用是在集群—— beowulf上,為了提高集群節(jié)點間的數(shù)據(jù)傳輸而設(shè)計的。下面我們討論一下bonding?的原理,什么是bonding需要從網(wǎng)卡的混雜 (promisc)模式說起。我們知道,在正常情況下,網(wǎng)卡只接收目的硬件地址(MAC?Address)是自身Mac的以太網(wǎng)幀,對于別的數(shù)據(jù)幀都濾 掉,以減輕驅(qū)動程序的負擔(dān)。但是網(wǎng)卡也支持另外一種被稱為混雜promisc的模式,可以接收網(wǎng)絡(luò)上所有的幀,比如說tcpdump,就是運行在這個模式 下。bonding也運行在這個模式下,而且修改了驅(qū)動程序中的mac地址,將兩塊網(wǎng)卡的Mac地址改成相同,可以接收特定mac的數(shù)據(jù)幀。然后把相應(yīng)的 數(shù)據(jù)幀傳送給bond驅(qū)動程序處理。?
????說了半天理論,其實配置很簡單,一共四個步驟:
實驗的操作系統(tǒng)是Redhat?Linux?Enterprise?3.0
綁定的前提條件:芯片組型號相同,而且網(wǎng)卡應(yīng)該具備自己獨立的BIOS芯片

雙網(wǎng)卡邦定的拓樸圖(見下圖)



1.編輯虛擬網(wǎng)絡(luò)接口配置文件,指定網(wǎng)卡IP?
vi?/etc/sysconfig/?network-scripts/?ifcfg-bond0?
[root@rhas-13?root]#?cp??/etc/sysconfig/network-scripts/ifcfg-eth0?ifcfg-bond0
2?#vi?ifcfg-bond0?
將第一行改成?DEVICE=bond0?
#?cat?ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
IPADDR=172.31.0.13
NETMASK=255.255.252.0
BROADCAST=172.31.3.254
ONBOOT=yes
TYPE=Ethernet
這里要主意,不要指定單個網(wǎng)卡的IP?地址、子網(wǎng)掩碼或網(wǎng)卡?ID。將上述信息指定到虛擬適配器(bonding)中即可。
[root@rhas-13?network-scripts]#?cat?ifcfg-eth0?
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
[root@rhas-13?network-scripts]#?cat?ifcfg-eth1?
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp

3?#?vi?/etc/modules.conf?
編輯?/etc/modules.conf?文件,加入如下一行內(nèi)容,以使系統(tǒng)在啟動時加載bonding模塊,對外虛擬網(wǎng)絡(luò)接口設(shè)備為?bond0?

加入下列兩行?
alias?bond0?bonding?
options?bond0?miimon=100?mode=1?
說明:miimon是用來進行鏈路監(jiān)測的。?比如:miimon=100,那么系統(tǒng)每100ms監(jiān)測一次鏈路連接狀態(tài),如果有一條線路不通就轉(zhuǎn)入另一條線路;mode的值表示工作模式,他共有0,1,2,3四種模式,常用的為0,1兩種。
???mode=0表示load?balancing?(round-robin)為負載均衡方式,兩塊網(wǎng)卡都工作。
???mode=1表示fault-tolerance?(active-backup)提供冗余功能,工作方式是主備的工作方式,也就是說默認情況下只有一塊網(wǎng)卡工作,另一塊做備份.??
bonding只能提供鏈路監(jiān)測,即從主機到交換機的鏈路是否接通。如果只是交換機對外的鏈路down掉了,而交換機本身并沒有故障,那么bonding會認為鏈路沒有問題而繼續(xù)使用
4?#?vi?/etc/rc.d/rc.local?
加入兩行?
ifenslave?bond0?eth0?eth1?
route?add?-net?172.31.3.254?netmask?255.255.255.0?bond0?

到這時已經(jīng)配置完畢重新啟動機器.
重啟會看見以下信息就表示配置成功了
................?
Bringing?up?interface?bond0?OK?
Bringing?up?interface?eth0?OK?
Bringing?up?interface?eth1?OK?
................

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

mode=1工作在主備模式下,這時eth1作為備份網(wǎng)卡是no?arp的
[root@rhas-13?network-scripts]#?ifconfig??驗證網(wǎng)卡的配置信息
bond0?????Link?encap:Ethernet??HWaddr?00:0E:7F:25:D9:8B
??????????inet?addr:172.31.0.13??Bcast:172.31.3.255??Mask:255.255.252.0
??????????UP?BROADCAST?RUNNING?MASTER?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:18495?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:480?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:0
??????????RX?bytes:1587253?(1.5?Mb)??TX?bytes:89642?(87.5?Kb)
?
eth0??????Link?encap:Ethernet??HWaddr?00:0E:7F:25:D9:8B
??????????inet?addr:172.31.0.13??Bcast:172.31.3.255??Mask:255.255.252.0
??????????UP?BROADCAST?RUNNING?SLAVE?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:9572?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:480?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:1000
??????????RX?bytes:833514?(813.9?Kb)??TX?bytes:89642?(87.5?Kb)
??????????Interrupt:11
?
eth1??????Link?encap:Ethernet??HWaddr?00:0E:7F:25:D9:8B
??????????inet?addr:172.31.0.13??Bcast:172.31.3.255??Mask:255.255.252.0
??????????UP?BROADCAST?RUNNING?NOARP?SLAVE?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:8923?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:0?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:1000
??????????RX?bytes:753739?(736.0?Kb)??TX?bytes:0?(0.0?b)
??????????Interrupt:15
????那也就是說在主備模式下,當(dāng)一個網(wǎng)絡(luò)接口失效時(例如主交換機掉電等),不回出現(xiàn)網(wǎng)絡(luò)中斷,系統(tǒng)會按照cat?/etc/rc.d/rc.local里指定網(wǎng)卡的順序工作,機器仍能對外服務(wù),起到了失效保護的功能.

在mode=0????負載均衡工作模式,他能提供兩倍的帶寬,下我們來看一下網(wǎng)卡的配置信息
[root@rhas-13?root]#?ifconfig
bond0?????Link?encap:Ethernet??HWaddr?00:0E:7F:25:D9:8B
??????????inet?addr:172.31.0.13??Bcast:172.31.3.255??Mask:255.255.252.0
??????????UP?BROADCAST?RUNNING?MASTER?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:2817?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:95?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:0
??????????RX?bytes:226957?(221.6?Kb)??TX?bytes:15266?(14.9?Kb)
?
eth0??????Link?encap:Ethernet??HWaddr?00:0E:7F:25:D9:8B
??????????inet?addr:172.31.0.13??Bcast:172.31.3.255??Mask:255.255.252.0
??????????UP?BROADCAST?RUNNING?SLAVE?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:1406?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:48?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:1000
??????????RX?bytes:113967?(111.2?Kb)??TX?bytes:7268?(7.0?Kb)
??????????Interrupt:11
?
eth1??????Link?encap:Ethernet??HWaddr?00:0E:7F:25:D9:8B
??????????inet?addr:172.31.0.13??Bcast:172.31.3.255??Mask:255.255.252.0
??????????UP?BROADCAST?RUNNING?SLAVE?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:1411?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:47?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:1000
??????????RX?bytes:112990?(110.3?Kb)??TX?bytes:7998?(7.8?Kb)
??????????Interrupt:15

??????在這種情況下出現(xiàn)一塊網(wǎng)卡失效,僅僅會是服務(wù)器出口帶寬下降,也不會影響網(wǎng)絡(luò)使用.




??????通過查看bond0的工作狀態(tài)查詢能詳細的掌握bonding的工作狀態(tài)
[root@rhas-13?bonding]#?cat?/proc/net/bonding/bond0
bonding.c:v2.4.1?(September?15,?2003)
?
Bonding?Mode:?load?balancing?(round-robin)
MII?Status:?up
MII?Polling?Interval?(ms):?0
Up?Delay?(ms):?0
Down?Delay?(ms):?0
Multicast?Mode:?all?slaves
?
Slave?Interface:?eth1
MII?Status:?up
Link?Failure?Count:?0
Permanent?HW?addr:?00:0e:7f:25:d9:8a
?
Slave?Interface:?eth0
MII?Status:?up
Link?Failure?Count:?0
Permanent?HW?addr:?00:0e:7f:25:d9:8b

?????Linux下通過網(wǎng)卡邦定技術(shù)既增加了服務(wù)器的可靠性,又增加了可用網(wǎng)絡(luò)帶寬,為用戶提供不間斷的關(guān)鍵服務(wù)。用以上方法均在redhat的多個版本測試成功,而且效果良好.心動不如行動,趕快一試吧!?
參考文檔:
/usr/share/doc/kernel-doc-2.4.21/networking/bonding.txt

?

[求助]請教雙網(wǎng)卡問題!!!

作者:段譽?????發(fā)表時間:2003/01/11?08:14pm

如何在一臺裝有Linux的機器下做雙網(wǎng)卡綁定一個IP地址??
請大家指教,多謝!!!?:em14:??:em14:??:em14:
此文章相關(guān)評論:
該文章有26個相關(guān)評論如下:(點這兒可以發(fā)表評論)
無雙? 發(fā)表于:?2003/01/11?08:16pm
不可能
?
無雙? 發(fā)表于:?2003/01/11?08:17pm
可以一個網(wǎng)卡綁定多個地址
但不可以多網(wǎng)卡綁定一個地址
?
段譽? 發(fā)表于:?2003/01/11?09:14pm
一個網(wǎng)卡綁定多個IP我知道,我現(xiàn)在就想問問,為什么不能兩個網(wǎng)卡綁定一個?有明確的說明嗎?
為什么SUN/IBM的機器就可以在增加軟件的情況下,雙網(wǎng)卡綁定一個IP?我想,Linux應(yīng)該也可以做到的吧,只不過我不知道而已,:(。
?
無雙? 發(fā)表于:?2003/01/11?09:18pm
因為arp協(xié)議原因

?
段譽? 發(fā)表于:?2003/01/11?09:19pm
[這個貼子最后由段譽在?2003/01/11?09:20pm?編輯]

說說為什么,可以嗎?多謝!
?
無雙? 發(fā)表于:?2003/01/11?09:23pm
看一看ARP協(xié)議
TCP/IP在低層要把IP轉(zhuǎn)換成硬件地址
然后才可以在網(wǎng)絡(luò)上傳輸

如果一個IP對應(yīng)多個硬件地址
那么沒有辦法轉(zhuǎn)換

SUN的話是用改配置文件的方法實現(xiàn)的
?
diag? 發(fā)表于:?2003/01/11?10:59pm
BSD?可以。。。TRUK?。。
?
無雙? 發(fā)表于:?2003/01/11?11:06pm
可以嗎
但是雙網(wǎng)卡同IP的話兩個網(wǎng)卡不可能同時使用
?
diag? 發(fā)表于:?2003/01/11?11:36pm
應(yīng)該可以。。我?guī)涂纯础!N覀兊哪莻€NAS?。。就是用FREEBSD?做的。。

兩個網(wǎng)卡做的/
?
無雙? 發(fā)表于:?2003/01/11?11:39pm
那把做的方法寫一下吧
大家學(xué)學(xué)
?
段譽? 發(fā)表于:?2003/01/12?00:57am
好啊,多謝diag,把這個寫寫,:)
?
xunle回來啦? 發(fā)表于:?2003/01/12?01:00am
可以的,我看過相關(guān)文章,不過因為沒用到,所以沒在意,我也找不到那文章了
?
okaxikiss? 發(fā)表于:?2003/01/12?07:50am
引用: 下面引用由[u]diag[/u]在? 2003/01/11?11:36pm ?發(fā)表的內(nèi)容:
應(yīng)該可以。。我?guī)涂纯础!N覀兊哪莻€NAS?。。就是用FREEBSD?做的。。
兩個網(wǎng)卡做的/


寫出來大家學(xué)習(xí)學(xué)習(xí)嘛
?
ttyp0? 發(fā)表于:?2003/01/12?10:09am
聽說Intel服務(wù)器網(wǎng)卡兩個口同一個ip連到Cisco35XX交換機全雙工可以達到400M
?
depike? 發(fā)表于:?2003/01/12?03:43pm
沒錯,intel的網(wǎng)卡可以實現(xiàn)雙網(wǎng)卡綁定一個IP地址,但也是有要求的,具體的在Intel的站點上應(yīng)該有,但我今天沒找到
http://www.gx-wp.com/ycwz/internetadapter.htm
?
clic? 發(fā)表于:?2003/01/12?04:06pm
bonding在內(nèi)核2.4.x中已經(jīng)包含了,只需要在編譯的時候把網(wǎng)絡(luò)設(shè)備選項中的Bonding?driver?support選中就可以了。
  然后,重新編譯核心,重新起動計算機,執(zhí)行如下命令:
  ismod?bonding
  ifconfig?eth0?down
  ifconfig?eth1?down
  ifconfig?bond0?ipaddress
  ifenslave?bond0?eth0
  ifenslave?bond0?eth1
  現(xiàn)在兩塊網(wǎng)卡已經(jīng)象一塊一樣工作了.這樣可以提高集群節(jié)點間的數(shù)據(jù)傳輸.
  你最好把這幾句寫成一個腳本,再由/etc/rc.d/rc.local調(diào)用,以便一開機就生效.
  bonding對于服務(wù)器來是個比較好的選擇,在沒有千兆網(wǎng)卡時,用兩三塊100兆網(wǎng)卡作bonding,可大大提高服務(wù)器到交換機之間的帶寬.但是需要在交換機上設(shè)置連接bonding網(wǎng)卡的兩個口子映射為同一個虛擬接口。
?
depike? 發(fā)表于:?2003/01/12?04:15pm
多謝clic,有機會一定一試
?
無雙? 發(fā)表于:?2003/01/12?05:05pm
不錯建議精華
而寫到一句話中
?
race? 發(fā)表于:?2003/01/12?07:26pm
我以前關(guān)心過這個事情,當(dāng)時因為LINUX網(wǎng)關(guān)流量不大,沒實際做捆綁,還有就是不知道對交換機設(shè)置有沒有要求。

將多塊網(wǎng)卡虛擬成為一塊網(wǎng)卡,使其具有相同的IP地址,來實現(xiàn)提升主機的網(wǎng)絡(luò)吞吐量或者是提高可用性,這種技術(shù)被稱作bonding。這項技術(shù)其 實在sun?和cisco中已經(jīng)存在,分別稱為Trunking和etherchannel技術(shù),在Linux中,這種技術(shù)稱為bonding。
bonding驅(qū)動最早來自于Donald?Becker的beowulf對kernel2.0的補丁。但是已經(jīng)有了很大的改進和變化,最早來自于extreme-linux和beowulf的工具已經(jīng)不適用于現(xiàn)在版本的驅(qū)動了。
對于新版本的驅(qū)動,請參考本文最后的鏈結(jié)地址。
1、安裝
1)?編譯帶有bonding?driver的內(nèi)核
對于最新版本的bonding驅(qū)動,使用內(nèi)核2.2.18或以上版本(否則需要對內(nèi)核打補丁)。
使用make?menuconfig/xconfig/config來編譯內(nèi)核,并在"Network?device?support"部分選 擇"Bonding?driver?support",這里推薦配置該驅(qū)動為模塊方式,因為目前這是傳遞給參數(shù)給驅(qū)動并配置多個bonding設(shè)備的唯一 方法。
編譯和安裝新的內(nèi)核和模塊:
make?dep;make?clean;make?bzImage;make?modules;make?modules_install;
2)?獲取并安裝用戶管理工具
這個版本的bonding驅(qū)動需要新的ifenslave程序。來自extreme-linux和beowulf的原始工具程序不能在這里使用。 內(nèi)核?2.2.18及其以上版本在Documentation/network中包含文件ifenslave.c。對于更老的內(nèi)核,請參考文章最后的資源 鏈結(jié)部分的內(nèi)容。
安裝ifenslave.c:
#?gcc?-O2?-s?-o?ifenslave?ifenslave.c#?cp?ifenslave?/sbin/ifenslave
3)?配置系統(tǒng)
參考下一部分關(guān)于模塊參數(shù)的內(nèi)容。首先需要在/etc/conf.modules中添加如下內(nèi)容:
alias?bond0?bonding
使用標(biāo)準(zhǔn)的發(fā)布技術(shù)來定義bond0這個網(wǎng)絡(luò)接口,例如在redhat發(fā)布中,在/etc/sysconfig/network-scripts目錄中添加ifcfg-bond0文件:
DEVICE=bond0IPADDR=192.168.1.1NETMASK=255.255.255.0NETWORK=192.168.1.0BROADCAST=192.168.1.255ONBOOT=yesBOOTPROTO=noneUSERCTL=no
所有屬于bond的接口動必須被定義為SLAVE或MASTER。例如,在Redhat中,如果希望定義eth0和eth1定義為屬于接口bond0的一部分,那么它們的配置文件(ifcfg-eth0,?ifcfg-eth1,等)間如下所示:
DEVICE=eth0USERCTL=noONBOOT=yesMASTER=bond0SLAVE=yesBOOTPROTO=none

如果管理工具支持可以重新啟動網(wǎng)絡(luò)子系統(tǒng)或者僅僅啟動bonding設(shè)備,否則重新啟動機器。(對于redhat發(fā)布,使用`ifup?bond0'或`/etc/rc.d/init.d/network?restart')
如果你的發(fā)布提供的管理工具不支持在網(wǎng)絡(luò)接口配置中定義master/slave,則需要使用下面的命令手工配置bonding設(shè)備:
#?/sbin/ifconfig?bond0?192.168.1.1?up#?/sbin/ifenslave?bond0?eth0#?/sbin/ifenslave?bond0?eth1
當(dāng)然也可以將這些命令定義為一個腳本,以方便執(zhí)行。
4)?模塊參數(shù)
下面的模塊參數(shù)可能被傳遞:
mode=
可能的值為0(默認的輪轉(zhuǎn)模式round?robin?policy),或者1(熱備份模式),參考下面的HA部分來得到更多的相關(guān)信息。
miimon=
整數(shù)值,定義MII鏈路監(jiān)測頻率(單位為頻率)。默認值為0,表示關(guān)閉鏈路監(jiān)測。如果希望使用鏈路監(jiān)測,一個合適的值為100。參考HA部分得到更多信息。
downdelay=
在發(fā)現(xiàn)鏈路故障時,這里規(guī)定的整數(shù)值定義disable一個鏈路的延遲(單位為毫秒)。必須是miimon的整數(shù)倍。默認值為0。參考HA部分得到更多信息。
updelay=
偵測到"link?up"狀態(tài)時,這里規(guī)定的整數(shù)值定義了enable一個鏈路的延遲。必須是miimon的整數(shù)倍。默認值為0。參考HA部分得到更多信息。
如果需要定義多個bonding設(shè)備,驅(qū)動必須被多次加載。例如,對于有兩個bonding設(shè)備的情況,/etc/conf.modlues必須包含如下內(nèi)容:
alias?bond0?bondingalias?bond1?bonding
options?bond0?miimon=100options?bond1?-o?bonding1?miimon=100
5)?測試配置
可以通過ifconfig命令來監(jiān)測配置和傳輸策略,例如對于輪轉(zhuǎn)策略,你應(yīng)該得到如下信息:
[root]#?/sbin/ifconfigbond0?Link?encap:Ethernet?HWaddr?00:C0:F0:1F:37:B4?inet?addr:XXX.XXX.XXX.YYY?Bcast:XXX.XXX.XXX.255?Mask:255.255.252.0UP?BROADCAST?RUNNING?MASTER?MULTICAST?MTU:1500?Metric:1RX?packets:7224794?errors:0?dropped:0?overruns:0?frame:0TX?packets:3286647?errors:1?dropped:0?overruns:1?carrier:0collisions:0?txqueuelen:0
eth0?Link?encap:Ethernet?HWaddr?00:C0:F0:1F:37:B4?inet?addr:XXX.XXX.XXX.YYY?Bcast:XXX.XXX.XXX.255?Mask:255.255.252.0UP?BROADCAST?RUNNING?SLAVE?MULTICAST?MTU:1500?Metric:1RX?packets:3573025?errors:0?dropped:0?overruns:0?frame:0TX?packets:1643167?errors:1?dropped:0?overruns:1?carrier:0collisions:0?txqueuelen:100?Interrupt:10?Base?address:0x1080
eth1?Link?encap:Ethernet?HWaddr?00:C0:F0:1F:37:B4?inet?addr:XXX.XXX.XXX.YYY?Bcast:XXX.XXX.XXX.255?Mask:255.255.252.0UP?BROADCAST?RUNNING?SLAVE?MULTICAST?MTU:1500?Metric:1RX?packets:3651769?errors:0?dropped:0?overruns:0?frame:0TX?packets:1643480?errors:0?dropped:0?overruns:0?carrier:0collisions:0?txqueuelen:100?Interrupt:9?Base?address:0x1400
問題:
1.?bonding會不會和SMP沖突?
不會,老的2.0.xx版本配合SMP使用會發(fā)生沖突,而新的內(nèi)核不會發(fā)生問題。
2.?哪種類型的網(wǎng)卡可以用作bonding?
任何類型的網(wǎng)卡(甚至可以使用混合類型的網(wǎng)卡-一個Intel的therExpress?PRO/100和a?3com?3c905b),甚至可以將兩個Gigabit以太網(wǎng)卡bond在一起使用。
3.?我可以擁有多少個bonding設(shè)備?
對應(yīng)于加載的一個模塊,就可以擁有一個bonding設(shè)備,參考模塊參數(shù)部分來了解如何實現(xiàn)。
4.?一個bonding設(shè)備可以有多少個salve網(wǎng)卡?
受限于linux可以支持的網(wǎng)卡數(shù)量和系統(tǒng)可以插接的網(wǎng)卡數(shù)量。
5.?當(dāng)一個slave鏈路出現(xiàn)故障,會發(fā)生什么問題?
如果你的以太網(wǎng)卡支持MII狀態(tài)監(jiān)控,并且MII監(jiān)測已經(jīng)在驅(qū)動中被使用(參考模塊參數(shù)部分內(nèi)容),那么就不會出現(xiàn)什么不幸的結(jié)果。這個版本 的?bonding驅(qū)動能得到MII信息并且根據(jù)鏈路狀態(tài)來enable或者disable某個slave網(wǎng)卡。參考HA部分得到更多信息。
所有不能報告自己的鏈路狀態(tài)的以太驅(qū)動不能很好地處理這種情況。bonding驅(qū)動不能連續(xù)發(fā)送數(shù)據(jù)報,而導(dǎo)致某些數(shù)據(jù)報丟失。而重傳可能會引起嚴(yán)重的性能問題(如果一塊網(wǎng)卡丟失,那么可能會對TCP或UDP帶來嚴(yán)重的性能影響)。
6.?bonding能被用作高可用性項目么?
當(dāng)然可以,如果使用了MII監(jiān)測,并且你所有的網(wǎng)卡驅(qū)動都支持MII鏈路狀態(tài)匯報。參考HA部分內(nèi)容。
7.?bonding能適用于哪種類型的switches/systems?
在輪轉(zhuǎn)模式,它和下面支持trunking的系統(tǒng)能一起工作:
*?Cisco?5500?series?(參考EtherChannel支持相關(guān)內(nèi) 容)。*?SunTrunking?software.*?Alteon?AceDirector?switches?/?WebOS?(使用 Trunks).*?BayStack?Switches?(trunks必須被配置).?可堆疊的模塊(450)能在不同的物理單元的端口中定 義*?Linux?bonding.
對于熱備份模式下,它能和一切二層交換機工作。
8.?一個bonding設(shè)備的MAC來自于哪個網(wǎng)卡?
如果沒有明顯使用ifconfig來配置指定,bonding設(shè)備的MAC地址從它的第一個slave中得到。這個MAC地址隨即被傳遞個所有其 他的?slave設(shè)備,這些其他的slave設(shè)備將具有這個MAC,即使第一個Slave設(shè)備被去除。只有bonding設(shè)備重起或者down了,MAC 地址才會改變。
如果希望修改MAC地址,可以使用ifconfig來設(shè)置:
#?ifconfig?bond0?ha?ether?00:11:22:33:44:55
可以通過up/down設(shè)備,然后修改其slave的順序來改變bonding設(shè)備的MAC地址:
#?ifconfig?bond0?down?;?modprobe?-r?bonding#?ifconfig?bond0?....?up#?ifenslave?bond0?eth...
這個方法將自動從下一個將被添加的slave中得到地址。
為了恢復(fù)slave的MAC地址,需要將其從bonding設(shè)備中分離出來(`ifenslave?-d?bond0?eth0'),down掉 該設(shè)備(`ifconfig?eth0?down'),去除模塊(`rmmod?3c59x'),然后重載其以使其從其eeproms中得到其MAC地 址。若一個驅(qū)動被多個設(shè)備所擁有,那么需要將其全部down掉。另外一種方法是察看啟動時該卡的MAC地址(dmesg或?tail?/var/log /messages),并使用ifconfig來reset它:
#?ifconfig?eth0?down#?ifconfig?eth0?hw?ether?00:20:40:60:80:A0
9.?哪些使用哪些傳輸模式?
輪轉(zhuǎn)模式:基于slave的順序,依次輪轉(zhuǎn)通過不同網(wǎng)卡發(fā)送數(shù)據(jù);
熱備份模式:確保在同一時刻僅僅通過一個網(wǎng)卡發(fā)送數(shù)據(jù),另外一個作為該激活卡的熱備份,在激活卡出現(xiàn)故障時數(shù)據(jù)流馬上切換到熱備份卡,這種模式常常用于使用交換機的高可用性中(high?availability?solutions?)
高可用性
為了使用bonding驅(qū)動實現(xiàn)高可用性,需要將該驅(qū)動編譯為模塊,因為目前這時傳遞參數(shù)給驅(qū)動的唯一方式。以后這種情況可能會改變。首先需要確 保所有的網(wǎng)卡支持MII鏈路狀態(tài)報告。在Linux2.2.17及以上版本中,所有的百兆以太網(wǎng)和yellowfin千兆以太網(wǎng)都支持MII鏈路狀態(tài)報 告。如果你的網(wǎng)卡驅(qū)動不支持這種技術(shù),那么會將鏈路狀態(tài)監(jiān)測為有故障。
bonding驅(qū)動目前通過監(jiān)測MII狀態(tài)注冊器來偵測其所有的slave鏈路。偵測間隔有模塊參數(shù)"miimon"來定義。該值為整數(shù)值,單 位為milliseconds。100ms是一個合適的值,因為太小的值可能影響系統(tǒng)性能。也就是說鏈路發(fā)生故障以后在100ms秒以內(nèi)將會被發(fā)現(xiàn)。
例如:
#?modprobe?bonding?miimon=100
或在/etc/modules.conf定義如下內(nèi)容:
alias?bond0?bondingoptions?bond0?miimon=100
目前對高可用性有兩個策略,依賴于主機是否
a)?主機連接到單臺主機或支持trunking的交換機b)?主機連接到多個不同的交換機上,或單個不支持trunking的交換機
1)?在單交換機或主機上的HA-負載均衡
這種模式易于配置和理解,只需要簡單的配置遠程設(shè)備(主機或交換機)來將數(shù)據(jù)流量分散在多個端口(trunk,?etherchannel等), 并配置bonding接口。如果模塊加載時指定了MII參數(shù),MII將自動工作。可以通過去除或恢復(fù)不同的鏈路,然后再?log文件中察看驅(qū)動設(shè)備監(jiān)測到 了哪些信息。在監(jiān)測時,你也許會遇到這樣的問題:如果trunk連接的所有接口都down掉以后,有些具有bug的交換機會長時間地 diable?trunk。可以通過重新啟動交換機來修正這些問題。
例1:主機和主機間實現(xiàn)倍速:
在每個主機中,運行:
#?modprobe?bonding?miimon=100#?ifconfig?bond0?addr#?ifenslave?bond0?eth0?eth1
例?2:主機連接交換機以實現(xiàn)倍速:
在主機A中運行:
#?modprobe?bonding?miimon=100#?ifconfig?bond0?addr?#?ifenslave?bond0?eth0?eth1
在交換機中:
#對port1和port2設(shè)置trunking。
2)?在多個交換機或主機上的HA-負載均衡(或不支持trunking技術(shù)的單交換機情況)
這種模式更可能會出現(xiàn)問題,因為它依賴于這樣的事實:雖然有多個端口,但是主機MAC地址只能被一個端口可見以避免混淆交換機。
如果需要知道哪個哪個端口是活動的,哪個是備份的,那就使用ifconfig。所有的備份接口設(shè)置有NOAEP標(biāo)志。為了使用該模式,在加載時傳遞"mode=1"給模塊:
#?modprobe?bonding?miimon=100?mode=1
或者在/etc/modules.conf中添加如下內(nèi)容:
alias?bond0?bondingoptions?bond0?miimon=100?mode=1
例1:使用多個主機和多個交換機來創(chuàng)建"無單故障點瓶頸"解決方案:
在這種配置下,這里有一個ISL-?交換機間連接(Inter?Switch?Link,可能是一個trunk),多個主機 (host1,?host2?...)都同時連接到交換機,并且多個端口連接到外部網(wǎng)絡(luò)(port3...),每個主機中同時只有一個slave是激活 的,但是所有的鏈路仍然被監(jiān)測?(系統(tǒng)能監(jiān)測到活動鏈路的故障并啟動備份鏈路)。
如果host1和host2具有同樣的功能,并且被用在負載均衡中,那么將host1的活動接口連接到其中一個交換機而host2連接到另外一 個交換機上是一個非常不錯的選擇。這種系統(tǒng)在單個主機、交換機或者線路出問題時仍能保證工作。最糟糕可能情況是,單個交換機出現(xiàn)故障,其中一臺主機將不可 訪問,直到另外一個交換機維護的轉(zhuǎn)發(fā)表過期,另外一個主機才會轉(zhuǎn)換激活接口到正常的交換機上。
例?2:使用多個以太網(wǎng)卡連接到一個交換機,以應(yīng)付NIC故障的情況,以提高可用性:
在主機A中:
#?modprobe?bonding?miimon=100?mode=1?#?ifconfig?bond0?addr#?ifenslave?bond0?eth0?eth1
在交換機中:
#?(可選地)最小化轉(zhuǎn)發(fā)表過期時間
每次主機切換其活動接口,它將使用新的接口直到該接口出現(xiàn)故障。在這個例子中,主機受交換機轉(zhuǎn)發(fā)表的過期時間影響很大。
3)?調(diào)整交換機的頻率
如果交換機轉(zhuǎn)換到備份接口需要花費太長的時間,一般來說都希望在當(dāng)前接口發(fā)生故障的情況下立即啟用備用接口。可以通過傳遞模塊參數(shù)"downdelay"來實現(xiàn)減少完全disable一個接口的延遲。
當(dāng)一個交換機重啟以后,可能出現(xiàn)其端口在端口可用以前報告"link?up"狀態(tài)。這可能使得bonding設(shè)備使用還不可用的端口這可能通過傳遞模塊參數(shù)"updelay"來延遲活動端口被重新可用的時間。
當(dāng)一個主機和交換機重新交互以確定一個丟失的鏈路也會出現(xiàn)同樣的問題。
在bonding接口丟失了其所有的slave鏈路的情情況下,則驅(qū)動將馬上使用第一個up的接口,而不受updelay參數(shù)的限制。這樣可以減少系統(tǒng)down的時間。
例如:
#?modprobe?bonding?miimon=100?mode=1?downdelay=2000?updelay=5000#?modprobe?bonding?miimon=100?mode=0?downdelay=0?updelay=5000
4)?限制
主要限制是:
只有鏈路狀態(tài)被監(jiān)控,如果交換機本身down掉了,例如不再轉(zhuǎn)發(fā)數(shù)據(jù)但是鏈路仍然完好。則鏈路不會被diable。另外一個監(jiān)測故障鏈路的方式統(tǒng)計一個沉重負載主機的接入數(shù)據(jù)幀數(shù)量。但是對于哪些負載較小的服務(wù)器則不大適用。
資源鏈結(jié)
Donald?Becker的以太驅(qū)動和diag程序可以在下面的到:
-?http://www.scyld.com/network/-?http://cesdis.gsfc.nasa.gov/linux/drivers/?(seems?to?be?dead?now)-?ftp://cesdis.gsfc.nasa.goc/pub/linux/drivers/?(seems?to?be?dead?now)
還可以在www.scyld.com得到很多關(guān)于ethernet、NWay和MII等信息。Y
對于新版本的驅(qū)動,牢的內(nèi)核補丁和更新的用戶空間工具可以在Willy?Tarreau的網(wǎng)站中得到:
-?http://wtarreau.free.fr/pub/bonding/-?http://www-miaif.lip6.fr/willy/pub/bonding/
為了得到最新的關(guān)于Linux?Kernel開發(fā)信息,請關(guān)注:
http://boudicca.tux.org/hypermail/linux-kernel/latest/
Linux2.4.x內(nèi)核bonding的實現(xiàn)
因為bonding在內(nèi)核2.4.x中已經(jīng)包含了,只需要在編譯的時候把網(wǎng)絡(luò)設(shè)備選項中的Bonding?driver?support選中就可以了。然后,重新編譯核心,重新起動計算機,執(zhí)行如下命令:
insmod?bondingifconfig?eth0?downifconfig?eth1?downifconfig?bond0?ipaddressifenslave?bond0?eth0ifenslave?bond0?eth1
現(xiàn)在兩塊網(wǎng)卡已經(jīng)象一塊一樣工作了.這樣可以提高集群節(jié)點間的數(shù)據(jù)傳輸。你最好把這幾句寫成一個腳本,再由/etc/rc.d/rc.local調(diào)用,以便一開機就生效。
bonding對于服務(wù)器來是個比較好的選擇,在沒有千兆網(wǎng)卡時,用兩三塊100兆網(wǎng)卡作bonding,可大大提高服務(wù)器到交換機之間的帶寬.但是需要在交換機上設(shè)置連接bonding網(wǎng)卡的兩個口子映射為同一個虛擬接口(trunking技術(shù))。
下面是引自郵件列表的一個信,希望能對出現(xiàn)問題時有所幫助:
I?have?found?a?solution?to?another?problem?with?the?bonding?driver.?If?you?ifconfig?down?an?enslaved?eth?device,?the?bonding?driver?is?not?notified?and?if?there?is?an?attempt?to?use?the?device?then?a?crash?results.?I?have?added?a?one?line?fix?to?dev_close?in?net/core/dev.c?/*?if?the?device?is?a?slave?we?should?not?touch?it*/?if(dev-flags&IFF_SLAVE)?return?-EBUSY;?I?put?it?after?the?check?to?see?if?the?interface?is?up.?This?may?not?be?the?best?solution?but?it?prevents?the?kernel?crashes?and?as?bond_release?is?not?implemented?there?is?not?much?point?making?the?device?release?it`s?self.?Since?I?made?this?change?and?the?one?in?my?last?message?I?have?not?been?able?to?produce?a?crash.?(here?is?a?script?which?will?cause?the?crash?on?2.2.16)?#!/bin/bash?insmod?eepro100?insmod?bonding?ifconfig?bond0?192.168.1.2?up?ifenslave?bond0?eth0?ifconfig?eth0?down?ifconfig?bond0?down?ifconfig?bond0?192.168.1.2?up?ifconfig?bond0?down?Again,?if?someone?could?confirm?this?fix?it?would?be?good.?'
文章來源:LinuxAid

?

補充樓主的原創(chuàng):
????補充理由:我在按照樓主配置方法,實現(xiàn)了mode=1在一個交換機上的實現(xiàn),但是無法實現(xiàn)在VLAN模式下BOND的工作。后通過交流,最后這個方法能實現(xiàn)創(chuàng)建多個bond的虛設(shè)備并來滿足不同VLAN的設(shè)置。
????由于保證網(wǎng)絡(luò)架構(gòu)的靈活性的要求,每個機器都支持VLAN的802。1Q協(xié)議,通過簡單配置就可以跨VLAN通信。由于VLAN的配置在 服務(wù)器中通過虛設(shè)備實現(xiàn),所以在rc.local中通過ifenslave?bond0?eth0?eth1?激活的方式不可行。
????具體配置:

1.編輯虛擬網(wǎng)絡(luò)接口配置文件,指定網(wǎng)卡IP?
cp?/etc/sysconfig/network-scripts/ifcfg-eth0?/etc/sysconfig/network-scripts/ifcfg-bond0.2(VLAN2)

修改ifcfg-eth0為
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
eth1同上述配置,只需要修改DEVICE=eth0為DEVICE=eth1

ifcfg-bond0的配置
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

修改ifcfg-bond0.2
也只需要修改DEVICE=eth0為DEVICE=bond0.2,其他配置采用本來的eth0的配置就可以。

如果有其他VLAN,可以再加。

2、?#?vi?/etc/modules.conf?
編輯?/etc/modules.conf?文件,加入如下一行內(nèi)容,以使系統(tǒng)在啟動時加載bonding模塊,對外虛擬網(wǎng)絡(luò)接口設(shè)備為?bond0?
 ?
加入下列兩行?
alias?bond0?bonding?
options?bond0?miimon=100?mode=1?
說明見樓主的說明

3、添加VLAN=yes到/etc/sysconfig/network中

4、最關(guān)鍵一步,修改/sbin/ifup
找到#?Ethernet?802.1Q?VLAN?support這一行
修改下面的幾行:
if?echo?${DEVICE}?|?LANG=C?egrep?-v?'(:)'?|?LANG=C?egrep?-q?'eth[0-9][0-9]*\.[0-9][0-9]?[0-9]?[0-9]?'?;?then
修改為
if?echo?${DEVICE}?|?LANG=C?egrep?-v?'(:)'?|?LANG=C?egrep?-q?'(eth|bond)[0-9][0-9]*\.[0-9][0-9]?[0-9]?[0-9]?'?;?then

VID="`echo?${DEVICE}?|?\
????????????LANG=C?egrep?'eth[0-9]+\.[0-9][0-9]?[0-9]?[0-9]?$'?|?\
????????????修改為
VID="`echo?${DEVICE}?|?\
????????????LANG=C?egrep?'(eth|bond)[0-9]+\.[0-9][0-9]?[0-9]?[0-9]?$'?|?\
????????????
????????PHYSDEV="`echo?${DEVICE}?|?\
????????????LANG=C?egrep?'eth[0-9]+\.[0-9][0-9]?[0-9]?[0-9]?$'?|?\
修改為
????????PHYSDEV="`echo?${DEVICE}?|?\
????????????LANG=C?egrep?'(eth|bond)[0-9]+\.[0-9][0-9]?[0-9]?[0-9]?$'?|?\
????????????
這樣就大功告成了,重新啟動或者services?network?restart以后,注意看messages是否成功,或者看ifconfig?-a

?

?

Linux下雙網(wǎng)卡綁定技術(shù)實現(xiàn)負載均衡和失效保護


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久草精彩视频 | 中文精品99久久国产 | 国产成人欧美一区二区三区的 | 亚洲一区在线日韩在线深爱 | 精品一区 二区三区免费毛片 | 91国在线视频| 免费视频毛片 | 欧美在线观看高清一二三区 | 欧美视频在线观看一区二区 | 天天草天天爽 | 老子影院午夜伦手机不卡6080 | 亚洲成a人在线播放www | 欧美日韩高清在线观看一区二区 | 欧日韩不卡在线视频 | 欧美成人另类bbw | a欧美在线| 欧美精品xxxⅹ欧美 欧美精品成人 | 色视频一区二区三区 | 天天躁日日躁狠狠躁中文字幕 | 欧美一级精品高清在线观看 | 国产亚洲精品成人一区看片 | 午夜欧美成人 | 97精品一区二区三区在线不卡 | 一区二区三区免费视频网站 | 成年女人免费毛片视频永久 | 欧美激情精品久久久久久久 | 色综合久久天天综线观看 | 日韩精品一区二区三区中文精品 | 99久久99久久精品免费看子 | 99久久国产综合精品成人影院 | 成人午夜私人影院入口 | 深夜成人在线 | 九九影院理论片在线观看 | 免费看羞羞视频的网站 | 韩毛片| 视频黄色在线 | 亚洲成人小视频 | 日韩精品一区二区三区国语自制 | 国产欧美在线观看不卡 | 456性欧美欧美在线视频 | 久久久久免费精品视频 |