專利名稱:一種具有tcp連接容錯(cuò)功能的負(fù)載平衡調(diào)度器及其調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,具體涉及一種具有TCP連接容錯(cuò)功能的的負(fù)載平衡調(diào)度器及其調(diào)度方法。
為了解決服務(wù)器的性能問題,許多公司和研究機(jī)構(gòu)研究了基于集群的服務(wù)器體系結(jié)構(gòu)。集群服務(wù)器是一個(gè)利用高速局域網(wǎng)將多個(gè)節(jié)點(diǎn)(一個(gè)節(jié)點(diǎn)就是一臺(tái)服務(wù)器、工作站或者PC機(jī))聯(lián)結(jié)起來的系統(tǒng),這些節(jié)點(diǎn)在一個(gè)負(fù)載平衡調(diào)度器的指揮下并發(fā)地服務(wù)外界請(qǐng)求。由于多個(gè)節(jié)點(diǎn)是否能夠均勻地分擔(dān)服務(wù)請(qǐng)求關(guān)系到服務(wù)器的整體性能及其擴(kuò)展性,所以負(fù)載平衡調(diào)度器的工作對(duì)服務(wù)器的服務(wù)能力至關(guān)重要。通常,負(fù)載平衡調(diào)度器根據(jù)某種策略將外來的網(wǎng)絡(luò)服務(wù)請(qǐng)求調(diào)往一組工作節(jié)點(diǎn)。調(diào)度方案可在鏈路層、網(wǎng)絡(luò)層或應(yīng)用層等多處實(shí)現(xiàn)。例如,EDDIE,Reverse-Proxy和pWEB都使用基于應(yīng)用層調(diào)度的方法來建立一個(gè)可伸縮的Web服務(wù)器。它們將到達(dá)的Web請(qǐng)求轉(zhuǎn)發(fā)到不同的Web服務(wù)節(jié)點(diǎn),取得結(jié)果后,再返回給用戶。IBM的TCP Router和Network Dispatcher都是實(shí)現(xiàn)在網(wǎng)絡(luò)層的調(diào)度器。Linux虛擬服務(wù)器(Linux Virtual Server)是一個(gè)基于Linux操作系統(tǒng)的集群調(diào)度軟件。它通過擴(kuò)展IP協(xié)議棧,對(duì)不同的網(wǎng)絡(luò)服務(wù)提供了多種請(qǐng)求調(diào)度方案。
除了軟件實(shí)現(xiàn),一些公司也提出了硬件解決方案,比如Cisco公司的LocalDirector。它通過硬件進(jìn)行集群服務(wù)器進(jìn)出口包的重寫,并取得了較高的性能。據(jù)稱,它能同時(shí)調(diào)度數(shù)十萬個(gè)TCP連接請(qǐng)求,但是這種專門的硬件產(chǎn)品價(jià)格非常昂貴,以致一般用戶難以承受。
雖然以上的許多方案解決了服務(wù)器的性能瓶頸問題,但它們都存在共同的缺點(diǎn),即很少考慮集中式調(diào)度器的可靠性。作為整個(gè)集群服務(wù)器的單一入口點(diǎn),調(diào)度器一旦出現(xiàn)故障,整個(gè)服務(wù)器將陷入癱瘓,從而可能造成巨大的經(jīng)濟(jì)損失。一個(gè)簡單的解決辦法是為該調(diào)度器專設(shè)一臺(tái)備份機(jī),當(dāng)調(diào)度器出現(xiàn)故障時(shí),備份機(jī)取代其IP地址而繼續(xù)工作。這種容錯(cuò)處理方式的一個(gè)重要不足之處在于已建立的TCP連接會(huì)全部丟失,這對(duì)用戶會(huì)產(chǎn)生不便甚至帶來損失。
Linux虛擬服務(wù)器提出了解決可靠性問題的一種方式。它通過內(nèi)核層的多播將連接信息送往備份機(jī)備份,當(dāng)故障發(fā)生時(shí),備份機(jī)接管調(diào)度器的工作并將已有連接信息恢復(fù)。這種方式的缺點(diǎn)是開銷較大。尤其是當(dāng)連接數(shù)目增多且狀態(tài)變化頻繁時(shí),多播會(huì)給網(wǎng)絡(luò)造成沉重的負(fù)擔(dān)。另外,這種方式需要專門的一臺(tái)備份節(jié)點(diǎn)從事開銷極低的備份工作,并且不能為調(diào)度器分擔(dān)調(diào)度任務(wù),所以對(duì)資源形成了浪費(fèi),這對(duì)于較小規(guī)模的集群服務(wù)器站點(diǎn)尤其突出。
為實(shí)現(xiàn)上述發(fā)明目的,一種具有TCP連接容錯(cuò)功能的負(fù)載平衡調(diào)度器,包括一套由CPU、主板、內(nèi)存、持久性存儲(chǔ)設(shè)備及其外圍設(shè)備構(gòu)成的計(jì)算機(jī)系統(tǒng),其特征在于,本調(diào)度器還包括一套具有與所述計(jì)算機(jī)系統(tǒng)相同配置的計(jì)算機(jī)系統(tǒng),二套計(jì)算機(jī)系統(tǒng)置于同一背板上,構(gòu)成由二臺(tái)調(diào)度機(jī)組成的調(diào)度器。
上述調(diào)度器的調(diào)度方法依次包括以下步驟(1)二臺(tái)調(diào)度機(jī)的外部網(wǎng)卡配置成相同的IP地址和物理地址;
(2)二臺(tái)調(diào)度機(jī)的鏈路層對(duì)IP包按照下述二種方式之一進(jìn)行篩選①根據(jù)客戶端IP地址值進(jìn)行調(diào)度;②根據(jù)客戶端IP地址和源端口號(hào)進(jìn)行調(diào)度;(3)兩臺(tái)調(diào)度機(jī)定時(shí)地通過自己的內(nèi)部網(wǎng)絡(luò)接口對(duì)連接調(diào)度信息進(jìn)行相互備份,相互備份時(shí)同時(shí)相互進(jìn)行正常性檢驗(yàn)如果某調(diào)度機(jī)在某一時(shí)間段內(nèi)發(fā)現(xiàn)另一調(diào)度機(jī)沒有備份信息到達(dá),則前一調(diào)度機(jī)判斷后一調(diào)度機(jī)出現(xiàn)故障,前一調(diào)度機(jī)即暫時(shí)停止調(diào)度工作,并完成以下工作①通過命令改變自己的物理地址,然后由一個(gè)專門的程序發(fā)送宣告式ARP包,強(qiáng)制外端路由或交換設(shè)備更新自己的ARP緩存;②根據(jù)已備份的對(duì)方調(diào)度器的連接信息,在自己的內(nèi)核中重建該表,從而和自己原有的調(diào)度表并列形成兩個(gè)表奇調(diào)度表和偶調(diào)度表;③關(guān)閉IP包的篩選控制開關(guān),使本機(jī)能夠接收所有的外來數(shù)據(jù)包;④報(bào)警;之后,前一調(diào)度機(jī)開始承擔(dān)全部調(diào)度工作;(4)處理后一調(diào)度機(jī)的故障并重新啟動(dòng),之后,后一調(diào)度機(jī)通過其自身的后臺(tái)程序自動(dòng)和前一調(diào)度機(jī)協(xié)商,并完成以下工作①命令前一調(diào)度機(jī)將偶調(diào)度表打包發(fā)送給自己,并在內(nèi)核重建該表;②打開自己的篩選控制開關(guān);③獲得對(duì)方當(dāng)前的物理地址,并將自己網(wǎng)卡設(shè)置成該物理地址,同時(shí)綁定公共的IP地址;④開啟相互備份進(jìn)程;與步驟(4)的同時(shí),前一調(diào)度機(jī)完成以下工作①打開自己的篩選控制開關(guān);②將偶調(diào)度表傳給后一調(diào)度機(jī),并釋放該表所占內(nèi)存;③開啟相互備份進(jìn)程;(5)二臺(tái)調(diào)度機(jī)開始正常的協(xié)同調(diào)度以及相互容錯(cuò)。
上述具有TCP連接容錯(cuò)功能的負(fù)載平衡調(diào)度器具有以下效果及優(yōu)點(diǎn)(1)高可靠本發(fā)明提出的容錯(cuò)方法使一臺(tái)調(diào)度器出現(xiàn)故障時(shí),另一臺(tái)調(diào)度器能夠平滑地接管其工作。使用戶感覺不到服務(wù)的中斷。并且在故障機(jī)恢復(fù)正常運(yùn)轉(zhuǎn)時(shí),能夠自動(dòng)地進(jìn)行調(diào)度任務(wù)的重新分配。多種報(bào)警方式使得系統(tǒng)更加易于管理。(2)低成本本調(diào)度器系統(tǒng)硬件全部由通用計(jì)算機(jī)部件構(gòu)成,并且根據(jù)調(diào)度器的性能需求作了合理的規(guī)劃。比如DOM的采用,是考慮到Linux操作系統(tǒng)的可裁剪特性,以節(jié)省不必要的硬盤存儲(chǔ)空間。另外主板采用集成式,也能夠有效地降低成本。(3)高效率本發(fā)明的雙機(jī)同時(shí)調(diào)度方法在本領(lǐng)域內(nèi)屬于獨(dú)創(chuàng),它使兩臺(tái)機(jī)器能夠?qū)ν饨缇W(wǎng)絡(luò)流量進(jìn)行合理地分流,并各自對(duì)自己的網(wǎng)絡(luò)支流進(jìn)行調(diào)度,最大程度地挖掘了雙機(jī)并行處理能力。(4)小體積本發(fā)明根據(jù)調(diào)度軟件的大小對(duì)計(jì)算機(jī)硬件進(jìn)行合理的剪裁,并使用一個(gè)背板耦合兩套硬件,使得整個(gè)雙機(jī)調(diào)度器的體積較一般方式的雙主機(jī)調(diào)度系統(tǒng)減小了約70%。
所述的一體化雙機(jī)結(jié)構(gòu),就是在一個(gè)背板上并列放置兩套完全相同配置的計(jì)算機(jī)系統(tǒng),如
圖1所示。這里的計(jì)算機(jī)系統(tǒng)由CPU、主板、內(nèi)存、DOM(Disk On Module)電子磁盤和電源、風(fēng)扇等外圍設(shè)備構(gòu)成。其中主板采用集成方式,內(nèi)嵌了顯卡和兩個(gè)網(wǎng)絡(luò)接口卡。DOM是一種采用集成電路設(shè)備(Integrated Devices Electronics,IDE)接口的電子盤,它利用先進(jìn)的集成電路作存儲(chǔ)器,而不象傳統(tǒng)硬盤采用磁介質(zhì)作存儲(chǔ)器。對(duì)低容量要求的系統(tǒng)它可以降低成本;它還具有數(shù)據(jù)斷電后不會(huì)丟失、低功耗、防震、抗污染和抗干擾能力強(qiáng)等優(yōu)點(diǎn)。集成式主板和DOM的采用不僅提高了系統(tǒng)的性能,而且使系統(tǒng)的體積較傳統(tǒng)的雙機(jī)調(diào)度器減小約70%,同時(shí)成本也大為降低。兩套計(jì)算機(jī)系統(tǒng)通過集群服務(wù)器內(nèi)部網(wǎng)絡(luò)相互聯(lián)結(jié)。
所述的雙機(jī)協(xié)作調(diào)度方法首先將兩臺(tái)調(diào)度機(jī)的外部網(wǎng)卡配置成相同的IP地址和物理地址。這個(gè)IP地址就是集群服務(wù)器的公開訪問地址。為了避免IP地址的沖突,需要在內(nèi)核屏蔽掉ARP(Address Resolve Protocol,地址解析協(xié)議)廣播詢問包的響應(yīng)。兩臺(tái)調(diào)度機(jī)的外部網(wǎng)卡都通過網(wǎng)線聯(lián)入一個(gè)共享介質(zhì)的集線器。當(dāng)外部IP包到來時(shí),借助于集線器的共享介質(zhì)特征,使得該IP包能夠被兩臺(tái)調(diào)度機(jī)的網(wǎng)卡同時(shí)接收并傳往它們各自的鏈路層。然后兩臺(tái)調(diào)度機(jī)的鏈路層對(duì)IP包按照某種方式進(jìn)行篩選??蛇x的方式有兩種(1)根據(jù)客戶端IP地址值進(jìn)行調(diào)度。比如,1號(hào)調(diào)度器只對(duì)奇數(shù)IP地址的包進(jìn)行調(diào)度,而丟棄偶數(shù)IP地址的數(shù)據(jù)包;2號(hào)調(diào)度器只對(duì)偶數(shù)IP地址的包進(jìn)行調(diào)度,而丟棄奇數(shù)IP地址的數(shù)據(jù)包。
(2)根據(jù)客戶端IP地址和源端口號(hào)進(jìn)行調(diào)度。比如對(duì)源IP地址和源端口號(hào)進(jìn)行哈希運(yùn)算,產(chǎn)生一個(gè)值。然后根據(jù)它們的奇偶性進(jìn)行分流。
第一種方式可以適用于任何網(wǎng)絡(luò)服務(wù)。篩包的過程可以在Linux的內(nèi)核函數(shù)netif_rx(struct sk_buff*skb)中進(jìn)行。該函數(shù)緊挨著網(wǎng)卡驅(qū)動(dòng)程序,能夠盡早地將不屬于本機(jī)的包篩掉,從而避免包向網(wǎng)絡(luò)協(xié)議棧上層流動(dòng)帶來的開銷。這種方式的一個(gè)缺點(diǎn)是根據(jù)IP地址的奇偶篩選可能導(dǎo)致分流不均,因?yàn)樵S多客戶的訪問請(qǐng)求是通過一個(gè)網(wǎng)關(guān)或代理轉(zhuǎn)發(fā)的。第二種方式能夠克服的第一種方式分流不均的缺點(diǎn),但不能用于動(dòng)態(tài)端口服務(wù)比如Ftp(File Transfer Protocol,文件傳輸協(xié)議),或持久性服務(wù)當(dāng)中。這種方式只能在IP層實(shí)現(xiàn),較鏈路層的實(shí)現(xiàn)效率有所降低。在實(shí)際應(yīng)用時(shí)應(yīng)該根據(jù)具體情況加以選擇。
除了并行地進(jìn)行請(qǐng)求調(diào)度以外,兩臺(tái)調(diào)度機(jī)還定時(shí)地通過自己的內(nèi)部網(wǎng)絡(luò)接口對(duì)連接調(diào)度信息進(jìn)行相互備份。備份時(shí)采取增量備份的方式,即只備份連接的變化信息。由于TCP連接的狀態(tài)繁多且變化頻繁,這里的變化情況只包括新增連接和新撤銷連接的信息。這樣備份的數(shù)據(jù)量能夠減小到最少,結(jié)合內(nèi)核的多播機(jī)制,使得備份開銷幾乎可以忽略不計(jì)。
以上相互備份的過程同時(shí)也是一個(gè)相互進(jìn)行正常性檢驗(yàn)的過程,這個(gè)過程是實(shí)現(xiàn)容錯(cuò)機(jī)制的前提。如果某調(diào)度器(設(shè)為調(diào)度器1)在某一時(shí)間段內(nèi)發(fā)現(xiàn)另一臺(tái)調(diào)度器(設(shè)為調(diào)度器2)的沒有備份信息到達(dá),則調(diào)度器1判斷調(diào)度器2出現(xiàn)故障。這時(shí)它暫時(shí)停止調(diào)度工作,并完成以下工作(1)通過命令改變自己的物理地址,然后由一個(gè)專門的程序發(fā)送宣告式ARP包,強(qiáng)制外端路由或交換設(shè)備更新自己的ARP緩存;(2)根據(jù)已備份的對(duì)方調(diào)度器的連接信息,在自己的內(nèi)核中重建該表,從而和自己原有的調(diào)度表并列形成兩個(gè)表奇調(diào)度表和偶調(diào)度表;(3)關(guān)閉IP包的篩選控制開關(guān),使本機(jī)能夠接收所有的外來數(shù)據(jù)包;(4)報(bào)警,并向系統(tǒng)管理員的電子信箱發(fā)送通知故障日志郵件。
完成這些工作之后,調(diào)度器1開始恢復(fù)以前的調(diào)度工作。
當(dāng)調(diào)度機(jī)2恢復(fù)正常時(shí)(通過管理員或自己重啟動(dòng)),通過其自身的后臺(tái)程序自動(dòng)和調(diào)度機(jī)1協(xié)商,并完成以下工作(1)命令調(diào)度機(jī)1將偶調(diào)度表打包發(fā)送給自己,并在內(nèi)核重建該表;(2)打開自己的篩選控制開關(guān);(3)獲得對(duì)方當(dāng)前的物理地址,并將自己網(wǎng)卡設(shè)置成該物理地址,同時(shí)綁定公共的IP地址(調(diào)度器初啟時(shí)外部網(wǎng)卡是非活躍狀態(tài)的);(4)開啟相互備份進(jìn)程。
與此同時(shí)調(diào)度機(jī)1完成以下工作(1)打開自己的篩選控制開關(guān);(2)將偶調(diào)度表傳給調(diào)度機(jī)2,并釋放該表所占內(nèi)存;(3)開啟相互備份進(jìn)程。以上工作完成之后,雙機(jī)開始正常的協(xié)同調(diào)度以及相互容錯(cuò)。
如上所述,本發(fā)明調(diào)度器由緊密耦合在一個(gè)小型機(jī)箱中的兩套相同配置的計(jì)算機(jī)系統(tǒng)構(gòu)成,每一套系統(tǒng)的硬件和操作系統(tǒng)可采用如表1所示的配置。
表1調(diào)度器系統(tǒng)硬件配置具體實(shí)施時(shí),調(diào)度器的兩個(gè)調(diào)度機(jī)分別用一根網(wǎng)線聯(lián)入集群服務(wù)器外端的共享介質(zhì)集線器,同時(shí)用一根網(wǎng)線聯(lián)入內(nèi)部的交換機(jī)。機(jī)器啟動(dòng)后,對(duì)Linux Virtual Server進(jìn)行相應(yīng)配置,并啟動(dòng)所述的雙機(jī)容錯(cuò)調(diào)度軟件,即可開始正常工作。
權(quán)利要求
1.一種具有TCP連接容錯(cuò)功能的負(fù)載平衡調(diào)度器,包括一套由CPU、主板、內(nèi)存、持久性存儲(chǔ)設(shè)備及其外圍設(shè)備構(gòu)成的計(jì)算機(jī)系統(tǒng),其特征在于,本調(diào)度器還包括一套具有與所述計(jì)算機(jī)系統(tǒng)相同配置的計(jì)算機(jī)系統(tǒng),二套計(jì)算機(jī)系統(tǒng)置于同一背板上,構(gòu)成由二臺(tái)調(diào)度機(jī)組成的調(diào)度器。
2.一種權(quán)利要求1所述調(diào)度器的調(diào)度方法,其特征在于,該調(diào)度方法依次包括以下步驟(1)二臺(tái)調(diào)度機(jī)的外部網(wǎng)卡配置成相同的IP地址和物理地址;(2)二臺(tái)調(diào)度機(jī)的鏈路層對(duì)IP包按照下述二種方式之一進(jìn)行篩選①根據(jù)客戶端IP地址值進(jìn)行調(diào)度;②根據(jù)客戶端IP地址和源端口號(hào)進(jìn)行調(diào)度;(3)兩臺(tái)調(diào)度機(jī)定時(shí)地通過自己的內(nèi)部網(wǎng)絡(luò)接口對(duì)連接調(diào)度信息進(jìn)行相互備份,相互備份時(shí)同時(shí)相互進(jìn)行正常性檢驗(yàn)如果某調(diào)度機(jī)在某一時(shí)間段內(nèi)發(fā)現(xiàn)另一調(diào)度機(jī)沒有備份信息到達(dá),則前一調(diào)度機(jī)判斷后一調(diào)度機(jī)出現(xiàn)故障,前一調(diào)度機(jī)即暫時(shí)停止調(diào)度工作,并完成以下工作①通過命令改變自己的物理地址,然后由一個(gè)專門的程序發(fā)送宣告式ARP包,強(qiáng)制外端路由或交換設(shè)備更新自己的ARP緩存;②根據(jù)已備份的對(duì)方調(diào)度器的連接信息,在自己的內(nèi)核中重建該表,從而和自己原有的調(diào)度表并列形成兩個(gè)表奇調(diào)度表和偶調(diào)度表;③關(guān)閉IP包的篩選控制開關(guān),使本機(jī)能夠接收所有的外來數(shù)據(jù)包;④報(bào)警;之后,前一調(diào)度機(jī)開始承擔(dān)全部調(diào)度工作;(4)處理后一調(diào)度機(jī)的故障并重新啟動(dòng),之后,后一調(diào)度機(jī)通過其自身的后臺(tái)程序自動(dòng)和前一調(diào)度機(jī)協(xié)商,并完成以下工作①命令前一調(diào)度機(jī)將偶調(diào)度表打包發(fā)送給自己,并在內(nèi)核重建該表;②打開自己的篩選控制開關(guān);③獲得對(duì)方當(dāng)前的物理地址,并將自己網(wǎng)卡設(shè)置成該物理地址,同時(shí)綁定公共的IP地址;④開啟相互備份進(jìn)程;與步驟(4)的同時(shí),前一調(diào)度機(jī)完成以下工作①打開自己的篩選控制開關(guān);②將偶調(diào)度表傳給后一調(diào)度機(jī),并釋放該表所占內(nèi)存;③開啟相互備份進(jìn)程;(5)二臺(tái)調(diào)度機(jī)開始正常的協(xié)同調(diào)度以及相互容錯(cuò)。
全文摘要
一種具有TCP連接容錯(cuò)功能的負(fù)載平衡調(diào)度器及其調(diào)度方法,采用一體化雙機(jī)協(xié)同結(jié)構(gòu),利用一個(gè)背板并列放置兩套相同配置的計(jì)算機(jī)系統(tǒng),使雙機(jī)系統(tǒng)形成一個(gè)整體。計(jì)算機(jī)系統(tǒng)利用DOM作為持久性存儲(chǔ)器,并安裝經(jīng)裁剪的Linux操作系統(tǒng)。雙機(jī)通過設(shè)置成相同的IP地址和物理地址,同時(shí)接收外來IP包,并在鏈路層按不同規(guī)則對(duì)IP包進(jìn)行過濾,對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行分流。對(duì)各自的網(wǎng)絡(luò)支流,雙機(jī)利用Linux虛擬服務(wù)器對(duì)請(qǐng)求進(jìn)行調(diào)度。同時(shí),雙機(jī)系統(tǒng)通過互相監(jiān)控和備份,在某臺(tái)機(jī)器出現(xiàn)故障時(shí)另一臺(tái)機(jī)器能夠平滑地接管其工作。該接管過程能保證客戶的連接不會(huì)中斷。當(dāng)故障機(jī)恢復(fù)正常后,通過與另一臺(tái)機(jī)器協(xié)商,能夠重新分擔(dān)調(diào)度任務(wù)。本發(fā)明與其他方案相比,具有高可靠、低成本、高效率、體積小等優(yōu)點(diǎn)。
文檔編號(hào)G06F15/16GK1410904SQ02139089
公開日2003年4月16日 申請(qǐng)日期2002年9月24日 優(yōu)先權(quán)日2002年9月24日
發(fā)明者金海 , 譚光, 陳祖彬, 韓宗芬, 李昕, 程璞峰, 龐麗萍, 李勝利 申請(qǐng)人:武漢拓銳計(jì)算機(jī)系統(tǒng)有限責(zé)任公司, 華中科技大學(xué)