我們在這介紹的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ū)動程序的負(fù)擔(dān)。但是網(wǎng)卡也支持另外一種被稱為混雜promisc的模式,可以接收網(wǎng)絡(luò)上所有的幀,比如說tcpdump,就是運(yùn)行在這個模式下。bonding也運(yùn)行在這個模式下,而且修改了驅(qū)動程序中的mac地址,將兩塊網(wǎng)卡的 Mac地址改成相同,可以接收特定mac的數(shù)據(jù)幀。然后把相應(yīng)的數(shù)據(jù)幀傳送給bond驅(qū)動程序處理。
直接給兩塊網(wǎng)卡設(shè)置同一IP地址是不可能的。Kernels 2.4.12及以后的版本均供bonding模塊,以前的版本可以通過patch實現(xiàn)。
一、編輯虛擬網(wǎng)絡(luò)接口配置文件,指定網(wǎng)卡IP
假設(shè)eth0是對外服務(wù)的網(wǎng)卡,已經(jīng)調(diào)試好網(wǎng)絡(luò);eth1是希望與eth0同時對外提供服務(wù)的網(wǎng)卡。
# cd /etc/sysconfig/network-scripts/ # vi ifcfg-bond0
寫入如下信息和原來 ifcfg-eth0 的配置其實差不多。
所以我建議執(zhí)行如下語句,將ifcfg-eth0復(fù)制一份再改。
站在用戶的角度思考問題,與客戶深入溝通,找到云和網(wǎng)站設(shè)計與云和網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:
做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、
域名注冊、
虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋云和地區(qū)。
# cp ifcfg-eth0 ifcfg-bon0將ifcfg-bon0的信息修改大致如下:DEVICE=bond0 BOOTPROTO=static IPADDR=[IP] NETMASK=[MASK] BROADCAST=[BROADCAST] GATEWAY=[GATEWAY] ONBOOT=yes TYPE=Ethernet 二、配置真實網(wǎng)卡
修改ifcfg-eth0如下:
DEVICE=eth0 BOOTPROTO=none ONBOOT=yes MASTER=bond0 #如果不寫,則必須做第四步 SLAVE=yes #如果不寫,則必須做第四步 USERCTL=yes
類似地修ifcfg-eth1如下:
DEVICE=eth1 BOOTPROTO=none ONBOOT=yes MASTER=bond0 #如果不寫,則必須做第四步 SLAVE=yes #如果不寫,則必須做第四步 USERCTL=yes
三、加載模塊,讓系統(tǒng)支持bonding
默認(rèn)情況下,內(nèi)核已支持bonding,只需要簡單修改/etc/modprobe.conf 這個配置文檔就可以了:添加兩行
alias bond0 bonding options bond0 miimon=100 mode=1
說明:
mode指定了bond0的工作模式,常用的是0和1,0表示負(fù)載均衡方式,1表示主從方式,可根據(jù)需要自行配置。常用的為0,1兩種。mode=0表示 load balancing (round-robin)為負(fù)載均衡方式,兩塊網(wǎng)卡都工作。mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主備的工作方式,也就是說默認(rèn)情況下只有一塊網(wǎng)卡工作,另一塊做備份。bonding只能提供鏈路監(jiān)測,即從主機(jī)到交換機(jī)的鏈路是否接通。如果只是交換機(jī)對外的鏈路down掉了,而交換機(jī)本身并沒有故障,那么bonding會認(rèn)為鏈路沒有問題而繼續(xù)使用。 miimon是用來進(jìn)行鏈路監(jiān)測的。比如:miimon=100,那么系統(tǒng)每100ms監(jiān)測一次鏈路連接狀態(tài),如果有一條線路不通就轉(zhuǎn)入另一條線路。
四、增加開機(jī)啟動腳本
在 /etc/rc.d/rc.local里加上
ifenslave bond0 eth0 eth1
如果eth0和eth1都寫了MASTER和SLAVE,則上面的步驟做不做都無所謂。
五、重啟
reboot或者service network restart 都可以看到結(jié)果。
六、測試
ping著某個地址,當(dāng)然是能ping通的地址啦。如果發(fā)現(xiàn)網(wǎng)絡(luò)不通,請檢查ifcfg-bond0的網(wǎng)絡(luò)設(shè)置。
然后拔掉一根網(wǎng)線,如果ping沒斷,證明拔了一根backup的線,不是主線,重新插上等兩分鐘。
此時拔掉另一根網(wǎng)線,估計現(xiàn)在可以看到ping超時或者卡在那里,稍等10~30秒,ping繼續(xù)連同。
測試成功。
不登高山,怎知天高;不臨深溪,焉知地厚!站在堅實的土地上,做著生命中最真實的事情;像一棵挺拔的大樹,認(rèn)可自己的命運(yùn)并敢于迎接屬于這一方天空的風(fēng)風(fēng)雨雨。
網(wǎng)站題目:linux雙網(wǎng)卡綁定(bonding)實現(xiàn)負(fù)載均衡或故障轉(zhuǎn)移-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:
http://weahome.cn/article/gpcog.html