專利名稱:一種多機服務器系統(tǒng)中雙向負載均衡機制的實現(xiàn)方法
技術領域:
本發(fā)明涉及計算機技術領域,具體的說就是提供了一種用于多機服務器系統(tǒng)中的雙向負載均衡機制。
背景技術:
由于互聯(lián)網絡的飛速發(fā)展,快速增長的各種應用使網絡服務器的訪問量大大增加,這種情況導致了多機服務器系統(tǒng)(比如機群系統(tǒng),也稱為集群系統(tǒng))的出現(xiàn)以滿足日益增長的各種需求。負載均衡技術是多機服務器系統(tǒng)中的關鍵技術。其主要作用就是對負載進行均衡處理來使整個多機服務器系統(tǒng)達到最佳性能。目前基于多臺負載均衡器所組成的負載均衡系統(tǒng)是其中用的比較多的一種解決方案,但是目前的負載均衡通常意義上指的是對客戶端請求數據(也稱上行數據)包的負載均衡。針對從服務器節(jié)點返回的響應數據(也稱下行數據)包,有的系統(tǒng)是直接通過服務器節(jié)點將其返回給客戶端,此時不需要考慮負載均衡,在這種情況下,后端服務器系統(tǒng)(一般由服務器節(jié)點通過網絡互連而組成)暴露給外網,系統(tǒng)的安全性不好;有的系統(tǒng)采用網絡地址轉換(NAT,Network Address Translation)機制(策略),雖然請求數據包和返回數據包都經過負載均衡系統(tǒng),保證了安全性,但是也有兩個缺點,一是網絡地址轉換使負載均衡系統(tǒng)的開銷比較大,影響負載均衡系統(tǒng)性能;二是沒有對返回數據包進行負載均衡。
發(fā)明內容
本發(fā)明的目的在于克服上述現(xiàn)有技術不足,提供一種多機服務器系統(tǒng)中雙向負載均衡機制的實現(xiàn)方法,具有高可用功能,并能夠提高服務器系統(tǒng)的性能和安全性。
本發(fā)明的技術方案是這樣實現(xiàn)的按如下步驟進行1)在由很多臺計算機所構成的多機服務器系統(tǒng)中,用一臺或多臺負載均衡器節(jié)點組成負載均衡系統(tǒng),每臺均衡器節(jié)點都有兩個以太網端口,一個和外部網絡相連,負責接收客戶端的請求數據包;另一個和內部網絡相連,負責和后端服務器系統(tǒng)通信;2)當有客戶端請求數據包到來的時候,負載均衡系統(tǒng)中的負載均衡器節(jié)點根據后端服務器節(jié)點的負載和存活狀況來選定請求數據包的發(fā)送目的地,即將數據包的目的MAC地址修改為選定的后端服務器節(jié)點的MAC地址,然后將該數據包分發(fā)給該后端服務器節(jié)點;3)負載均衡器節(jié)點和后端服務器節(jié)點至少有一個網卡是在同一網段內,以保證通過修改數據包的目的MAC地址就能夠使數據包到達目的后端服務器節(jié)點;4)把所有負載均衡器節(jié)點的對內IP地址和后端服務器節(jié)點的IP地址信息寫在配置文件中,保存在負載均衡系統(tǒng)的控制臺中;5)在負載均衡系統(tǒng)的控制臺上,管理員分別對負載均衡器節(jié)點和后端服務器節(jié)點進行從0開始的連續(xù)整數編號,用這些編號對負載均衡器節(jié)點總數進行取模,如果某臺后端服務器節(jié)點的編號為j,j對負載均衡器總數進行取模,取模結果為i,則將第i臺負載均衡器節(jié)點的對內IP地址作為這臺后端服務器節(jié)點的默認網關地址。通過這種方法將負載均衡器節(jié)點的對內IP地址均衡的作為各臺服務器節(jié)點的默認網關地址;
6)后端服務器節(jié)點處理完客戶端來的請求數據包后,把返回數據轉發(fā)給自己對應的默認網關,也就是對應的負載均衡器節(jié)點;7)當負載衡器節(jié)點是基于Linux操作系統(tǒng)的主機實現(xiàn)時,負載均衡器節(jié)點要修改Linux操作系統(tǒng)內核,允許其接收源IP為自身IP的從外面來的數據包,并在Linux內核中打開自身的轉發(fā)功能,將后端服務器節(jié)點發(fā)過來的返回數據包直接轉發(fā)到外網;8)當有負載均衡器節(jié)點增加或刪除的時候,負載均衡系統(tǒng)的控制臺上的駐守程序會自動修改保存的負載均衡器節(jié)點的對內IP地址信息表,然后進行重新取模,對后端服務器節(jié)點和負載均衡器節(jié)點進行重新劃分,把正常工作的負載均衡器節(jié)點的對內IP重新分給各臺服務器節(jié)點作為他們的默認網關地址,以保證均衡器系統(tǒng)的高可用性和負載均衡;9)當有服務器節(jié)點增加或刪除的時候,管理員要在系統(tǒng)控制臺上重新對后端服務器節(jié)點進行從0開始連續(xù)的整數編號,用新編號對負載均衡器節(jié)點總數進行取模,重新配置服務器節(jié)點的默認網關。
通過采用以上方法,本發(fā)明具有以下技術效果1、雙向負載均衡本系統(tǒng)既可以對請求數據包進行負載均衡,當返回數據包經過負載均衡系統(tǒng)返回時,又可以對返回數據包進行負載均衡,從而可以更好的提高服務器系統(tǒng)的負載均衡效果。
2、高性能在進行正向負載均衡時,是通過修改數據包的目的MAC地址來把數據包分發(fā)給后端服務器節(jié)點的;在進行反向負載均衡時,是通過設置服務器節(jié)點網關地址的方式,其實質也是通過修改數據包的目的MAC地址來實現(xiàn)。與NAT機制相比較,不需要對數據包進行網絡地址轉換,負載均衡系統(tǒng)的開銷比較小,從而提高了服務器系統(tǒng)的性能。
3、高可用性當有負載均衡器節(jié)點失效時,可以通過動態(tài)的修改后端服務器節(jié)點的網關地址為正常工作的負載均衡器節(jié)點的對內IP地址來把任務進行遷移,從而實現(xiàn)了高可用功能。
4、安全性請求和返回數據包都經過負載均衡系統(tǒng),整個多機服務器系統(tǒng)內部服務器節(jié)點對外網是屏蔽的,與DR(Direct Routing)機制(策略)相比較,可以更有效地保證整個多機服務器系統(tǒng)的安全性。
5、可擴展性整個服務器系統(tǒng)可以根據需要動態(tài)的添加或刪除負載均衡器節(jié)點的數量以達到最好的性價比。
圖1為本發(fā)明進行正向負載均衡時的工作原理示意圖。
圖2為本發(fā)明進行反向負載均衡時的工作原理示意圖。
圖3為本發(fā)明進行負載均衡的時候,數據包中的地址、端口號的轉換圖。
圖4為對所有的服務器節(jié)點進行網關劃分的拓撲圖。
圖5為對服務池分別進行網關劃分的拓撲圖。
附圖是本發(fā)明的具體實施用例。
下面結合附圖對本發(fā)明的內容作進一步詳細說明。
具體實施例方式
參照圖1所示,負載均衡系統(tǒng)由多臺均衡器節(jié)點組成,每臺均衡器節(jié)點都有兩個以太網端口,一個和外部網絡相連,負責接收客戶端的請求數據包;一個和內網相連,負責和后端服務器系統(tǒng)通信。圖中的虛直線是進行正向負載均衡的地方。從圖1中可以看出在進行正向負載均衡的時候,均衡器節(jié)點i(i∈0~n)是通過修改數據包的目的MAC地址來實現(xiàn)數據包的分發(fā)的。從客戶端來的請求數據包在經過負載均衡系統(tǒng)時,負載均衡器節(jié)點i(i∈0~n)根據預先設定好的均衡算法決定該請求應該被發(fā)至哪臺服務器節(jié)點j(j∈0~m)來處理,然后修改其目的MAC地址為選定的服務器節(jié)點j(j∈0~m)的MAC地址并將其轉發(fā)出去。
參照圖2所示,圖中的虛直線就是進行反向負載均衡的地方。在進行反向負載均衡的時候,是通過設置服務器節(jié)點j(j∈0~m)的網關地址為均衡器節(jié)點i(i∈0~n)的對內IP地址來實現(xiàn)的。返回數據包從服務器節(jié)點j(j∈0~m)輸出時被轉發(fā)到該服務器節(jié)點j(j∈0~m)的網關地址所對應的均衡器節(jié)點i(i∈0~n)上,然后被均衡器節(jié)點i(i∈0~n)轉發(fā)給客戶端。
參照圖3所示,Cip指的是客戶端IP,Vip指的是負載均衡系統(tǒng)統(tǒng)一對外部網絡提供的IP,一般稱為單一IP或虛擬IP;Cport指的是客戶端的(網絡)端口號,Vport指的是目的端口號;Vmac指的是負載均衡系統(tǒng)統(tǒng)一對外提供的虛擬MAC地址,Rmac指的是選定的后端服務器節(jié)點的MAC地址,Gmac指的是后端服務器節(jié)點的網關的MAC地址,也就是對應的均衡器節(jié)點的對內網卡的MAC地址。從圖3中可以看出,負載均衡系統(tǒng)中的均衡器節(jié)點收到客戶端的請求數據包,在進行正向負載均衡的時候,數據包的目的MAC地址被修改為選定的服務器節(jié)點的MAC地址;服務器節(jié)點的返回數據包,在進行反向負載均衡的時候,數據包的目的MAC地址被修改為服務器的網關地址也就是對應的均衡器節(jié)點的MAC地址。
參照圖4所示,把服務器節(jié)點放在一起統(tǒng)一對均衡器節(jié)點臺數進行取模,以此來均衡的劃分服務器節(jié)點網關。圖中假設有n臺均衡器節(jié)點,編號為0-n-1;有(k+1)n臺服務器節(jié)點,通過取模進行劃分后的結果如圖所示編號為0、n……kn的服務器節(jié)點劃分給了編號為0的均衡器節(jié)點;編號為1、n+1……kn+1的服務器節(jié)點劃分給了編號為1的均衡器節(jié)點;編號為n-1、2n-1……kn+n-1的服務器節(jié)點劃分給了編號為n-1的均衡器節(jié)點。劃分的目的是使每臺均衡器承擔相對均等的任務。
參照圖5所示,后端服務器系統(tǒng)是由很多個提供不同服務的服務池所組成。這時需要對服務池分別進行劃分,就是把每個服務池分別按照附圖4所示的方法來進行劃分,為避免服務池中服務器節(jié)點少時出現(xiàn)均衡器負載不均衡情況,采用服務池和服務池內服務器節(jié)點兩級劃分策略。
本發(fā)明提供的雙向負載均衡機制包括正向負載均衡和反向負載均衡,正向負載均衡指的是對上行請求數據包(客戶端到服務器端的請求數據包)進行負載均衡,通過負載均衡系統(tǒng)把請求按預先設定的策略均衡地分發(fā)給各臺服務器節(jié)點;反向負載均衡指的是把從服務器節(jié)點處理后返回的數據包均衡的分發(fā)到各臺負載均衡器節(jié)點上,然后經負載均衡器節(jié)點返回給客戶端。本方法用于要求請求和返回數據包都要經過負載均衡系統(tǒng)的情況。
負載均衡系統(tǒng)中,當有負載均衡器節(jié)點失效的時候,會對整個多機系統(tǒng)產生影響,本發(fā)明提供的通過動態(tài)修改后端服務器節(jié)點的網關地址使其重新定向到其它任何正常工作的負載均衡器節(jié)點的方法可以很好的解決這個問題,在保證高可用的同時,還把失效節(jié)點的負載平均分攤到其它負載均衡節(jié)點上進行處理,避免了傳統(tǒng)的由備份節(jié)點完全接管失效節(jié)點的任務而導致負載全部加在備份節(jié)點上的情況。
本發(fā)明中提供的數據包傳輸方式是在進行正向負載均衡的時候,負載均衡器節(jié)點修改數據包的目的MAC地址;在進行反向負載均衡的時候,則是采用服務器節(jié)點設置網關的方式。修改數據包的目的MAC地址系統(tǒng)開銷很小;負載均衡器節(jié)點作為后端服務器節(jié)點的網關,在數據包經過時只是做簡單的判斷就把數據包轉發(fā)出去,系統(tǒng)開銷同樣很小。這樣,可以使整個多機服務器系統(tǒng)具有較高的訪問性能。
本發(fā)明的雙向負載均衡機制支持可擴展性??蓴U展性是指通過增加資源以滿足不斷增長的對性能和功能的要求,或者是通過縮減資源,以降低成本。系統(tǒng)的總服務能力應該隨著資源的增加而按照比例增加。理想的情況是,增長的速度是線性的。成本的增加應該小于N(N指重復資源的個數)或者NlogN的一個線性系數。本發(fā)明的負載均衡機制中,負載均衡器節(jié)點的數量可以隨需求進行動態(tài)的增加和刪除,系統(tǒng)的性能與負載均衡器節(jié)點的數量成近似線性關系。
本發(fā)明是通過以下方式實現(xiàn)的從客戶端來的請求數據包,在進行正向負載均衡的時候,負載均衡器節(jié)點通過修改數據的目的MAC地址直接將其轉發(fā)給后端服務器節(jié)點,不用經過網絡地址轉換;為了使返回給客戶端的數據包能夠經過負載均衡器節(jié)點轉發(fā)出去,在多機系統(tǒng)的控制臺上保存有負載均衡器節(jié)點和后端服務器節(jié)點的信息列表,按照管理員設定好的負載均衡算法,控制臺駐守的劃分程序對服務器節(jié)點進行網關劃分,使服務器節(jié)點盡量均衡的對應到各負載均衡器節(jié)點上,然后根據計算好的對應關系來設置后端服務器節(jié)點的默認網關,這樣,從后端服務器節(jié)點返回的數據包就被轉發(fā)到其默認網關上,也就是對應的負載均衡器節(jié)點上了。與此同時,控制臺管理監(jiān)控程序同時監(jiān)控各臺負載均衡器節(jié)點和后端服務器節(jié)點的狀態(tài),以此來動態(tài)的修改服務器節(jié)點和負載均衡器節(jié)點間的對應關系,保證其高可用性。
由于在進行正向負載均衡時是通過直接修改數據包的目的MAC地址來實現(xiàn)的,在進行反向負載均衡時是把負載均衡器節(jié)點作為后端服務器節(jié)點的默認網關的,所以要求負載均衡器節(jié)點和服務器節(jié)點至少有一個端口是在同一網段內。這樣才能保證訪問服務器系統(tǒng)的數據包能夠經過負載均衡器節(jié)點到達服務器節(jié)點,并且確保返回的數據包能夠經過負載均衡器節(jié)點轉發(fā)出去。
在進行正向負載均衡的時候,為了把訪問數據包均衡的分發(fā)給后端服務器節(jié)點,可以采用多種負載均衡算法,比如輪詢法,最小連接數法等。
在進行反向負載均衡的時候,為了把返回數據包均衡的分發(fā)給各臺負載均衡器節(jié)點,需要劃分好后端服務器節(jié)點和負載均衡器節(jié)點的對應關系,具體的劃分方法如下假設負載均衡器節(jié)點有n臺,后端服務器節(jié)點有m臺(m>n),負載均衡器節(jié)點的編號為0、1……n-1,后端服務器節(jié)點的編號為0、1……m-1,則劃發(fā)算法可以通過下面方法來實現(xiàn)將后端服務器節(jié)點的編號對n取模,如果模值為i(0=<i<=n-1),則將第i臺負載均衡器節(jié)點的對內IP地址設置為該服務器節(jié)點的默認網關地址。
當有負載均衡器節(jié)點失效時,為了保證高可用性,需要重新設定后端服務器節(jié)點的網關,重新設定后仍然要保證負載均衡起作用。重新劃分方法如下當編號為i的負載均衡器節(jié)點失效時,需要將該負載均衡器節(jié)點從系統(tǒng)中剔除,現(xiàn)在負載均衡器節(jié)點的總數是n-1,對剩下的負載均衡器節(jié)點重新從0開始進行連續(xù)的編號,然后重新將后端服務器節(jié)點的編號對n-1取模,以此來重新配置后端服務器節(jié)點的默認網關地址。還可以通過把編號為i的負載均衡器節(jié)點所對應的服務器節(jié)點重新和其它負載均衡器節(jié)點對應,而其它的服務器節(jié)點不再重新改動以此來提高效率,也就是當編號為i的負載均衡器節(jié)點失效時,將該負載均衡器節(jié)點所對應的后端服務器節(jié)點重新劃分給其它負載均衡器節(jié)點。
為了實現(xiàn)可擴展性,當需要增加負載均衡器節(jié)點時,同樣需要進行重新劃分,算法如下當已有n臺負載均衡器節(jié)點,且需新增加一臺時,給其編號為n,負載均衡器總數現(xiàn)在是n+1,然后重新將后端服務器節(jié)點的編號對n+1取模,以此來重新配置后端服務器節(jié)點的默認網關地址。還可以通過把和原來的n臺負載均衡器節(jié)點對應的服務器節(jié)點取出一些重新對應到新加入的這臺負載均衡器節(jié)點上,而其它服務器節(jié)點不再重新改動以此來提高效率。也就是當新增加一臺負載均衡器節(jié)點時,給其編號為n,然后把后端服務器節(jié)點取出(m/n+1)(向下取整)臺劃分給該新加入的負載均衡器節(jié)點,也就是在原來的n臺負載均衡器節(jié)點中,從每臺所對應的服務器節(jié)點中取出(m/n*(n+1))(向下取整)臺來,使其重新對應到新加入的負載均衡器節(jié)點上,重新修改其默認網關地址。
若負載衡器節(jié)點是基于Linux操作系統(tǒng)的主機實現(xiàn)的,則處理返回數據包時,需要在LINUX操作系統(tǒng)內核中打開自己的數據轉發(fā)功能來保證對目的IP不是自身IP的數據包進行轉發(fā)。
權利要求
1.一種多機服務器系統(tǒng)中雙向負載均衡機制的實現(xiàn)方法,其特征在于,按如下步驟進行1)在由很多臺計算機所構成的多機服務器系統(tǒng)中,用一臺或多臺負載均衡器節(jié)點組成負載均衡系統(tǒng),每臺均衡器節(jié)點都有兩個以太網端口,一個和外部網絡相連,負責接收客戶端的請求數據包;另一個和內部網絡相連,負責和后端服務器系統(tǒng)通信;2)當有客戶端請求數據包到來的時候,負載均衡系統(tǒng)中的負載均衡器節(jié)點根據后端服務器節(jié)點的負載和存活狀況來選定請求數據包的發(fā)送目的地,即將數據包的目的MAC地址修改為選定的后端服務器節(jié)點的MAC地址,然后將該數據包分發(fā)給該后端服務器節(jié)點;3)負載均衡器節(jié)點和后端服務器節(jié)點至少有一個網卡是在同一網段內,以保證通過修改數據包的目的MAC地址就能夠使數據包到達目的后端服務器節(jié)點;4)把所有負載均衡器節(jié)點的對內IP地址和后端服務器節(jié)點的IP地址信息寫在配置文件中,保存在負載均衡系統(tǒng)的控制臺中;5)在負載均衡系統(tǒng)的控制臺上,管理員分別對負載均衡器節(jié)點和后端服務器節(jié)點進行從0開始的連續(xù)整數編號,用這些編號對負載均衡器節(jié)點總數進行取模,如果某臺后端服務器節(jié)點的編號為j,j對負載均衡器總數進行取模,取模結果為i,則將第i臺負載均衡器節(jié)點的對內IP地址作為這臺后端服務器節(jié)點的默認網關地址。通過這種方法將負載均衡器節(jié)點的對內IP地址均衡的作為各臺服務器節(jié)點的默認網關地址;6)后端服務器節(jié)點處理完客戶端來的請求數據包后,把返回數據轉發(fā)給自己對應的默認網關,也就是對應的負載均衡器節(jié)點;7)當負載衡器節(jié)點是基于Linux操作系統(tǒng)的主機實現(xiàn)時,負載均衡器節(jié)點要修改Linux操作系統(tǒng)內核,允許其接收源IP為自身IP的從外面來的數據包,并在Linux內核中打開自身的轉發(fā)功能,將后端服務器節(jié)點發(fā)過來的返回數據包直接轉發(fā)到外網;8)當有負載均衡器節(jié)點增加或刪除的時候,負載均衡系統(tǒng)的控制臺上的駐守程序會自動修改保存的負載均衡器節(jié)點的對內IP地址信息表,然后進行重新取模,對后端服務器節(jié)點和負載均衡器節(jié)點進行重新劃分,把正常工作的負載均衡器節(jié)點的對內IP重新分給各臺服務器節(jié)點作為他們的默認網關地址,以保證均衡器系統(tǒng)的高可用性和負載均衡;9)當有服務器節(jié)點增加或刪除的時候,管理員要在系統(tǒng)控制臺上重新對后端服務器節(jié)點進行從0開始連續(xù)的整數編號,用新編號對負載均衡器節(jié)點總數進行取模,重新配置服務器節(jié)點的默認網關。
全文摘要
本發(fā)明提供一種多機服務器系統(tǒng)中雙向負載均衡機制的實現(xiàn)方法,用一臺或多臺負載均衡器節(jié)點組成負載均衡系統(tǒng)與外網相連,請求和返回數據包都經過負載均衡系統(tǒng),將系統(tǒng)內部服務器節(jié)點對外屏蔽,使服務器系統(tǒng)具有較好的安全性;同時,負載均衡器節(jié)點負責對客戶端來的請求進行負載均衡,在對請求進行負載均衡的時候,通過修改數據包的目的MAC地址來進行數據包的分發(fā),可以很好的提高性能;返回數據包在經過負載均衡系統(tǒng)的時候,同樣被均衡地分發(fā)到各負載均衡器節(jié)點,使整個服務器系統(tǒng)具有雙向負載均衡的功能;當有負載均衡器節(jié)點發(fā)生故障的時候,可以通過把請求數據包和返回數據包遷移到其它負載均衡器節(jié)點上來實現(xiàn)高可用性。
文檔編號H04Q11/00GK1859313SQ20061004276
公開日2006年11月8日 申請日期2006年4月30日 優(yōu)先權日2006年4月30日
發(fā)明者伍衛(wèi)國, 董小社, 付重欽, 錢德沛, 王恩東, 胡雷鈞, 王守昊 申請人:西安交通大學, 浪潮(北京)電子信息產業(yè)有限公司