專利名稱:機群自適應的控制方法
技術領域:
本發明涉及計算機機群的控制方法,尤其涉及一種機群自適應控制的方法,屬于計算機軟件領域。
背景技術:
隨著機群系統應用的蓬勃發展,機群規模也越來越大,如何方便地管理機群系統也變得越來越重要。機群系統對于外部客戶來說應該是一個高性能的機器。因此,整個機群系統的服務不能因為一部分節點沒有啟動而不能工作,不能因為節點機啟動順序不正確而不能工作,也不能因為一部分節點機出故障了而不能工作。同時,也希望可以自由地增加節點機到機群系統里來提高機群系統的服務性能,或者從機群系統里切除一些節點機。并且希望這些操作都不需要中斷機群系統所提供的服務。
目前大部分的高可用產品都需要管理員干預啟動不同的節點或啟動不同的服務,由于各節點啟動的時間可能不同,如果所有節點必須人工干預啟動順序,管理一個比較大的機群對管理員來說是個很大的工作量。
當機群中的節點出現故障時,現有的大部分產品能實現服務的接管,但是對于該節點恢復正常時,一般是將該節點作為備份機。
發明內容
本發明的主要目的在于提供一種機群自適應控制的方法,可以在不中斷機群系統所提供服務的前提下,執行對故障節點處理、加入新節點等操作,可以提高機群系統的可用性,方便機群系統的管理。
本發明的目的是這樣實現的一種機群自適應的控制方法,至少包括節點的啟動、節點的切除及故障節點自動接管的方法。
所述的節點啟動具體包括步驟1機群節點在啟動時,試圖跟輔助主節點和主節點聯系,請求加入機群系統;步驟2如果非候選控制節點首先啟動并請求加入,將該非候選控制節點退出加入過程并等待重新加入;步驟3使最先加入機群的候選控制節點成為主節點與輔助主節點;步驟4主節點根據配置文件,啟動所有本節點可啟動的服務。
所述的節點啟動還進一步包括當多個候選控制節點同時啟動并競爭主節點與輔助主節點時,首先使主節點與輔助主節點運行在同一節點上;然后將新加入的候選控制節點設定為輔助主節點,并將原主節點上的輔助主節點遷移到該新加入的輔助主節點上。
所述的節點啟動還進一步包括當默認的主節點已經啟動,且當前的主節點不是默認的主節點時,則根據系統配置,將主節點遷移或不遷移到默認的主節點上。
當機群中主節點和輔助主節點以外的節點與主節點和輔助主節點進行通信時,首先與輔助主節點通信,然后再與主節點通信,用于保證主節點和輔助主節點保存的全局狀態信息的一致。
非控制節點啟動時,首先控制節點聯系,該控制節點告知其位置和角色信息;然后控制節點根據配置文件和當前的系統運行情況,為新啟動的節點配置應啟動的服務。
節點的位置和角色信息至少包括該節點的上、下游節點,以及是否為組長節點。
節點啟動的服務為非可接管的服務,則直接啟動,否則執行如下的步驟步驟100如果該啟動節點是該服務的默認服務節點,則進一步判斷該服務是否啟動;否則執行步驟103;步驟101如果該服務已經啟動,則將該服務遷移至該啟動節點,結束;步驟102在該啟動節點上啟動該服務,結束;步驟103如果該啟動節點是該服務的默認備份服務節點,則進一步判斷該服務是否啟動;否則結束;步驟104如果該服務沒有啟動,則在該啟動節點上啟動該服務,結束;步驟105如果該服務在默認的服務節點或備份服務節點上已經啟動,則將該服務遷移到該啟動節點上,結束;否則結束。
所述的接管為在新選擇上的節點上運行相應的服務,且控制節點修改全局信息。
所述的故障節點的自動接管至少包括控制節點接收故障節點下游節點發送的信息,并查看當前機群系統的全局狀態信息,修改故障節點的上下游節點的位置信息和/或角色信息,然后根據故障節點上運行的服務類型進行處理。
處理至少包括對故障節點上運行的服務類型進行分析,如果該服務為非可接管的服務,則控制節點直接修改全局信息,在以后的任務分發時,不在向這個節點分發任務;如果該服務為可接管的服務,則將該節點上運行的每一個可接管服務的信息保存在控制節點之中。
所述的服務類型處理至少包括如果故障節點為組長節點,控制節點將該故障節點所在組中的候選控制節點設定為組長節點,或者將報告組長節點故障的節點設定為組長節點。
所述的節點切除至少包括根據被切除節點運行的服務類型為非可接管服務,則控制節點不再向該節點分發新的任務;該服務類型為可接管服務,則控制節點在機群系統內找到相應的節點接管該服務;控制節點切除該被切除節點。
所述的主節點、輔助主節點、組長節點可以在同一節點上,也可以在不同節點上。
本發明所提供的一種機群自適應控制的方法具有如下的特點1、可以使機群系統在開始上電時,先啟動的節點機將運行盡可能多的服務;對于外部來說,機群系統已經可以提供服務了;后啟動的各個節點機自動地獲取服務,啟動服務。如果需要,可能與先啟動的節點機進行一些服務的遷移,從而提高機群系統的服務性能。
2、在機群系統出故障時或者需要切除節點機時,本發明根據這個節點機運行的服務類型,可能把這臺節點機上運行的服務遷移到別的機器上;從而使機群系統所提供的服務不會中斷;當故障節點修復后重新加入機群系統時,本發明會將一些服務遷回到這個節點上,從而使各節點機器負載相對平衡。
3、當往機群系統里增加一個新的節點機時,本發明會根據配置文件,啟動相應的服務;從而提高機群系統的服務性能,或者增加服務種類。
本發明提高了機群系統服務的可用性,對于機群節點的啟動、退出、故障的發生、修復、節點的切除和新節點的增加,本發明都能使機群系統對外提供服務,而不受影響;同時,本發明不需要人工的干預,降低了管理員的工作強度。
圖1為主節點啟動示意圖;圖2為非控制節點加入并接管組長節點功能的示意圖;圖3為新加入的節點接管已有節點可接管服務的流程圖;圖4為機群系統運行時的示意圖;圖5為接管故障節點上可接管服務的流程圖;圖6為節點加入機群的流程圖。
具體實施例方式
以下結合附圖對本發明做進一步的說明參見圖1,目前機群負載信息傳遞采用多個環形的分組,以減小網絡傳輸的開銷。在機群的負載信息傳遞系統中,存在四類節點,主節點M,輔助主節點F,組長節點G及普通節點S,若干節點構成一個邏輯上的環路,成為負載信息傳遞環。
主節點M運行控制部件的全局仲裁節點為主節點M,并且它分析、處理全局狀態信息。運行時決定哪個節點是主節點M,是動態信息。主節點M將匯總整個機群系統中所有節點的信息,并在節點發生故障時采取相應的措施屏蔽故障,并及時根據負載信息調整調整負載均衡器,使各節點的負載趨于均衡。
輔助主節點F運行控制部件的,且對主節點M中的全局狀態信息起備份作用的節點為輔助主節點F。運行時決定哪個節點是輔助主節點F,是動態信息。輔助主節點F為主節點M的備份節點,在主節點M出現故障時及時接替主節點M的工作并重新制定其他的節點為輔助主節點F。
組長節點G每個負載信息傳遞環中各有一個組長節點G,向主節點M匯報自己所在心跳環的所有成員的狀態信息的節點為組長節點G。運行時決定哪個節點是組長節點G,是動態信息。
普通節點S除了主節點M和輔助主節點F外的所有的節點,都是普通節點S。另外,本發明還定義了一些概念,如下所述控制節點已經是主節點M或輔助主節點F的節點為控制節點。
心跳環機群系統內若干個節點從邏輯上組成一個環叫心跳環。
組長節點G向主節點M匯報自己所在心跳環的所有成員的狀態信息的節點為組長節點G。運行時決定哪個節點是組長節點G,是動態信息。
上游節點,下游節點如果節點A向節點B發送狀態信息,則節點A是節點B的上游節點,節點B是節點A的下游節點。
可接管的服務一個服務在機器A上運行,由于故障,不在機器A上運行,而在機器B上運行。
機群節點機群內的節點是指這個節點已經定義在機群的配置文件里面。
一個新節點是指這個節點沒有定義在機群的配置文件里面。
機群系統一個心跳環中的最大節點機數目。
一個已經配置好的機群系統,每個節點已經定下來的屬性有這個節點是不是候選控制節點;這個節點是不是默認的主節點M;這個節點默認啟動那些服務,這些服務的備份節點是哪些;這個節點是哪些服務的備份節點;這個節點運行哪些服務,是不是可接管的服務,如果是,是不是默認的服務器還是默認的備份服務器。
本發明所提供的機群自適應控制方法包括機群啟動控制、故障自動接管、故障修復后重新啟動、機群節點增加和節點切除。
機群的啟動控制包括主節點M的啟動和非控制節點的啟動。
為了提高控制節點的可靠性,本發明設計了主節點M和輔助主節點F。主節點M是真正的控制節點,在主節點上M實時搜集了機群內所有節點的全局狀態信息,輔助主節點F對主節點M中的全局狀態信息進行備份,在主節點M出現故障時及時接替主節點M的工作并重新制定其他的節點為輔助主節點F。
參見圖6,在機群節點的啟動過程中,主節點M與輔助主節點F應是最先加入機群的節點。具體的過程是機群節點在啟動時,試圖跟輔助主節點和主節點聯系,請求加入機群系統。如果非候選控制節點首先啟動并請求加入,則必須退出加入過程并等待重新加入,因為普通節點不具有維護全局狀態信息的能力。為了保證使系統中盡可能快的擁有控制節點,系統將使最先加入機群的候選控制節點成為主節點M與輔助主節點F,如圖1所示。由于此時系統中就它一個節點;此時,控制節點根據配置文件,啟動所有本節點可啟動的服務。現在的情形相當于別的機器都出故障了,只有這臺機器提供機群服務。對外,說明機群系統已經啟動了。比如讓這臺先運行FTP,WEB,EMAIL服務。
由于在啟動候選控制節點時,可能會出現競爭的狀態,即多個節點同時都想成為主節點與輔助主節點,因此必須對啟動控制部件的操作實現“互斥”。開始時,主節點與輔助主節點運行在同一節點上,隨著更多的候選控制節點加入機群,需要將輔助主節點遷移到其它候選控制節點上。所謂將輔助主節點遷移,就是在新的候選控制節點上啟動控制部件,并修改相關的輔助主節點運行位置信息。因為主節點和輔助主節點記錄了全局的所有的信息。
如果默認的主節點已經啟動,而當前的主節點不是默認的主節點。那么應該根據系統配置,決定是否把主節點遷移到默認的主節點上。
每次需要與主節點和輔助主節點通信時,都需要先與輔助主節點通信,然后與主節點通信,可以保證主節點和輔助主節點保存的全局狀態信息的一致性。對外,主節點和輔助主節點以一個節點,即控制節點的面目出現。
非控制節點的啟動就是機群節點的加入。機群節點的加入不同于新節點的加入,因為機群節點在配置文件里面有它相應的信息。而對于新節點的加入,新節點在配置文件里面沒有相應的信息。
機群節點在啟動時,先與控制節點聯系,希望控制節點能告訴它的位置(上游節點,下游節點),角色(是否是組長節點)。圖2是圖1中增加一個節點時,把組長節點的功能遷移到該節點的情況。當普通節點接入到機群系統的心跳環后,控制節點根據配置文件和當前的系統運行情況,告訴剛剛接入的節點機啟動哪些服務程序。如果要啟動非可接管的服務,則直接啟動即可,如果是可接管的服務,則應該按照圖3執行。如圖3所示開始對于機群系統每一個可接管的服務B,首先判斷節點A是否是服務B默認的服務點,如果是服務B默認的服務點,則接著判斷服務B是否已經啟動了,如果已經啟動了,則把服務B遷移到節點A,結束;如果服務B未啟動,則在節點A上啟動服務B,結束;如果不是服務B默認的服務點,則判斷節點A是否是服務B的默認備份服務節點,如果不是,則節點A不接收服務B,結束;如果是,則還需判斷服務B是否已經啟動了,如果服務B未啟動,則在節點A上啟動服務B,結束;如果服務B已經啟動了,結束。
所謂接管就是在新選擇上的節點上運行相應的服務,且控制節點修改全局信息。
圖4是機群系統啟動后的示意圖,此時主節點把輔助主節點的功能也遷移出去了,系統有兩個滿的心跳環組和一個不滿的心跳環組。所謂滿的心跳環組是指這個心跳環內的節點數目已經到達機群中心跳環中的最大節點數目了。
心跳環的工作時,負載信息首先由組長節點發出,下一個節點接收到組長節點的負載信息后,將自身的負載信息負載在后面,又傳遞給下一個節點,依此類推,最終環內所有節點的信息都匯總到了組長節點處,組長節點再將本組中所有節點的負載信息向主節點報告。如果某一個節點在一定的時間內沒有接收到它的上游節點發來的狀態信息,就認為它的上游節點出故障了。然后向控制節點報告這種情況,控制節點查看當前機群系統的全局狀態信息,告訴故障節點的上下游節點,要它們修改自己的上下游節點。然后根據故障節點上運行的服務類型分別處理,如果是非可接管的服務,則控制節點直接修改全局信息,在以后的任務分發時不在向這個節點分發任務;如果是可接管的服務,則按照圖5實現。圖5中節點A上運行的每一個可接管服務的信息保存在控制節點里,當節點A被判斷為故障節點后,主節點根據機群當前的運行情況,找到一個節點C來接管節點A上可接管的服務。
如果發現是組長節點故障了,這個信息可以來自兩個方面1控制節點在一定時間內沒有接收到組長節點的狀態報告信息;2控制節點接收到故障報告時,發現這個故障節點是組長節點。當接收到組長節點故障的消息后,控制節點查看,如果這個環里有候選控制節點的存在,就讓它成為組長節點;或者讓報告組長故障的節點成為組長節點。
讓組長節點是候選控制節點的好處是,當組長節點與控制節點通信,如果發現控制節點已經故障,那么組長節點可以立即成為組長節點。否則,如果組長節點不是候選控制節點,則等待一會兒再去連接。
如果一個故障節點經過修復后重新加入機群系統,可按照圖2所示的機群節點的啟動流程,加入心跳環中。
如果要向機群系統里增加新的節點機,管理員通過管理界面直接向控制節點發送增加節點的命令。過程跟增加機群節點的過程一樣,唯一的不同在于新增加的節點盡管已經在機群系統里面了,但是不跑任何服務程序。因此,對這一個節點還需要進一步的配置。
另外,當用戶需要切除一個節點機時,要根據這個節點機的運行的服務類型分別處理。如果是非可接管服務,則告訴控制節點不再向該節點分發新的任務;如果是可接管服務,就需要在機群系統內找到別的節點來接管服務,這樣這個節點就不再承擔機群系統的任何服務了,然后就可切除。這個過程與檢測到故障時的處理過程恰恰相反。
最后所應說明的是以上實施例僅用以說明而非限制本發明的技術方案,盡管參照上述實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解依然可以對本發明進行修改或者等同替換,而不脫離本發明的精神和范圍的任何修改或局部替換,其均應涵蓋在本發明的權利要求范圍當中。
權利要求
1.一種機群自適應的控制方法,其特征在于至少包括節點的啟動、節點的切除及故障節點自動接管的方法。
2.根據權利要求1所述的機群自適應的控制方法,其特征在于所述的節點啟動具體包括步驟1機群節點在啟動時,試圖跟輔助主節點和主節點聯系,請求加入機群系統;步驟2如果非候選控制節點首先啟動并請求加入,將該非候選控制節點退出加入過程并等待重新加入;步驟3使最先加入機群的候選控制節點成為主節點與輔助主節點;步驟4主節點根據配置文件,啟動所有本節點可啟動的服務。
3.根據權利要求2所述的機群自適應的控制方法,其特征在于所述的節點啟動還進一步包括當多個候選控制節點同時啟動并競爭主節點與輔助主節點時,首先使主節點與輔助主節點運行在同一節點上;然后將新加入的候選控制節點設定為輔助主節點,并將原主節點上的輔助主節點遷移到該新加入的輔助主節點上。
4.根據權利要求2所述的機群自適應的控制方法,其特征在于所述的節點啟動還進一步包括當默認的主節點已經啟動,且當前的主節點不是默認的主節點時,則根據系統配置,將主節點遷移或不遷移到默認的主節點上。
5.根據權利要求2所述的機群自適應的控制方法,其特征在于當機群中主節點和輔助主節點以外的節點與主節點和輔助主節點進行通信時,首先與輔助主節點通信,然后再與主節點通信,用于保證主節點和輔助主節點保存的全局狀態信息的一致。
6.根據權利要求2所述的機群自適應的控制方法,其特征在于非控制節點啟動時,首先控制節點聯系,該控制節點告知其位置和角色信息;然后控制節點根據配置文件和當前的系統運行情況,為新啟動的節點配置應啟動的服務。
7.根據權利要求6所述的機群自適應的控制方法,其特征在于所述的節點的位置和角色信息至少包括該節點的上、下游節點,以及是否為組長節點。
8.根據權利要求6所述的機群自適應的控制方法,其特征在于所述的節點啟動的服務為非可接管的服務,則直接啟動,否則執行如下的步驟步驟100如果該啟動節點是該服務的默認服務節點,則進一步判斷該服務是否啟動;否則執行步驟103;步驟101如果該服務已經啟動,則將該服務遷移至該啟動節點,結束;步驟102在該啟動節點上啟動該服務,結束;步驟103如果該啟動節點是該服務的默認備份服務節點,則進一步判斷該服務是否啟動;否則結束;步驟104如果該服務沒有啟動,則在該啟動節點上啟動該服務,結束;步驟105如果該服務在默認的服務節點或備份服務節點上已經啟動,則將該服務遷移到該啟動節點上,結束;否則結束。
9.根據權利要求8所述的機群自適應的控制方法,其特征在于所述的接管為在新選擇上的節點上運行相應的服務,且控制節點修改全局信息。
10.根據權利要求1所述的機群自適應的控制方法,其特征在于所述的故障節點自動接管至少包括控制節點接收故障節點下游節點發送的信息,并查看當前機群系統的全局狀態信息,修改故障節點的上下游節點的位置信息和/或角色信息,然后根據故障節點上運行的服務類型進行處理。
11.根據權利要求10所述的機群自適應的控制方法,其特征在于所述的處理至少包括對故障節點上運行的服務類型進行分析,如果該服務為非可接管的服務,則控制節點直接修改全局信息,在以后的任務分發時,不在向這個節點分發任務;如果該服務為可接管的服務,則將該節點上運行的每一個可接管服務的信息保存在控制節點之中。
12.根據權利要求10所述的機群自適應的控制方法,其特征在于所述的處理至少包括如果故障節點為組長節點,控制節點將該故障節點所在組中的候選控制節點設定為組長節點,或者將報告組長節點故障的節點設定為組長節點。
13.根據權利要求1所述的機群自適應的控制方法,其特征在于所述的節點切除至少包括根據被切除節點運行的服務類型為非可接管服務,則控制節點不再向該節點分發新的任務;該服務類型為可接管服務,則控制節點在機群系統內找到相應的節點接管該服務;控制節點切除該被切除節點。
14.根據權利要求2所述的機群自適應的控制方法,其特征在于所述的主節點、輔助主節點、組長節點可以在同一節點上,也可以在不同節點上。
全文摘要
一種機群自適應的控制方法,至少包括節點的啟動、節點的切除及故障節點自動接管的方法。本發明可使機群系統在上電時,先啟動的節點機將運行盡可能多的服務;后啟動的各個節點機自動地獲取服務,啟動服務。并與先啟動的節點機進行服務遷移,從而提高了機群系統的服務性能。在機群系統出故障或切除節點機時,本發明根據該節點機的服務類型,將該節點機上運行的服務進行遷移,從而使機群提供的服務不中斷;當故障節點修復后重新加入機群系統時,將相應的服務遷移回該節點,從而使各節點機器的負載相對平衡。當增加一個新的節點機時,本發明根據配置文件,啟動相應的服務;提高了機群系統的服務性能,或增加了服務種類。
文檔編號G06F9/445GK1512329SQ02159478
公開日2004年7月14日 申請日期2002年12月31日 優先權日2002年12月31日
發明者李電森, 黃平, 姜曉東, 肖利民 申請人:聯想(北京)有限公司