專利名稱:利用機群節點相互備份的容錯方法
技術領域:
本發明涉及一種冗余備份、用以提高機群系統的高可用性的方法,尤其是一種利用機群節點相互備份的容錯方法,屬于計算機網絡技術。
背景技術:
隨著網絡技術的發展,商業服務機群的需求不斷擴大。商業服務機群的特點是單個任務量較小,而并發的任務總量非常大;負載具有波動性、突發性等;在不同的任務之間具有一定的獨立性。商業服務機群的主要目標是提高系統吞吐能力,即在一定的時間內完成盡可能多的任務。此外,商業應用對可用性有非常高的要求,關鍵的商業應用一般都要求7×24小時的連續不間斷運行;短暫的停機可能會造成無法估量的損失。因此,根據應用的要求,商業服務機群采用相應的高可用備份方式。
高可用機群中的服務器邏輯多為運行機和備份機;運行機和備份機可以是并行運行,也可以是一方運行,一方備份。節點之間采用多條心跳線連接;在發現節點出故障時,先經過確認節點證實出故障后,再采取遷移該節點上的運用,而不影響用戶的使用。
在運行節點和備份節點之間通過冗余心跳線保證節點間異常狀態的診斷。應用程序所有的數據存放在共享的磁盤介質(獨立于節點服務器)中。為了保持數據的一致性,通過加鎖機制來控制對共享存儲的訪問。
目前,在大型的商務機群中,所有的服務可分為以下幾種1、只由一個節點提供的服務,該節點是單一故障點。該服務可以被其他所有的節點接管,即該服務對運行節點沒有特殊的要求,我們稱該類服務為單一服務。
2、由多個節點提供的服務,提供服務的節點運行相同的程序,共享相同的數據。可以任為各個節點是相同的拷貝。通常通過一個任務分發節點采用一些負載均衡策略,給這些節點分發用戶的服務請求,該類服務為多重服務。
3、對于一些服務,需要直接連接其他設備;例如存儲節點作為網絡文件系統服務(NFS Server)需要連接盤陣。這類的服務出現故障時,只能由與盤陣相連的節點來接管服務。因此,這類服務為專用服務。
當各種服務出現故障時,都應該有相應的接管措施。目前,為了保證各種服務的和應用的的高可用性,一般機群系統提供熱備份機制;例如多向備份,N+1備份,N+M備份以及層疊式備份、雙機系統等。
參見圖1,其為支持四個節點的多向恢復備份方式;即節點N1、-N4之間建立環狀連接,相互備份。參見圖2,其為支持多路運行節點由一個備份節點S1做故障恢復,其他的為普通節點,即N+1備份方式;備份機也可以不止一臺,即N+M備份;參見圖3,其為層疊式備份方式,多個節點N1-N5都是一個應用的備份,當運行節點(例如N1-N3)發生故障時,由下一個節點(例如N4)接替該節點,直至所有服務器都發生故障;參見圖4,其為雙機系統,即節點N1和節點N2相互備份。
上述備份方式的最大缺點是需要大量的冗余設備;成本高,不能充分利用機群系統的資源。
發明內容
本發明的主要目的在于提供一種利用機群節點相互備份的容錯方法,通過機群中的節點相互備份來提高機群系統的可用性,充分利用節點資源,降低冗余備份的成本。
本發明的目的是這樣實現的一種利用機群節點相互備份的容錯方法,其特征在于機群節點間通過心跳環連接、相互通信和備份,至少包括節點加入機群以及節點故障的處理。
所述的節點至少包括服務應用(Services Applications)進程、節點服務監測器(lifeguard)進程、節點執行器(Executor)進程、故障接管模塊(Standby)進程和核心控制模塊(Commander)進程。
節點加入機群的處理具體包括如下的步驟步驟10新加入節點向主節點發出加入機群的請求;步驟11主節點收到請求后,分配新加入節點在機群中的位置,并返回新加入節點所承擔的服務信息;步驟12新加入節點逐一啟動服務所依賴的進程,并設置相應的服務IP;步驟13新加入節點通知主節點服務啟動的情況如果啟動失敗,主節點則選擇其他節點來啟動該服務;步驟14如果服務啟動成功,主節點標識該服務為啟動狀態,并記錄提供服務的節點信息,便于在該節點發生故障時,及時將該節點上運行的所有服務遷移到該服務的備份節點上。
節點故障的處理具體包括步驟20當機群中節點的存活信息檢測(Heartbeat)進程發現相鄰節點出現異常時,向該相鄰節點的Executor進程發送確認包;步驟21該相鄰節點如果接收到故障確認包,則向自身的Lifeguard發送消息,檢查本節點上所有依賴進程的運行情況及資源使用情況;節點恢復正常后應答Heartbeat的確認包;步驟22如果發出確認包節點的Heartbeat無法與相鄰節點通訊,或者在規定時間內沒有接受到該相鄰節點的應答,則向備份主節點的Commander進程發送消息,報告故障;步驟23主節點接收該消息,并分析該服務的類型,如果該服務是多重服務,則通知前置的任務分發節點停止向該故障節點發送任務;步驟24如果該故障是單一服務或專用服務,主節點為該故障服務根據各節點的負載信息在可支持改服務的節點中,選擇負載最輕的節點,并向給節點的Executor發送服務接管命令,接管故障服務;步驟25被選中作為故障服務接管節點收到接管信息,調用Standby模塊將故障服務在本節點上恢復,并通知節點服務監測器重新獲取監控的配置,對本節點上新增加的服務進程進行監控。
節點故障的處理還進一步包括步驟26主節點發出命令,要求所有心跳環內部所有節點是否正常,便于快速處理大面積節點故障。
主節點對故障服務進行接管的具體操作為步驟241主節點根據備份節點的優先級和該節點當前的實際工作負載選擇相應的備份節點接管故障服務;步驟242主節點將接管命令發送給選定接管節點的Executor進程;步驟243接管節點的Executor調用Lifeguard模塊,啟動該服務的所有依賴進程,并設置相應的服務IP,然后通知Lifeguard監控對本節點上新增加服務的進程進行監控。
所述的服務至少具有機群提供該服務的IP地址、服務采用協議類型、用來檢查該服務是否能正常偵聽用戶請求服務的端口號、服務的類型、服務缺省運行的節點、服務的備選節點以及服務所依賴的進程及其啟停腳本的位置。
服務采用協議類型至少包括TCP和UDP兩類。所述的服務類型至少包括單一服務、多重服務以及專用服務。所述的缺省運行節點為該服務在機群所有節點正常運行時,應該提供該項服務的節點;當該節點處于不可用狀態時,該服務具有備份節點;當缺省運行節點排除故障并加入機群后,該服務即被遷移到缺省運行節點上運行。所述的備選節點至少為一個。
綜上所述,本發明通過機群中的節點相互備份,提高了機群系統的可用性,充分利用了機群中所有節點的資源,并且降低了冗余設備的成本。
圖1為現有技術中多向備份的系統結構示意圖;圖2為現有技術中N+1備份的系統結構示意圖;圖3為現有技術中層疊式備份的系統結構示意圖;圖4為現有技術中雙機系統的結構示意圖;圖5為本發明系統結構示意及故障處理流程圖;圖6為本發明一實施例的結構示意圖。
具體實施例方式以下通過具體的實施例和附圖對本發明的技術方案進行詳細說明在本發明中,定義一個服務至少需要以下屬性1.服務訪問的IP地址,機群提供該服務的IP地址;2.服務采用協議類型,主要分為TCP和UDP兩類;3.服務所偵聽的端口號,可用來檢查該服務是否能正常偵聽用戶的請求;4.服務的類型即該服務屬于單一服務、多重服務還是專用服務;5.服務缺省運行的節點該服務在機群所有節點正常運行時,應該提供該項服務的節點,該節點處于不可用狀態,該服務有其他備份節點提供,但當缺省運行節點排除故障并加入機群后,服務將被遷移到缺省運行節點上運行。
6.服務的備選節點服務的備選節點可以有多個,某些服務甚至可以由機群中的所有其他節點作為備選節點,如主節點擔任管理協調機群工作以及機群故障接管的服務,所有的安裝了該程序的節點都可以提供該項服務而成為主節點。因此服務的備選節點可視為安裝了服務所需程序具備提供該服務能力的節點。在提供服務的節點出現故障時,主節點將根據所有該服務的備份節點的負載情況選擇一臺負載較輕的節點來接替故障節點的工作。
7. 服務所依賴的進程節點提供服務所依賴的進程,這些進程的啟停腳本的位置,當一個節點被選中提供服務時,該節點查詢該服務所依賴的所有進程,并通過該進程的啟動腳本和程序來運行該進程。
在本發明中,每個節點包括服務應用(Services Applications)進程、lifeguard(節點服務監測器)進程、Executor(節點執行器)進程、Standby(故障接管模塊)進程和Commander(核心控制模塊)進程。節點與節點之間通過以太網連接,由核心控制模塊(commander)將節點邏輯上組成心跳環,各節點通過通過心跳檢測進程(heartbeat)相互通信。當啟動一個節點時,具體執行的步驟為步驟10該節點向主節點的核心控制模塊(commander)發出加入機群系統的請求;步驟11主節點收到請求后,分配該節點在機群心跳環中的位置,并返回該節點所應承擔的服務信息;告訴該節點應該承擔哪些服務;步驟12該節點逐一啟動主節點分配的服務所依賴的進程,并設置相應的服務IP;步驟13通知主節點該服務啟動的情況成功或失敗,如果失敗,主節點會選擇別的節點來啟動該服務。
步驟14如果服務啟動成功,主節點將標識該服務為啟動狀態,并記錄提供服務的節點信息,便于在該節點發生故障時,及時將該節點上運行的所有服務遷移到其他可用的節點上,即該服務的備份節點上。
參見圖5,當節點的Heartbeat發現相鄰節點出現異常時,其處理過程為
步驟20Heartbeat向相鄰節點的Executor進程發送確認包,確認相鄰節點是否發生故障;步驟21相鄰節點如果接收到故障確認包,向Lifeguard發送消息,檢查節點上所有依賴進程的運行情況及資源使用情況,節點恢復正常后應答Heartbeat的確認包;步驟22若Heartbeat無法與相鄰節點通訊,或者在規定時間內沒有接受到相鄰節點的應答,就認為該相鄰節點已經出現故障,則本節點向備份主節點的Commander進程發送消息,向主節點報告故障;步驟23主節點分析該服務的類型,如果該服務是多重服務,不需要接管該服務,只需要通知前置的任務分發節點,停止向該節點發送任務;步驟24如果故障是單一服務或專用服務,則需要對故障服務進行接管,先由主節點選擇備份節點接管故障服務,該備份節點可以運行服務的程序并代替故障節點提供服務,由于備份節點可有多個,則對所有的節點定義優先級,首先選擇優先級最高的備份節點作為接管節點,如果可選節點的優先級相同,則根據各節點當前的實際工作負載信息選擇工作負載最輕的節點作為接管節點。主節點選定接管節點后,把接管命令發送給選定的接管節點上的Executor進程。被選中作為故障服務接管節點收到接管信息后,調用Standby模塊啟動該服務,對于每個服務,由用戶設定該服務要正常運行所需要啟動的進程,我們成為服務的依賴進程,同時,某個進程的啟動可能需要先啟動其他進程,這些進程又可視為該進程依賴進程,Standby模塊啟動服務時采用遞歸的方法,將該服務的所有進程啟動起來,設置相應的服務IP,將故障服務在本節點上恢復,并通知節點服務監測器(Lifeguard)重新獲取監控的配置,對本節點上新增加的服務進程進行監控。
在機群中,由主節點將所有運行的節點構成多個心跳環,這種結構便于擴展,每個心跳環中的第一個節點即成為該心跳環的組長節點。在故障服務恢復后,主節點向所有心跳環組長節點要求檢查各自心跳環內部的節點是否正常,這有利于快速處理大面積節點故障的情況。
參見圖6,在機群中,輸入/輸出(Input/Output,簡稱I/O)節點直接與盤陣相連,因此,輸入/輸出節點IO1、IO2、IO3相互備份,作為網絡文件系統(Network File System,簡稱NFS)服務器(Server);其他所有服務節點通過輸入/輸出節點IO1、IO2、IO3訪問存儲設備—盤陣。本實施例包含了文件傳送/輸協議(File Transfer Protocol,簡稱ftp)服務,其由3個節點提供;Web服務,由節點WebServer1、WebServer2、WebServer3、WebServer4、WebServer5提供域名服務器(Domain Name Server,簡稱DNS)服務;郵件服務,其由2個節點Mail Server1、Mail Server2提供;數據庫服務,由2個數據庫服務器節點提供。請求分發器1(Dispatcher1)和請求分發器2(Dispatcher2)是負載均衡的前置任務分發節點。前置任務分發節點和文件傳送/輸協議服務運行在同一個節點上,如果文件傳送/輸協議服務所在的節點發生故障,將由其他節點接替節點Dispatcher1的工作,分發用戶的請求,同時通知任務分發節點停止向文件傳送/輸協議服務分發任務。
圖6中的DNS服務器DNS Server只由一個節點運行,在該節點出現故障時,由其他安裝了DNS程序的節點接管DNS服務。
輸入/輸出節點IO1為網絡文件系統服務器NFS Server的缺省運行節點,只有輸入/輸出節點IO2、IO3和數據庫服務器可以作為網絡文件系統服務器NFSServer服務的備份節點,因為這些節點與盤陣相連接,如果輸入/輸出節點IO1作為網絡文件系統服務器NFS Server運行,在輸入/輸出節點IO1發生故障后,主節點會在這些備份節點中選擇節點接替輸入/輸出節點IO1的工作。本實施例中,所有節點均可安裝主節點所需的程序,因此,機群中的任意節點都可以成為主節點。
在該系統中,Web服務,ftp服務和郵件服務都由多個節點同時提供,因此具有很好的擴展性,輸入/輸出節點的備份節點除了接管網絡文件系統服務器NFS Server的服務,還可作為其他服務的備份節點,這樣可以充分利用機群的資源,不需設置專用的冗余備份設備就可以實現系統多向備份,提高了機群的可用性。
最后應說明的是以上實施例僅用以說明本發明而非限制,盡管參照較佳實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明進行修改或者等同替換,而不脫離本發明的精神和范圍,其均應涵蓋在本發明的權利要求范圍當中。
權利要求
1.一種利用機群節點相互備份的容錯方法,其特征在于機群節點之間通過心跳環連接、相互通信和備份,至少包括節點加入機群以及節點故障的處理。
2.根據權利要求1所述的利用機群節點相互備份的容錯方法,其特征在于所述的節點至少包括服務應用(Services Applications)進程、節點服務監測器(lifeguard)進程、節點執行器(Executor)進程、故障接管模塊(Standby)進程和核心控制模塊(Commander)進程。
3.根據權利要求1所述的利用機群節點相互備份的容錯方法,其特征在于節點加入機群的處理具體包括如下的步驟步驟10新加入節點向主節點發出加入機群的請求;步驟11主節點收到請求后,分配新加入節點在機群中的位置,并返回新加入節點所承擔的服務信息;步驟12新加入節點逐一啟動服務所依賴的進程,并設置相應的服務IP;步驟13新加入節點通知主節點服務啟動的情況如果啟動失敗,主節點則選擇其他節點來啟動該服務;步驟14如果服務啟動成功,主節點標識該服務為啟動狀態,并記錄提供服務的節點信息,便于在該節點發生故障時,及時將該節點上運行的所有服務遷移到該服務的備份節點上。
4.根據權利要求1所述的利用機群節點相互備份的容錯方法,其特征在于節點故障的處理具體包括步驟20當機群中節點的存活信息檢測(Heartbeat)進程發現相鄰節點出現異常時,向該相鄰節點的Executor進程發送確認包;步驟21該相鄰節點如果接收到故障確認包,則向自身的Lifeguard發送消息,檢查本節點上所有依賴進程的運行情況及資源使用情況;節點恢復正常后應答Heartbeat的確認包;步驟22如果發出確認包節點的Heartbeat無法與相鄰節點通訊,或者在規定時間內沒有接受到該相鄰節點的應答,則向備份主節點的Commander進程發送消息,報告故障;步驟23主節點接收該消息,并分析該服務的類型,如果該服務是多重服務,則通知前置的任務分發節點停止向該故障節點發送任務;步驟24如果該故障是單一服務或專用服務,主節點為該故障服務根據各節點的負載信息在可支持改服務的節點中,選擇負載最輕的節點,并向給節點的Executor發送服務接管命令,接管故障服務;步驟25被選中作為故障服務接管節點收到接管信息,調用Standby模塊將故障服務在本節點上恢復,并通知節點服務監測器重新獲取監控的配置,對本節點上新增加的服務進程進行監控。
5.根據權利要求4所述的利用機群節點相互備份的容錯方法,其特征在于節點故障的處理還進一步包括步驟26主節點發出命令,要求所有心跳環內部所有節點是否正常,便于快速處理大面積節點故障。
6.根據權利要求4所述的利用機群節點相互備份的容錯方法,其特征在于主節點對故障服務進行接管的具體操作為步驟241主節點根據備份節點的優先級和該節點當前的實際工作負載選擇相應的備份節點接管故障服務;步驟242主節點將接管命令發送給選定接管節點的Executor進程;步驟243接管節點的Executor調用Lifeguard模塊,啟動該服務的所有依賴進程,并設置相應的服務IP,然后通知Lifeguard監控對本節點上新增加服務的進程進行監控。
7.根據權利要求1或3或4或5或6所述的利用機群節點相互備份的容錯方法,其特征在于所述的服務至少具有機群提供該服務的IP地址、服務采用協議類型、用來檢查該服務是否能正常偵聽用戶請求服務的端口號、服務的類型、服務缺省運行的節點、服務的備選節點以及服務所依賴的進程及其啟停腳本的位置。
8.根據權利要求7所述的利用機群節點相互備份的容錯方法,其特征在于服務采用協議類型至少包括TCP和UDP兩類。
9.根據權利要求7所述的利用機群節點相互備份的容錯方法,其特征在于所述的服務類型至少包括單一服務、多重服務以及專用服務。
10.根據權利要求7所述的利用機群節點相互備份的容錯方法,其特征在于所述的缺省運行節點為該服務在機群所有節點正常運行時,應該提供該項服務的節點;當該節點處于不可用狀態時,該服務具有備份節點;當缺省運行節點排除故障并加入機群后,該服務即被遷移到缺省運行節點上運行。
11.根據權利要求7所述的利用機群節點相互備份的容錯方法,其特征在于所述的備選節點至少為一個。
全文摘要
一種利用機群節點相互備份的容錯方法,機群節點之間通過心跳環連接、相互通信和備份;主節點分配新加入節點在機群中的位置,并返回新加入節點所承擔的服務信息;新加入節點逐一啟動服務所依賴的進程,并設置相應的服務IP;如果啟動失敗,主節點則選擇其他節點來啟動該服務;當機群中節點發現相鄰節點異常時,向該相鄰節點進行確認;主節點對該故障服務進行接管;本發明通過機群中的節點相互備份,提高了機群系統的可用性,充分利用了機群中所有節點的資源,并且降低了冗余設備的成本。
文檔編號G06F11/07GK1512375SQ02159479
公開日2004年7月14日 申請日期2002年12月31日 優先權日2002年12月31日
發明者李電森, 馮銳, 姜曉東, 肖利民 申請人:聯想(北京)有限公司