一種支持負(fù)載均衡的自組織集群服務(wù)器實(shí)現(xiàn)方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種運(yùn)行大型互聯(lián)網(wǎng)應(yīng)用程序的服務(wù)器裝置,尤其是同時(shí)運(yùn)行多個(gè)互聯(lián)網(wǎng)應(yīng)用,自動(dòng)實(shí)現(xiàn)負(fù)載均衡和節(jié)點(diǎn)管理的集群服務(wù)器。
【背景技術(shù)】
[0002]集群服務(wù)器主要用于運(yùn)行大型互聯(lián)網(wǎng)應(yīng)用,如大型網(wǎng)站、郵件系統(tǒng)、視頻服務(wù)等。這些應(yīng)用計(jì)算量很大,單臺(tái)物理服務(wù)器難以承擔(dān),需要采用集群服務(wù)器。目前,集群服務(wù)器由兩臺(tái)互為備份的負(fù)載均衡設(shè)備和多臺(tái)物理服務(wù)器組成。用戶業(yè)務(wù)請求全部發(fā)給負(fù)載均衡設(shè)備,再由負(fù)載均衡設(shè)備分派給物理服務(wù)器處理。這種架構(gòu)不適合超大型的集群服務(wù)器,因?yàn)樨?fù)載均衡設(shè)備將成為集群服務(wù)器的瓶頸,制約了集群服務(wù)器規(guī)模的擴(kuò)展,同時(shí)也不適合小型集群服務(wù)器,因?yàn)樨?fù)載均衡設(shè)備不參與業(yè)務(wù)處理,備用的負(fù)載均衡設(shè)備更是處于空閑狀態(tài),對一個(gè)只有2-3臺(tái)物理服務(wù)器的集群服務(wù)器來說,負(fù)載均衡設(shè)備投資偏大。
[0003]兩臺(tái)互為備份的負(fù)載均衡設(shè)備上需要運(yùn)行心跳軟件,備用負(fù)載均衡設(shè)備實(shí)時(shí)檢測主設(shè)備的運(yùn)行狀態(tài),一旦發(fā)現(xiàn)主設(shè)備故障,馬上啟動(dòng)本地進(jìn)程,接管業(yè)務(wù)調(diào)度職能。還有,負(fù)載均衡設(shè)備也需要運(yùn)行物理服務(wù)器檢測程序,一旦發(fā)現(xiàn)故障,馬上停止向故障服務(wù)器分派業(yè)務(wù)。可見,一般的集群服務(wù)器需要多套工具軟件配合,實(shí)施部署難度較大。
[0004]負(fù)載均衡設(shè)備不能自動(dòng)發(fā)現(xiàn)物理服務(wù)器,需要事前把所有物理服務(wù)器參數(shù)配置到負(fù)載均衡設(shè)備上。如果業(yè)務(wù)運(yùn)行中需要增加物理服務(wù)器,必須修改和測試負(fù)載均衡設(shè)備的相應(yīng)配置,難以實(shí)現(xiàn)在線快速業(yè)務(wù)擴(kuò)容,運(yùn)行維護(hù)復(fù)雜度較高。
【發(fā)明內(nèi)容】
[0005]為了克服現(xiàn)有集群服務(wù)器需要集成負(fù)載均衡設(shè)備,心跳軟件和節(jié)點(diǎn)檢測程序而導(dǎo)致的投資大,擴(kuò)展性差,實(shí)施和維護(hù)困難等不足,本發(fā)明提供一種自組織集群服務(wù)器,自組織集群服務(wù)器不僅僅能自動(dòng)發(fā)現(xiàn)節(jié)點(diǎn)的加入和離開,不需要其它心跳軟件和節(jié)點(diǎn)檢測程序的配合,而且能實(shí)現(xiàn)內(nèi)部的負(fù)載均衡和冗余備份,不需要專用負(fù)載均衡設(shè)備配合。
[0006]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:自組織集群服務(wù)器自動(dòng)發(fā)現(xiàn)鄰居節(jié)點(diǎn)的加入、離開和狀態(tài)變化,動(dòng)態(tài)選舉管理接入點(diǎn)和業(yè)務(wù)接入點(diǎn),由管理接入點(diǎn)向網(wǎng)管系統(tǒng)提供統(tǒng)一的系統(tǒng)管理接口,由業(yè)務(wù)接入點(diǎn)向用戶提供統(tǒng)一的業(yè)務(wù)訪問接口,并把業(yè)務(wù)均勻分配到每個(gè)節(jié)點(diǎn)上,從而實(shí)現(xiàn)集群服務(wù)器內(nèi)部的負(fù)載均衡和冗余備份,解決現(xiàn)有集群服務(wù)器需要部署專用負(fù)載均衡設(shè)備和心跳軟件的問題,簡化系統(tǒng)的安裝和維護(hù)。
[0007]如圖1所示,自組織集群服務(wù)器以節(jié)點(diǎn)形式管理物理服務(wù)器,并分為管理節(jié)點(diǎn)、業(yè)務(wù)節(jié)點(diǎn)、從動(dòng)節(jié)點(diǎn)等不同角色。管理節(jié)點(diǎn)是負(fù)責(zé)自組織集群服務(wù)器系統(tǒng)管理的節(jié)點(diǎn)。管理節(jié)點(diǎn)上用于收發(fā)網(wǎng)管信息的網(wǎng)絡(luò)端口叫管理接入點(diǎn),用于收發(fā)網(wǎng)管信息的IP地址叫集群IP,同時(shí)也對應(yīng)自組織集群服務(wù)器域名IP地址。自組織集群服務(wù)器只有一個(gè)管理節(jié)點(diǎn)和一個(gè)管理接入點(diǎn)。業(yè)務(wù)節(jié)點(diǎn)是負(fù)責(zé)接收業(yè)務(wù)請求的節(jié)點(diǎn)。業(yè)務(wù)節(jié)點(diǎn)上用于接收業(yè)務(wù)請求的網(wǎng)絡(luò)端口叫業(yè)務(wù)接入點(diǎn),用于接收業(yè)務(wù)請求的IP地址叫業(yè)務(wù)IP,同時(shí)也對應(yīng)業(yè)務(wù)域名IP地址。自組織集群服務(wù)器有一個(gè)或多個(gè)業(yè)務(wù)節(jié)點(diǎn),業(yè)務(wù)節(jié)點(diǎn)有一個(gè)或多個(gè)業(yè)務(wù)接入點(diǎn)。從動(dòng)節(jié)點(diǎn)是協(xié)助業(yè)務(wù)節(jié)點(diǎn)處理業(yè)務(wù)請求的節(jié)點(diǎn)。如果沒有選舉為管理節(jié)點(diǎn)或業(yè)務(wù)節(jié)點(diǎn)的節(jié)點(diǎn)自動(dòng)成為從動(dòng)節(jié)點(diǎn)。
[0008]如圖2所示,自組織集群服務(wù)器通過主動(dòng)發(fā)送和監(jiān)聽節(jié)點(diǎn)狀態(tài)報(bào)文來發(fā)現(xiàn)鄰居節(jié)點(diǎn)的加入、離開以及節(jié)點(diǎn)狀態(tài)的變化。節(jié)點(diǎn)通過組播方式定期發(fā)送本地節(jié)點(diǎn)的狀態(tài)信息,包括節(jié)點(diǎn)名字、業(yè)務(wù)負(fù)載情況和有效網(wǎng)絡(luò)鏈路參數(shù)等,以此向其它節(jié)點(diǎn)宣告本地節(jié)點(diǎn)的存在。同時(shí)節(jié)點(diǎn)監(jiān)聽其它節(jié)點(diǎn)發(fā)出的狀態(tài)報(bào)文,從而發(fā)現(xiàn)鄰居節(jié)點(diǎn)的存在,并掌握鄰居節(jié)點(diǎn)的加入、離開、業(yè)務(wù)負(fù)載變化、鏈路狀態(tài)變化的動(dòng)態(tài)信息。為減少鄰居節(jié)點(diǎn)發(fā)現(xiàn)程序的性能開銷,自組織集群服務(wù)器不采用握手方式建立鄰居關(guān)系,而通過連續(xù)監(jiān)聽方式確保所有節(jié)點(diǎn)狀態(tài)信息的同步。
[0009]如圖3所示,自組織集群服務(wù)器根據(jù)一定的管理接入點(diǎn)選舉算法確定本地節(jié)點(diǎn)是否管理節(jié)點(diǎn),如果是則通過組播方式主動(dòng)向其它節(jié)點(diǎn)宣告本地節(jié)點(diǎn)是管理節(jié)點(diǎn),以及管理接入點(diǎn)對應(yīng)哪條網(wǎng)絡(luò)鏈路,如果管理節(jié)點(diǎn)不是本地節(jié)點(diǎn),則不作任何處理。當(dāng)有新節(jié)點(diǎn)加入或故障節(jié)點(diǎn)離開時(shí),每個(gè)節(jié)點(diǎn)所掌握的鄰居狀態(tài)不完全同步,計(jì)算出來的管理節(jié)點(diǎn)可能不一樣,導(dǎo)致多個(gè)節(jié)點(diǎn)爭相成為管理節(jié)點(diǎn)。為避免沖突,同時(shí)選擇最優(yōu)管理節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)采用退讓方式,即使節(jié)點(diǎn)認(rèn)為本地節(jié)點(diǎn)是管理節(jié)點(diǎn),但監(jiān)聽到其它節(jié)點(diǎn)主動(dòng)申請成為管理節(jié)點(diǎn)時(shí),均主動(dòng)放棄管理節(jié)點(diǎn)角色。
[0010]如圖4所示,在本地節(jié)點(diǎn)和所有鄰居節(jié)點(diǎn)之間選舉帶寬最小的節(jié)點(diǎn)作為管理節(jié)點(diǎn),并在管理節(jié)點(diǎn)中選舉帶寬最小的鏈路作為管理接入點(diǎn)。該選舉算法主要避免系統(tǒng)管理開銷占用高性能節(jié)點(diǎn)的資源。管理接入點(diǎn)的具體選舉算法如下所述:
第一步,在所有節(jié)點(diǎn)中選擇有效總帶寬最小的節(jié)點(diǎn),如果只有一個(gè)符合條件的節(jié)點(diǎn)則直接跳到第三步;
第二步,在選出節(jié)點(diǎn)中進(jìn)一步選擇網(wǎng)絡(luò)鏈路IP最小的節(jié)點(diǎn),如果節(jié)點(diǎn)存在多個(gè)有效鏈路IP,則以最小鏈路IP比較;
第三步,以選中節(jié)點(diǎn)作為管理節(jié)點(diǎn);
第四步,在管理節(jié)點(diǎn)中選擇帶寬最小的有效鏈路,如果只有一條符合條件的鏈路則直接跳到第六步;
第五步,在選出鏈路中進(jìn)一步選擇IP最小的鏈路,如果鏈路存在多個(gè)有效鏈路IPJU以最小IP比較;
第六步,以選中鏈路作為管理接入點(diǎn)。
[0011]如圖5所示,自組織集群服務(wù)器可以同時(shí)運(yùn)行多個(gè)業(yè)務(wù),每個(gè)業(yè)務(wù)綁定一個(gè)業(yè)務(wù)接入點(diǎn)。節(jié)點(diǎn)根據(jù)一定的業(yè)務(wù)接入點(diǎn)選舉算法為每個(gè)業(yè)務(wù)選舉對應(yīng)的業(yè)務(wù)接入點(diǎn),并確定本地節(jié)點(diǎn)是否業(yè)務(wù)節(jié)點(diǎn),如果是則通過組播方式主動(dòng)向其它節(jié)點(diǎn)宣告本地節(jié)點(diǎn)擁有哪幾個(gè)業(yè)務(wù)的業(yè)務(wù)接入點(diǎn),以及業(yè)務(wù)接入點(diǎn)對應(yīng)哪條鏈路,如果本地節(jié)點(diǎn)沒有業(yè)務(wù)接入點(diǎn),則不作任何處理。當(dāng)有新節(jié)點(diǎn)加入或故障節(jié)點(diǎn)離開時(shí),每個(gè)節(jié)點(diǎn)所掌握的鄰居狀態(tài)不完全同步,計(jì)算出來的業(yè)務(wù)接入點(diǎn)可能不一樣,導(dǎo)致多個(gè)節(jié)點(diǎn)爭相成為同一個(gè)業(yè)務(wù)的業(yè)務(wù)節(jié)點(diǎn)。為避免沖突,同時(shí)選擇最優(yōu)業(yè)務(wù)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)采用退讓方式,即使節(jié)點(diǎn)認(rèn)為本地節(jié)點(diǎn)是某個(gè)業(yè)務(wù)的業(yè)務(wù)節(jié)點(diǎn),但監(jiān)聽到其它節(jié)點(diǎn)主動(dòng)申請成為該業(yè)務(wù)的業(yè)務(wù)節(jié)點(diǎn)時(shí),均主動(dòng)放棄該業(yè)務(wù)的業(yè)務(wù)節(jié)點(diǎn)角色。
[0012]如圖6所示,在本地節(jié)點(diǎn)和所有鄰居節(jié)點(diǎn)(包括已經(jīng)成為管理節(jié)點(diǎn)的節(jié)點(diǎn))之間為每一個(gè)業(yè)務(wù)選舉負(fù)載最輕、帶寬最大的節(jié)點(diǎn)作為業(yè)務(wù)節(jié)點(diǎn),并在業(yè)務(wù)節(jié)點(diǎn)中選舉負(fù)載最輕、帶寬最大的鏈路作為業(yè)務(wù)接入點(diǎn)。該選舉算法主要讓業(yè)務(wù)均勻分布在所有節(jié)點(diǎn)中,并充分發(fā)揮高性能節(jié)點(diǎn)的作用。業(yè)務(wù)接入點(diǎn)的具體選舉算法如下所述:
第一步,在所有節(jié)點(diǎn)中選擇已有業(yè)務(wù)接入點(diǎn)最少的節(jié)點(diǎn),如果只有一個(gè)符合條件的節(jié)點(diǎn)則直接跳到第四步;
第二步,在選中節(jié)點(diǎn)中進(jìn)一步選擇有效總帶寬最大的節(jié)點(diǎn),如果只有一個(gè)符合條件的節(jié)點(diǎn)則直接跳到第四步;
第三步,在選出節(jié)點(diǎn)中進(jìn)一步選擇網(wǎng)絡(luò)鏈路IP最大的節(jié)點(diǎn),如果節(jié)點(diǎn)存在多個(gè)有效鏈路IP,則以最大鏈路IP比較;
第四步,以選中節(jié)點(diǎn)作為業(yè)務(wù)節(jié)點(diǎn);
第五步,在業(yè)務(wù)節(jié)點(diǎn)中選擇綁定業(yè)務(wù)接入點(diǎn)最少的可用鏈路,如果只有一條符合條件的鏈路則直接跳到第八步;
第六步,在選出鏈路中進(jìn)一步選擇帶寬最大的鏈路,如果只有一條符合條件的鏈路則直接跳到第八步;
第七步,在選出鏈路中進(jìn)一步選擇IP最大的鏈路,如果鏈路存在多個(gè)有效鏈路IPJU以最大IP比較;
第八步,以選中鏈路作為業(yè)務(wù)接入點(diǎn)。
[0013]如圖7所示,自組織集群服務(wù)器可以在各節(jié)點(diǎn)之