服務器節點、局域網服務器集群及其實現方法
【專利摘要】本發明提供一種服務器節點、局域網服務器集群及其實現方法,其特征在于,該服務器節點包括組播模塊,用于在局域網內發送組播消息,所述組播消息至少包含與本服務器節點相關的第一組群配置信息;解析模塊,用于在局域網內接收來自外部的服務器節點的組播消息,解析出第二組群配置信息;集群發現模塊,用于校驗所述第一組群配置信息和第二組群配置信息的一致性,并根據所述校驗結果確定是否與所述外部的服務器節點組成集群。本發明的服務器節點、服務器集群及其實現方法,通過組播技術實現了在局域網內的集群的自組織自管理和去中心化,使集群在發生瓶頸時能夠支持水平擴展,提高集群的可用性和健壯性。
【專利說明】
服務器節點、局域網服務器集群及其實現方法
技術領域
[0001]本發明實施例涉及服務器集群技術領域,尤其涉及一種用于構成局域網服務器集群的服務器節點、局域網服務器集群及局域網服務器集群實現方法。
【背景技術】
[0002]服務器集群是指將多個服務器集中起來一起進行同一種服務,在客戶端看了就像是只有一個服務器在提供服務一樣。集群可以利用多個計算機進行并行計算從而獲得很高的計算速度,也可以用多個計算機實現備份,從而使得任何一個機器在損壞時,還能保證整個系統的正常運行。
[0003]現有的服務器集群通常由一個主節點以及若干個從節點組成,以主節點為中心,其他所有從節點都連接到主節點進行集群服務。例如,一個集群中包括了三個從服務器節點a節點、b節點及c節點和一個主節點,那么三個從服務器節點a、b、c都需要直接與主節點連接,并通過主節點實現相互之間的通信。這種服務器集群中,各從節點之間相互并不知道彼此的資源配置情況,如果當一個請求發送到其中一個從節點如b節點時,b節點在沒有可以滿足該請求的資源時,則需要向主節點詢問能夠滿足該請求的資源的服務器節點是哪個,再由主節點完成相應從服務器節點的調度。這樣的方式,就使得各個從服務器節點之間的協調性不夠及時,延長了對請求的響應時間。
[0004]另一方面,現有的服務器集群在有新的從服務器節點加入時,新加入的從節點需要在主節點注冊后才能加入。加入之后,需要由主節點通知本集群中的其他的從節點有新的節點成員加入,新增服務器節點時,配置部署比較麻煩。而且,當有從節點需要退出時,也需要由主節點通知其他的從節點某一從節點退出了本集群。這種方式,就導致了整個集群過于依賴主節點的調度,從而使得主節點在出現故障時(如堵塞),整個集群內的從節點都無法協調工作,嚴重影響集群的使用。
【發明內容】
[0005]為了解決現有技術中的服務器集群在新節點加入時部署麻煩,且集群服務過度依賴主節點的問題,本發明實施例一方面提供了一種服務器節點,其特征在于,包括:
[0006]組播模塊,用于在局域網內發送組播消息,所述組播消息至少包含與本服務器節點相關的第一組群配置信息;
[0007]解析模塊,用于在局域網內接收來自外部的服務器節點的組播消息,解析出第二組群配置信息;
[0008]集群發現模塊,用于校驗所述第一組群配置信息和第二組群配置信息的一致性,并根據所述校驗結果確定是否與所述外部的服務器節點組成集群。
[0009]本發明實施例另一方面提供一種局域網服務器集群,其特征在于,包括連接至同一路由器的多個服務器節點,其中,每個服務器節點為上述的服務器節點。
[0010]本發明實施例另一方面提供一種局域網服務器集群實現方法,其特征在于,包括:
[0011]將多個服務器節點通過同一路由器連接至局域網;
[0012]每個服務器節點均通過所述路由器在所述局域網內發送組播消息,所述組播消息至少包含與本服務器節點相關的第一組群配置信息;
[0013]每個服務器節點均通過所述路由器在局域網內接收來自本服務器節點外部的服務器節點的組播消息,解析出第二組群配置信息;
[0014]每個服務器節點均校驗所述第一組群配置信息和第二組群配置信息的一致性,并根據所述校驗結果確定是否與所述外部的服務器節點組成集群。
[0015]本發明實施例提供的服務器節點、局域網服務器集群及其實現方法,通過組播技術,在局域網內實現了一種去中心化的服務器集群,該服務器集群具有自發現機制,在不依賴主節點的情況下,能夠進行集群內的各個服務器節點的自組織和自管理。并且,集群內的各服務器節點的上線下線不需要依賴主節點的配置和調度,在有新的服務器節點需要加入集群時,只需在相應的服務器節點上部署相應的模塊,啟動服務器后即可自動加入相應的集群。通過本發明實施例實現的服務器集群,去除了對主節點的依賴,集群中各節點具有對等的關系,能夠大幅提升服務器集群的可用性和健壯性,在水平擴展的基礎上,能夠實現服務程序的熱插拔,可以有效解決集群的服務瓶頸。
【附圖說明】
[0016]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0017]圖1為現有技術中服務器集群的架構的示意圖;
[0018]圖2為本發明中局域網服務器集群的架構的示意圖;
[0019]圖3為本發明中局域網服務器集群的實現方法的實施例流程圖;
[0020]圖4為本發明中局域網服務器集群的實現方法的實施例流程圖。
【具體實施方式】
[0021]為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0022]圖1示意性地顯示了現有技術中的服務器集群的架構。如圖1所示,目前常用的服務器集群,通常是以主節點10為中心,多個從節點(如圖1所示的從節點11、從節點12、從節點13等)都連接到主節點10,通過主節點10的調度和管理,實現各從節點之間的通信和資源請求。由于所有的調度和管理都需要通過主節點10進行協調,各從節點之間相互不知道彼此的資源配置情況,當需要轉發訪問請求時,也需要通過主節點10進行資源定位和轉發,各從節點對主節點10的依賴性很高,因而當主節點10發生故障(如堵塞)時,集群內的各個從節點就無法協調工作。并且,對于各節點的上下線,圖1所示的服務器集群都需要通過主節點10進行注冊和通知其他從節點,在有新節點加入或有節點退出時,部署和配置會比較麻煩。這種架構的服務器集群在需要通過中心節點(即主節點作為中心)進行調度的分布式集群下,應用比較廣泛,能夠帶來比較好的效果。但對于所有服務器節點都在同一網絡內的應用場景,圖1所示的服務器架構在處理的響應時間和部署的繁瑣上,都會因過度依賴主節點,而影響集群的可用性和性能。因為本發明針對服務器節點都部署在同一網絡內的業務,提供一種局域網服務器集群,能夠對服務器集群進行去中心化,通過組播技術,實現集群的自組織和自管理,部署方便,且支持集群服務的水平擴展,能夠實現服務程序的熱插拔,有效提高了集群的健壯性。
[0023]圖2示意性地顯示了本發明一種實施方式的局域網服務器集群的架構。如圖2所示,該服務器集群包括路由器20和多個服務器節點21,多個服務器節點21通過同一路由器20互聯,構成一個局域網。其中,每個服務器節點21上,都配置有組播模塊211、解析模塊215和集群發現模塊212。組播模塊211設置為周期性地在局域網內向預設的組播地址及端口發送消息,該消息至少包括本機服務器節點21的第一組群配置信息。預設的組播地址及端口為相同的固定組播地址及端口,如為239.0.0.1:8086。解析模塊215設置為接收同一局域網內的其他服務器節點的消息,進行解析,解析出外部服務器節點(即局域網內的其他服務器節點)的第二組群配置信息。集群發現模塊212設置為根據驗證協議,對第一組群配置信息和第二組群配置信息進行校驗,將符合驗證協議的其他服務器節點加入本機的服務器集群。在具體應用中,局域網內的任一服務器節點21在啟動后,即通過組播模塊211周期性地(如每隔I分鐘)向該組播地址及端口發送廣播消息,通知同一局域網內的其他服務器節點該服務器節點已上線。其中,發送的廣播消息可以是UDP廣播包,消息體內包括集群標識、服務程序的版本號、消息類型、操作系統的類型及版本、以及服務器的IP地址等消息內容(這些消息內容可以預先設定,也可以在發送時通過動態讀取配置文件獲取,只要實現本發明目的即可。)。局域網內的其他服務器節點在接收到廣播消息后,解析模塊215根據UDP廣播包的協議對廣播包進行解析(為現有技術,故不贅述)。解析完后,根據驗證協議對解析出的第二組群配置信息的內容進行校驗(即與本服務器節點的第一組群配置信息的內容進行比較),在驗證通過時(兩者內容一致時),將對應的其他服務器節點加入本機(即本服務器節點)所在的服務器集群。其中,驗證協議可以根據需求進行設置,本發明實施例優選的驗證協議內容為只有解析出的消息內容中的集群標識、服務程序的版本號、操作系統類型及版本號都與本機的相同,才能通過驗證,接受該其他服務器節點為集群內的一員,即第一組群配置信息和第二組群配置信息可以根據驗證協議的內容設置為包括集群標識、服務程序的版本號和操作系統類型及版本號。需要說明的是,集群標識是在服務器啟動前設置的其所述的集群的統一標識,可以是集群名稱等,而其他校驗的消息內容如服務程序的版本號、操作系統類型及版本號等都可以直接從服務器的配置信息中獲取。通過將服務器節點連接到對應的局域網和在服務器節點上配置組播模塊211、解析模塊215和集群發現模塊212,服務器節點就能夠自動發現本局域網內屬于同一集群的其他服務器節點,并將其加入本機的服務器集群,并且相互之間知道本集群內的其他服務器節點的資源和配置等信息,能夠實現局域網內集群的自組織,部署非常簡單快捷。并且,由于去除了中心化,各服務器節點都是對等的關系,彼此之間都知道集群中各服務器節點的資源配置信息,當集群的服務能力出現瓶頸時,支持水平擴展,能夠實現服務程序的熱插拔(在系統運行過程中,動態替換某些功能,不用重啟系統進程,對服務器來說,熱插拔技術和功能的實現,是為了獲得系統運行的穩定性和可靠性,實現連續無中斷的程序應用。),保證集群的高可用性,提高集群的健壯性,有效解決現有技術中依賴主節點調度管理的服務器集群在主節點故障時無法協調的問題。
[0024]如圖2所示,本發明實施例的服務器集群中的服務器節點21上還配置有集群管理模塊213。集群管理模塊213設置為建立與加入本機的服務器集群的其他服務器節點的通信連接,通過通信連接和PING機制確定本集群中的其他服務器節點的連接狀態,根據連接狀態從本集群中移除已下線的服務器節點。具體為,當集群內的服務器節點(如服務器節點A)接收到其他服務器節點(如服務器節點B)發送的組播消息,且驗證通過將其加入本機集群后,服務器節點A則會立即建立與新加入的服務器節點B的通信連接,并與服務器節點B之間周期性地(如每隔I分鐘)通過該通信連接相互發送ping包監聽對方的在線狀態。對方服務器節點在收到Ping包后,需立即對收到的Ping包進行響應,如果服務器節點A向服務器節點B發送的ping包連續多次(如五次)沒有收到響應(即未接通時),則認為服務器節點B已經下線,則服務器節點A會將服務器節點B從集群中刪除。刪除之后,從服務器節點A來看,集群內的服務器已經不包括服務器節點B,直到它再次收到服務器節點B上線后發送的組播消息并驗證通過。由此,集群內的服務器節點21通過PING機制就能夠實現自動感知其他服務器節點的上線和下線狀態,不依賴其他程序或節點,可以實現集群的自管理,從而在有訪問請求到達而自身節點無法處理時,不需要中轉詢問主節點其他節點是否在線,就可以直接進行訪問請求的轉發,有效提高集群的性能(如響應時間)。本發明實施例中的通信連接可以是任何能夠進行消息傳輸的通信連接,如UDP、TCP等,本發明實施例優選為TCP長連接。
[0025]如圖2所示,本發明實施例的服務器集群中的服務器節點21上還配置有服務模塊214,設置為在接收到訪問請求時,根據集群中服務器節點之間共享的資源配置信息,響應訪問請求或通過建立的通信連接將訪問請求轉發集群內的其他服務器節點。集群在提供對外服務時,通常是通過虛擬IP的方式,借助LVS (Linux Virtual Server,Linux虛擬服務器,是一個虛擬的服務器集群系統,屬于現有技術)的負載均衡調度器將客戶端的請求均衡的調度到集群內的服務器節點。如當有一個訪問請求發送到集群時,集群通過虛擬IP對外接收訪問請求。接收到請求后,集群的LVS就可以通過各虛擬IP將訪問請求動態發送到任一個虛擬IP上進行處理。由于,各個服務器節點是對等的關系,都能夠處理分配來的訪問請求,且相互之間知道同一集群中各服務器節點的資源配置信息,此時,LVS會根據資源調度策略(如一致性HASH算法)進行資源定位,通過資源定位到哪一個服務器節點,就把訪問請求發送到對應的服務器節點進行處理,由此,實現集群的負載均衡。此部分為現有技術,故不贅述。服務器節點在接收到訪問請求后,服務器節點根據其知道的集群內的各個服務器節點的資源配置情況(可以通過組播消息發送給對方或進行資源共享。),對訪問請求該由誰處理進行判斷,如果該請求需要由自己處理則自己進行相應處理,如果該請求需要由集群內的其他服務器節點進行處理,則通過已建立的通信連接,如TCP長連接,將該訪問請求轉發給相應的服務器節點進行處理。由于不需要轉發給主節點進行資源的查詢和調度,能夠有效的提高訪問請求的響應和處理時間。
[0026]優選地,為了提高集群中各服務器節點之間的吞吐量,可以在兩個服務器節點之間建立多個通信連接的通道。
[0027]通過本發明實施例提供的服務器集群,可以實現局域網內服務器集群的自組織和自管理,解除了對中心服務器節點(即主節點)的依賴,各服務器節點能夠提供對等的服務,水平擴展能力更好,整個集群的健壯性更強。
[0028]圖3示意性地顯示了根據本發明的一種實施方式的局域網服務器集群的實現方法。如圖3所示,該方法包括:
[0029]步驟SlOl:通過路由器將服務器節點連接到局域網,在服務器節點上配置部署集群模塊。
[0030]通過將多個服務器節點連接到同一路由器,將多個服務器節點部署到同一局域網內。在各服務器節點上配置部署上述的相應集群模塊,如組播模塊、集群發現模塊、解析模塊、集群管理模塊和/或服務模塊。該集群模可以是按模塊分開的不同組件,也可以一個包含所述各個模塊的系統。
[0031]步驟S102:啟動服務器節點上的服務,服務器節點通過路由器周期性地向局域網內發組播消息。
[0032]在服務器節點上部署好上述模塊或系統后,啟動服務器節點的服務,啟動后,各服務器節點的組播模塊就會在局域網內通過路由器自動的周期性地(如每隔一分鐘)向固定的組播地址及端口發送廣播消息。其中,廣播消息為UDP廣播包,消息體的內容參見前文敘述。
[0033]步驟S103:局域網內的服務器節點接收其他服務器節點發送的組播消息,進行解析。
[0034]同一局域網內的服務器節點接收到其他的服務器節點發送的組播消息后,根據UDP廣播包的協議對UDP包進行解析。UDP廣播包的解析屬于現有技術,故不詳述。
[0035]步驟S304:根據解析結果和驗證協議,將符合驗證協議的服務器節點加入本機的服務器集群。
[0036]解析完成后,服務器節點根據預設的驗證協議(內容參見前文敘述)對消息進行校驗,在驗證通過后,將符合驗證協議的服務器節點加入本機的服務器集群。
[0037]通過以上方法,就可以通過組播技術,在局域網內自動發現集群中的其他服務節點,并將其加入本機的服務器集群,省去了圖1所示的現有技術集群在加入節點時需要在主節點和從節點進行注冊和配置,并需要通過主節點通知其他從節點的繁瑣操作,集群的組織完全自動化,更加快捷方便。并且,去除了主節點后,集群中的服務器節點能夠提供對等的服務,支持水平擴展。
[0038]圖4示意性地顯示了本發明另一種實施方式的局域網服務器集群的實現方法。如圖4所示,本發明實施例的實現方法中,步驟S401至步驟S404的集群發現機制與圖3所示的方法相同,在此不再贅述,不同在于,本發明實例還包括以下步驟:
[0039]步驟S405:建立與新加入的服務器節點的通信連接,并周期性的發送ping包,以確定其他的服務器節點的在線狀態。
[0040]在將符合驗證協議的服務器節點加入集群后,服務器節點立即建立與新加入的服務器節點的通信連接。并通過建立的通信連接周期性地發送Ping包,根據對方服務器節點對Ping包的回應狀態,確定其他服務器節點的在線狀態,如及時回應則說明在線,連續五次沒有回應Ping包則說明已下線。
[0041]步驟S406:根據在線狀態,把已經下線的服務器節點從本機的服務器集群中移除。
[0042]當根據ping機制發現對方服務器節點已經下線時,將已經下線的服務器節點從本機的服務器集群中移除。此時對本服務器節點來說,下線的服務器節點已經不在集群內,則本服務器的資源配置情況中,就也不再包含下線的服務器節點的信息。由此,可以通過自動感知下線機制,有效及時地更新集群的服務器資源情況。
[0043]通過步驟S405和S406,本發明實施例的服務器集群能夠實現對其他服務器節點的下線的自動感知,并將已下線的服務器節點及時從集群中刪除,能夠及時有效地對集群中的服務器節點情況和資源進行自管理,集群的健壯性更好。
[0044]優選地,本發明實施例實現方法中的通信連接為TCP長連接。
[0045]通過以上方法實現了局域網內的去中心化的服務器集群后,當有訪問請求來到時,LVS就可以根據負載均衡調度器將客戶端的請求均衡的調度到集群內的任一服務器節點上。接收到訪問請求的服務器節點,就可以根據本機上最新的集群內服務器節點的資源配置情況,自己直接處理訪問請求或通過通信連接直接將訪問請求轉發給能夠處理的其他服務器節點進行處理。其中,優選地,為了提高集群內各服務器節點之間的吞吐量,可以在服務器節點之間建立多個通信連接(如TCP長連接)。
[0046]本發明的方法,提供了一種基于組播技術的服務器集群的發現機制,實現了在局域網內簡便快捷部署服務器節點和自動組織本機的服務器集群。且通過去除中心服務器節點,集群內的服務器節點能夠提供對等的服務,在集群出現瓶頸時,能夠及時快速的進行水平擴展,實現服務程序的熱插拔,能夠有效集群的可用性和健壯性。
[0047]以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性的勞動的情況下,即可以理解并實施。
[0048]通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件。基于這樣的理解,上述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在計算機可讀存儲介質中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行各個實施例或者實施例的某些部分所述的方法。
[0049]最后應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。
【主權項】
1.一種服務器節點,包括: 組播模塊,用于通過路由器連接至局域網,并在局域網內發送組播消息,所述組播消息至少包含與本服務器節點相關的第一組群配置信息; 解析模塊,用于在局域網內接收來自外部的服務器節點的組播消息,解析出第二組群配置信息; 集群發現模塊,用于校驗所述第一組群配置信息和第二組群配置信息的一致性,并根據所述校驗結果確定是否與所述外部的服務器節點組成集群。2.根據權利要求1所述的服務器節點,其特征在于,還包括集群管理模塊,用于在本服務器節點與組成集群的外部服務器節點間建立通信連接并監聽所述外部服務器節點的連接狀態,其中,當所述連接狀態為未連通時,從所述集群中移除所述外部服務器節點。3.根據權利要求1或2所述的服務器節點,其特征在于,還包括服務模塊,所述服務模塊用于在接收到訪問請求時,根據集群中各服務器節點間共享的資源配置信息,處理所述訪問請求或利用所述集群管理模塊建立的通信連接,將所述訪問請求轉發至資源配置適合處理所述訪問請求的服務器節點。4.根據權利要求3所述的實現方法,其特征在于,所述通信連接為至少包含一個通道的TCP長連接。5.根據權利要求1至4任一項所述的服務器節點,其中,所述第一組群配置信息包括集群標識、服務程序的版本號和操作系統的類型及版本; 所述組播消息是UDP廣播包,消息體中至少包含消息類型、IP地址以及所述第一組群配置信息。6.一種局域網服務器集群,包括連接至同一路由器的多個服務器節點,其中,每個服務器節點為根據權利要求1至5中任一項所述的服務器節點。7.一種局域網服務器集群實現方法,其特征在于,包括: 將多個服務器節點通過同一路由器連接至局域網; 每個服務器節點均通過所述路由器在所述局域網內發送組播消息,所述組播消息至少包含與本服務器節點相關的第一組群配置信息; 每個服務器節點均通過所述路由器在局域網內接收來自本服務器節點外部的服務器節點的組播消息,解析出第二組群配置信息; 每個服務器節點均校驗所述第一組群配置信息和第二組群配置信息的一致性,并根據所述校驗結果確定是否與所述外部的服務器節點組成集群。8.根據權利要求7所述的實現方法,其特征在于,還包括: 每個服務器節點均建立與組成集群的外部服務器節點間的通信連接; 每個服務器節點通過所述通信連接監聽與所述外部服務器節點的連接狀態,在所述連接狀態為未連通時,從所述集群中移除所述外部服務器節點。9.根據權利要求8所述的實現方法,其特征在于,還包括: 每個服務器節點在接收到訪問請求時,根據集群中各服務器節點間共享的資源配置信息,處理所述訪問請求或利用所述通信連接轉發所述訪問請求至資源配置合適處理所述訪問請求的服務器節點。10.根據權利要求7-9中任一項所述的實現方法,其特征在于,所述第一組群配置信息和第二組群配置信息均包括:集群標識、服務程序的版本號和操作系統的類型及版本; 所述組播消息是UDP廣播包,消息體中至少包含消息類型、IP地址以及所述第一組群配置信息或第二組群配置信息。
【文檔編號】H04L29/08GK105897827SQ201510849195
【公開日】2016年8月24日
【申請日】2015年11月27日
【發明人】陳艷成, 趙瑞前
【申請人】樂視云計算有限公司