Linu服務(wù)器研究論文

時(shí)間:2022-03-12 10:21:00

導(dǎo)語:Linu服務(wù)器研究論文一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

Linu服務(wù)器研究論文

摘要負(fù)載均衡技術(shù)的使用能夠在不對(duì)網(wǎng)絡(luò)中各種設(shè)備進(jìn)行重大改造的條件下提高各種服務(wù)的質(zhì)量,是解決當(dāng)前網(wǎng)絡(luò)業(yè)務(wù)迅猛增加和升級(jí)硬件設(shè)施之間矛盾的一個(gè)有效措施,本文簡(jiǎn)單描述了關(guān)于負(fù)載均衡方面的研究現(xiàn)狀,重點(diǎn)介紹了現(xiàn)今linuxbonding技術(shù)及其基于bonding技術(shù)的幾種負(fù)載均衡的算法,并對(duì)此進(jìn)行了簡(jiǎn)要的分析與研究,提出了其不足之處,針對(duì)這些不足提出了一種多網(wǎng)卡情況下基于傳輸協(xié)議的發(fā)送方面的算法,并對(duì)此進(jìn)行了簡(jiǎn)單的實(shí)現(xiàn),最后對(duì)此進(jìn)行了測(cè)試,測(cè)試結(jié)果表明該方法的可用性。

關(guān)鍵詞linuxbonding;傳輸協(xié)議;負(fù)載均衡;高可用性;

1引言

現(xiàn)今幾乎各行各業(yè)內(nèi)部都建立了自己的服務(wù)器,由于服務(wù)器的特殊地位,它的可靠性、可用性及其I/O速度就顯得非常的重要,保持服務(wù)器的高可用性和安全性是企業(yè)級(jí)IT環(huán)境的重要指標(biāo),其中最重要的一點(diǎn)是服務(wù)器網(wǎng)絡(luò)連接的高可用性,為實(shí)現(xiàn)這些要求,現(xiàn)在服務(wù)器大都采用多網(wǎng)卡配置,系統(tǒng)大都采用現(xiàn)在非常流行的linux作為服務(wù)器工作的環(huán)境。現(xiàn)在帶寬已經(jīng)不是服務(wù)質(zhì)量提高的瓶頸了,相對(duì)的網(wǎng)絡(luò)設(shè)備和服務(wù)器的處理能力就漸漸成為新的瓶頸。為提高服務(wù)器的網(wǎng)絡(luò)連接的可用性和可靠性,目前Sun公司的Trunking技術(shù)、3Com公司的DynamicAccess技術(shù)、Cisco公司的Etherchannel技術(shù)等等都在研究將服務(wù)器的多個(gè)網(wǎng)卡接口綁定在一起的鏈路聚集技術(shù),鏈路聚集技術(shù)將多個(gè)鏈路虛擬成一個(gè)邏輯鏈路進(jìn)而提供了一種廉價(jià)、有效的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬,提高網(wǎng)絡(luò)的靈活性與可用性。

本文介紹linux下的bonding技術(shù),linux2.4.x的內(nèi)核中采用了這種技術(shù),利用bonding技術(shù)可以將多塊網(wǎng)卡接口通過綁定虛擬成為一塊網(wǎng)卡,在用戶看來這個(gè)聚合起來的設(shè)備好像是一個(gè)單獨(dú)的以太網(wǎng)接口設(shè)備,通俗點(diǎn)講就是多塊網(wǎng)卡具有相同的IP地址而并行連接聚合成一個(gè)邏輯鏈路工作?,F(xiàn)在在關(guān)于linuxbonding技術(shù)中,有幾種算法來實(shí)現(xiàn)負(fù)載均衡的要求,此文針對(duì)這些算法,在此進(jìn)行簡(jiǎn)單分析與研究,討論其不足,并提出另外一種在此基礎(chǔ)上改進(jìn)的一種基于傳輸協(xié)議的負(fù)載均衡實(shí)現(xiàn)方法。討論如何實(shí)現(xiàn)多個(gè)網(wǎng)絡(luò)接口的分在均衡及其故障接管。

2負(fù)載均衡技術(shù)和高可用技術(shù)研究介紹

2.1負(fù)載均衡技術(shù)

負(fù)載均衡技術(shù)的主要思想就是如何根據(jù)某種算法將網(wǎng)絡(luò)的業(yè)務(wù)流量平均分配到不同的服務(wù)器和網(wǎng)絡(luò)設(shè)備上去,以減輕單臺(tái)服務(wù)器和網(wǎng)絡(luò)設(shè)備的負(fù)擔(dān),從而提高整個(gè)系統(tǒng)的效率。負(fù)載均衡既可以由有負(fù)載均衡功能的硬件實(shí)現(xiàn),也可以通過一些專用的軟件來實(shí)現(xiàn),負(fù)載均衡是一種策略,它能讓多臺(tái)服務(wù)器或多條鏈路共同承擔(dān)一些繁重的計(jì)算或者I/O任務(wù),從而以較低的成本消除網(wǎng)絡(luò)瓶頸,提高網(wǎng)絡(luò)的靈活性和可靠性。

2.2高可用技術(shù)

實(shí)現(xiàn)負(fù)載均衡首先是基于網(wǎng)絡(luò)的高可用性提出來的,高可用技術(shù)是容錯(cuò)技術(shù)的一個(gè)分支。實(shí)現(xiàn)系統(tǒng)的高可用性最簡(jiǎn)單的一個(gè)辦法就是冗余。完整的網(wǎng)絡(luò)負(fù)載均衡和高可用性網(wǎng)絡(luò)技術(shù)有兩個(gè)方面構(gòu)成,一是多服務(wù)器的綁定和負(fù)載均衡,二是一個(gè)服務(wù)器內(nèi)部的多網(wǎng)卡綁定的負(fù)載均衡,這里主要討論一個(gè)服務(wù)器內(nèi)部的多網(wǎng)卡綁定時(shí)的負(fù)載均衡。

3Linux的bonding技術(shù)中負(fù)載均衡的簡(jiǎn)單實(shí)現(xiàn)

3.1Linux的bonding技術(shù)

Linux的bonding技術(shù)是網(wǎng)卡驅(qū)動(dòng)程序之上、數(shù)據(jù)鏈路層之下實(shí)現(xiàn)的一個(gè)虛擬層,通過這種技術(shù),服務(wù)器接在交換機(jī)上的多塊網(wǎng)卡不僅被綁定為一個(gè)IP,MAC地址也被設(shè)定為同一個(gè),進(jìn)而構(gòu)成一個(gè)虛擬的網(wǎng)卡,工作站向服務(wù)器請(qǐng)求數(shù)據(jù),服務(wù)器上的網(wǎng)卡接到請(qǐng)求后,網(wǎng)卡根據(jù)某種算法智能決定由誰來處理數(shù)據(jù)的傳輸。Bonding技術(shù)可以提高主機(jī)的網(wǎng)絡(luò)吞吐量和可用性。

3.2Linux的幾種發(fā)送均衡算法

目前Linux的發(fā)送算法最主要的有三種:輪轉(zhuǎn)算法(Round-Robin)、備份算法(Active-Backup)、MAC地址異或算法(MAC-XOR)。下面對(duì)目前這三種主要算法進(jìn)行簡(jiǎn)單分析。

3.2.1輪轉(zhuǎn)算法

該算法是基于公平原則進(jìn)行的,它為每個(gè)將要被發(fā)送的數(shù)據(jù)包選擇發(fā)送接口,算法的主要思想是首先第一個(gè)數(shù)據(jù)包由一個(gè)接口發(fā)送,另一個(gè)數(shù)據(jù)包則由另外一個(gè)接口發(fā)送,下面依次進(jìn)行循環(huán)選擇。通過分析我們可以看出這種算法比較比較簡(jiǎn)單,在發(fā)送數(shù)據(jù)方面也比較公平,能保證網(wǎng)卡發(fā)送數(shù)據(jù)時(shí)候的負(fù)載均衡,資源利用率很高。但是我們知道如果一個(gè)連接或者會(huì)話的數(shù)據(jù)包從不同的接口發(fā)出的話,中途再經(jīng)過不同的鏈路,在客戶端很有可能會(huì)出現(xiàn)數(shù)據(jù)包無序到達(dá)的問題,而無序到達(dá)的數(shù)據(jù)包需要重新要求被發(fā)送,這樣網(wǎng)絡(luò)的吞吐量就會(huì)下降。

3.2.2備份算法

該算法將多個(gè)網(wǎng)卡接口中的一個(gè)接口設(shè)定為活動(dòng)狀態(tài),其他的接口處于備用狀態(tài)。當(dāng)活動(dòng)接口或者活動(dòng)鏈路出現(xiàn)故障時(shí),啟動(dòng)備用鏈路,由此可見此算法的優(yōu)點(diǎn)是可以提供高網(wǎng)絡(luò)連接的可用性,但是它的資源利用率較低,只有一個(gè)接口處于工作狀態(tài),在有N個(gè)網(wǎng)絡(luò)接口的情況下,資源利用率為1/N。

3.2.3MAC地址異或算法

該算法的主要思想是:由服務(wù)器的MAC地址和客戶端的MAC地址共同決定每個(gè)數(shù)據(jù)包的發(fā)送端口號(hào),由源MAC地址和目的MAC地址進(jìn)行異或計(jì)算,并將異或結(jié)果對(duì)接口數(shù)求余計(jì)算。由于發(fā)送到同一個(gè)客戶端的數(shù)據(jù)流經(jīng)過同一個(gè)鏈路,因此數(shù)據(jù)包能夠有序到達(dá)客戶端。此算法在只有一個(gè)客戶機(jī)訪問服務(wù)器或者服務(wù)器和客戶機(jī)不在同一子網(wǎng)的情況下,由算法思想得知這種情況下負(fù)載不會(huì)均衡,在只有一個(gè)客戶機(jī)訪問服務(wù)器的時(shí)候,資源的利用率也是1/N(N為接口數(shù))。

通常在一個(gè)大的局域網(wǎng)內(nèi),往往存在多個(gè)子網(wǎng)。其拓?fù)浣Y(jié)構(gòu)如下所示:

4基于傳輸協(xié)議的發(fā)送算法

上面我們對(duì)Linux中的幾種實(shí)現(xiàn)多網(wǎng)卡發(fā)送負(fù)載均衡算法進(jìn)行了分析,針對(duì)這些算法的不足,這里提出另外一種發(fā)送負(fù)載均衡算法。

4.1算法描述實(shí)其中source為源端口號(hào),dst為目的端口號(hào),saddr為源ip地址,daddr為目的ip地址。

基于傳輸協(xié)議的發(fā)送算法的主要思想是:由目的主機(jī)號(hào)、目的主機(jī)所在子網(wǎng)的子網(wǎng)號(hào)及該會(huì)話的TCP或UDP的目的端口號(hào)共同決定某個(gè)數(shù)據(jù)包的發(fā)送接口號(hào),此算法和MAC地址的異或算法有點(diǎn)類似,因?yàn)樗彩且环N異或計(jì)算。

下面我們約定:

(1)host為要發(fā)送數(shù)據(jù)包的目的主機(jī)號(hào)。

(2)subnet為目的主機(jī)的子網(wǎng)的子網(wǎng)號(hào)。

(3)port為UDP或TCP連接的目的端口號(hào)。

(4)slave_cnt為綁定的接口數(shù)。

不失一般性,這里先考慮slave_cnt為4的情況,在這種情況下由上述幾個(gè)條件異或并進(jìn)行求余計(jì)算來共同確定發(fā)送的接口號(hào),即進(jìn)行下面的運(yùn)算:

(host^subnet^port)&(0x03)%slave_cnt①式

上式可能的結(jié)果可能為0、1、2、3。即該算法這種情況下最多可以綁定4個(gè)網(wǎng)卡接口。

該算法最大程度上將不同連接的數(shù)據(jù)包從不同的接口發(fā)送,下面分幾種情況討論:

(1)對(duì)于同一個(gè)客戶機(jī)的兩個(gè)TCP連接,發(fā)送的接口號(hào)只與要連接的目的端口號(hào)有關(guān)。我們假設(shè)連接1和連接2的目的端口號(hào)分別為port1,port2,當(dāng)port1(二進(jìn)制)和port2(二進(jìn)制)的最后兩位不同時(shí),上個(gè)算法的計(jì)算結(jié)果不相等,兩個(gè)連接的數(shù)據(jù)流從不同的接口發(fā)送出去.

(2)對(duì)于同一個(gè)子網(wǎng)的不同客戶機(jī)的兩個(gè)TCP連接來說,上述算法式子中的subnet相同,假設(shè)連接的目的端口號(hào)port相同。但是主機(jī)號(hào)不同。設(shè)目的主機(jī)號(hào)分別為host1和host2,當(dāng)host1和host2(都是用二進(jìn)制表示)的最后兩位不相同時(shí),算法公式的計(jì)算結(jié)果不相等,兩個(gè)連接的數(shù)據(jù)流從不同的接口發(fā)送出去。

(3)對(duì)于不同子網(wǎng)的兩個(gè)TCP連接來說,假定主機(jī)號(hào)和連接的目的號(hào)port號(hào)都相同,子網(wǎng)號(hào)不同。設(shè)連接1和連接2所在的子網(wǎng)號(hào)分別為subnet1和subnet2,當(dāng)兩者的最后兩位不相同時(shí),算法公式的計(jì)算結(jié)果不相等,此時(shí)兩個(gè)連接的數(shù)據(jù)流從不同的接口發(fā)送出去。

下面考慮有N個(gè)網(wǎng)卡接口的情況,在某個(gè)時(shí)間段內(nèi)從第i個(gè)接口發(fā)送的連接數(shù)為(i=1,2,….N),第i個(gè)接口發(fā)送的第j個(gè)連接的數(shù)據(jù)流為,則第i個(gè)網(wǎng)卡接口的負(fù)載是:

當(dāng)②式。

當(dāng)②式成立時(shí),每個(gè)接口的負(fù)載絕對(duì)均衡,由于①式能夠?qū)⑦B接盡量分配到不同的接口,所以一般情況下==……,即每個(gè)接口的連接數(shù)相等,但是每個(gè)連接的數(shù)據(jù)流量不一定相等,也就是說②式不一定成立,根據(jù)統(tǒng)計(jì)原理,當(dāng)客戶機(jī)和服務(wù)器的連接數(shù)足夠大并且時(shí)間足夠長(zhǎng)時(shí),②式是成立的。

從上面對(duì)基于傳輸協(xié)議的負(fù)載均衡算法分析來看,該算法不僅在網(wǎng)絡(luò)層并且傳輸層都實(shí)現(xiàn)了各個(gè)接口的負(fù)載均衡,且保證了數(shù)據(jù)有序到達(dá)客戶端問題,同時(shí)資源的利用率也很高。

5測(cè)試結(jié)果進(jìn)行驗(yàn)證分析

測(cè)試軟件環(huán)境:RedHat9.0(內(nèi)核2.4.20)

測(cè)試硬件配置環(huán)境:一臺(tái)服務(wù)器(CPU:PIV2.8G;內(nèi)存:512M;兩塊支持MII狀態(tài)字寄存器的百兆網(wǎng)卡,每個(gè)有一個(gè)接口;一臺(tái)客戶機(jī)(配置和服務(wù)器一樣);兩臺(tái)(一臺(tái)也可)24口千兆交換機(jī)。測(cè)試軟件為netpipe,利用此軟件可以測(cè)試TCP協(xié)議性能,用它依次來對(duì)輪轉(zhuǎn)算法、MAC地址異或算法以及基于傳輸協(xié)議的發(fā)送算法的網(wǎng)絡(luò)延時(shí)和吞吐率。這里服務(wù)器用來發(fā)送數(shù)據(jù),客戶機(jī)用來接收數(shù)據(jù)。

服務(wù)器發(fā)送方執(zhí)行:

NPtcp–t–s–h172.19.11.130–otest.ppt–p

客戶機(jī)接受方執(zhí)行:

NPtcp–r–s

測(cè)試結(jié)果(測(cè)試結(jié)果為平均值)如表一所示。

從測(cè)試結(jié)果可以得出結(jié)論:由于輪轉(zhuǎn)算法簡(jiǎn)單,計(jì)算量小,網(wǎng)絡(luò)延遲也相對(duì)小,而基于傳輸協(xié)議的發(fā)送算法計(jì)算量相對(duì)較多,網(wǎng)絡(luò)延時(shí)也比較大。由于這里是雙機(jī)對(duì)測(cè),即只有一個(gè)客戶端,一個(gè)服務(wù)器端,所有MAC地址異或算法每次計(jì)算的結(jié)果也就唯一,只有一個(gè)接口被使用,吞吐率最小。相對(duì)來說,基于傳輸協(xié)議的發(fā)送算法吞吐率要大一些。

表一測(cè)試結(jié)果

上面測(cè)試需要說明的是:測(cè)試中服務(wù)器僅配置了兩塊網(wǎng)卡,并且只有一臺(tái)客戶機(jī)訪問服務(wù)器,當(dāng)網(wǎng)卡接口和客戶機(jī)增加時(shí),此文介紹的基于傳輸協(xié)議的發(fā)送算法的優(yōu)勢(shì)將會(huì)很明顯。在一個(gè)比較大的局域網(wǎng)中多個(gè)客戶機(jī)和服務(wù)器建立連接對(duì)話時(shí),采用輪轉(zhuǎn)算法的同一個(gè)連接的數(shù)據(jù)包經(jīng)過不同的鏈路傳送,無序到達(dá)客戶端的概率就會(huì)增加,重發(fā)的次數(shù)也增加,服務(wù)器吞吐率會(huì)降低。而基于傳輸協(xié)議的發(fā)送算法則不存在這樣的問題,此種情況下,服務(wù)器的吞吐率相對(duì)增加。

6結(jié)束語

Linux的bonding技術(shù)將多個(gè)網(wǎng)卡接口綁定在一起,使用多個(gè)接口發(fā)送數(shù)據(jù),算法上實(shí)現(xiàn)了負(fù)載均衡和故障遷移與接管。它是一種不對(duì)稱得負(fù)載均衡技術(shù),目前只是研究了發(fā)送算法,接受算法還有待于進(jìn)一步的研究,目前的鏈路技術(shù)都是將網(wǎng)卡接口綁定在一起來提高服務(wù)器的網(wǎng)絡(luò)性能,但是各種實(shí)現(xiàn)算法包括基于傳輸協(xié)議的發(fā)送算法并沒有考慮接口的速度,這一點(diǎn)有必要進(jìn)一步改進(jìn)。

參考文獻(xiàn)

1ACost-effectiveApproachtoImproveServerPerformanceandFaultTolerance.

/whitepaper.aspx?&scid=15&docid=46346

2毛德操,胡希明著.LINUX內(nèi)核源代碼情景分析.浙江大學(xué)出版社

3博韋&西斯特陳莉君.深入理解linux內(nèi)核(第二版)

4AlanRobertsonLinux-HAHeartbeatsystemdesign.linux-.

5M.Bozyigita.”History-drivendynamicloadbalancingforrecurringapplicationsonnetworkofworkstations”.Systemsandsoftware,

6LoadBalancingyourNICS