一種服務器故障檢測及切換方法
【專利摘要】本發(fā)明提供一種服務器故障檢測及切換方法,其包括:首先建立網(wǎng)絡服務器池,所述服務器池包括至少兩臺池化器,其中該池化器負責將多臺服務器組成一個虛擬的服務器池,并對服務器的運行狀態(tài)進行實時監(jiān)控和采集;服務器啟動后向池化器發(fā)送登記消息進行登記;然后池化器進行回應,對服務器進行周期性健康狀況檢查;如果在數(shù)據(jù)交換中該服務器發(fā)生故障,客戶端從傳輸層得到一個錯誤信息,客戶端由此可以獲知服務器端發(fā)生故障,這時,客戶端進入故障切換模式,客戶端重新在池化器處做一次池名解析,獲得下一臺正常運行的服務器IP地址,然后直接和新的服務器建立連接,完成故障切換過程。
【專利說明】一種服務器故障檢測及切換方法
【技術領域】
[0001] 本發(fā)明是關于計算機網(wǎng)絡服務器領域,尤其涉及一種服務器故障檢測及切換方 法。
【背景技術】
[0002] 現(xiàn)有傳統(tǒng)的服務器故障容錯系統(tǒng)中,通常采用心跳機制實現(xiàn)服務器故障的檢測, 其具體實現(xiàn)機理如下:
[0003] 在被檢測服務器和檢測服務器之間連接一條專用的網(wǎng)線,即所謂的"心跳線",此 心跳線僅為故障檢測發(fā)送檢測信息之用,不作為應用數(shù)據(jù)傳輸之用,因此在服務器上都有 兩塊網(wǎng)卡,一塊用于連接心跳線,另一塊則用于應用數(shù)據(jù)線路。檢測服務器通過心跳線每隔 一定的間隔時間向被檢測服務器發(fā)送一個ICMP消息,即Ping方式來檢查被檢測服務器的 健康狀況。
[0004] 如果檢測服務器每次Ping后都能從被檢測服務器得到回應,則表明被檢測服務 器是正常的,反之則表明被檢測服務器發(fā)生故障,從而可以決定進一步的容錯處理。
[0005] 快速正確地檢測出被檢測服務器的故障,是整個容錯系統(tǒng)中最重要的環(huán)節(jié),如果 出現(xiàn)誤判,就會給用戶帶來重大損失。
[0006] 傳統(tǒng)的故障檢測機制(心跳機制)在服務器故障識別上存在很大的局限性:
[0007] (1)無法檢測出應用數(shù)據(jù)所使用的網(wǎng)絡接口的故障,因為心跳線采用獨立與應用 數(shù)據(jù)網(wǎng)線的專用的網(wǎng)卡和網(wǎng)線,如果數(shù)據(jù)網(wǎng)絡(網(wǎng)卡或網(wǎng)線等)發(fā)生故障,這種情況下是無 法檢測出來的。
[0008] (2)無法檢測出應用服務程序本身是否發(fā)生異常,心跳機制采用發(fā)送ICMP協(xié)議消 息(Ping)的方式檢測對方服務器的健康狀況,這種Ping方式實事上只能檢測出被檢測服 務器的操作系統(tǒng)是否正常運行。
[0009] (3)如果心跳線本身出現(xiàn)故障,該容錯系統(tǒng)將無法正常工作。
[0010] (4)無法對可能發(fā)生硬件性能瓶頸提前判斷。
[0011] 采用心跳檢測機制的容錯系統(tǒng)中無法檢測應用程序的故障,無法檢測應用數(shù)據(jù) 所使用的網(wǎng)絡故障,同時在心跳線自身故障時,將無法正常行使故障檢測功能。
[0012] 在典型的服務器-客戶機模式下,服務器是由DNS域名確定其位置的,客戶端應用 系統(tǒng)在訪問服務器之前必須通過使用DNS服務對其域名進行解析,從而得到該服務器的IP 地址。在客戶機和服務器建立連接后,就可以進行信息交換;假如這一服務器發(fā)生故障,客 戶機應用系統(tǒng)有兩種可能的選擇:1.中斷通信;2.選擇另一個服務器繼續(xù)。
[0013] 在這種模式下,客戶端應用系統(tǒng)必須通過以下方式檢測出服務器是否中斷:
[0014] (1)服務器沒有響應(time out);
[0015] (2)服務器回應錯誤信息;
[0016] (3)收到傳輸層錯誤信息;
[0017] 為了讓客戶應用程序能夠在檢測出服務器發(fā)生故障后,有選擇其它服務器的可 能,必須在其應用程序中明確提供一個服務器列表,指明:第一服務器、第二服務器、第 三......等。當?shù)谝粋€服務器中斷,則嘗試和第二個服務器建立連接,再則第三,依此類 推。
[0018] 也就是說,這一故障切換過程是由用戶程序的干涉而實現(xiàn)的,有較大局限性:
[0019] 其一、服務器列表是靜態(tài)的,必須有用戶特別指明;
[0020] 其二、替代服務器的選擇有著較大的盲目性,無法保證所選服務器是否正常及有 效,也不能因服務器的負載情況而靈活選擇;
[0021] 其三、接管是通過應用程序而實現(xiàn),缺乏透明性;
[0022] 其四、被動的中斷識別方式;
[0023] 其五、為滿足可靠性的保證,應用程序開發(fā)量較大。
[0024] 因為確有必要對現(xiàn)有技術進行改進。
【發(fā)明內(nèi)容】
[0025] 本發(fā)明的目的在于提供一種服務器故障檢測及切換模塊,在服務器池框架下實現(xiàn) 全透明的故障切換模式,用戶無需任何干預,只需要在服務器故障發(fā)生后進行一個池名解 析就可以獲得新的正常服務器,并重新進行連接,而從方便快捷完成故障切換的過程。
[0026] 為達成前述目的,本發(fā)明一種服務器故障檢測及切換方法,其包括如下步驟:
[0027] (1)首先建立網(wǎng)絡服務器池,所述服務器池包括至少兩臺池化器,其中該池化器負 責將多臺服務器組成一個虛擬的服務器池,并對服務器的運行狀態(tài)進行實時監(jiān)控和采集;
[0028] (2)服務器啟動后向池化器發(fā)送登記消息進行登記;
[0029] (3)池化器收到登記消息后,立即以登記回應消息回復;
[0030] (4)池化器每隔一個固定的時間間隔向該服務器發(fā)送持續(xù)活動消息,對服務器進 行周期性健康狀況檢查;
[0031] (5)服務器接到持續(xù)活動消息后,立即以持續(xù)活動確認消息回復給池化器;
[0032] (6)如果池化器發(fā)出的持續(xù)活動消息,在設定時間內(nèi)沒有收到持續(xù)活動確認消息, 則迅速連續(xù)發(fā)送幾個持續(xù)活動消息,如果仍然沒有收到持續(xù)活動確認消息,則可以判定服 務器發(fā)生故障;
[0033] (7)客戶端通過池名訪問服務器池,首先在池化器處進行池名解析,池化器收到客 戶端發(fā)來的池名解析請求后,會在自身保存的服務器列表中進行查找,并根據(jù)預先確定的 策略選擇一個有效的正常運行的服務器,然后將該服務器的IP地址發(fā)送給發(fā)出解析請求 的客戶端;
[0034] (8)客戶端完成池名解析后,然后根據(jù)解析得到的服務器IP地址,直接訪問服務 器,并進行數(shù)據(jù)交互;
[0035] (9)如果在數(shù)據(jù)交換中該服務器發(fā)生故障,客戶端從傳輸層得到一個錯誤信息,客 戶端由此可以獲知服務器端發(fā)生故障,這時,客戶端進入故障切換模式,客戶端重新在池化 器處做一次池名解析,獲得下一臺正常運行的服務器IP地址,然后直接和新的服務器建立 連接,完成故障切換過程。
[0036] 根據(jù)本發(fā)明的一個實施例,本發(fā)明的服務器池系統(tǒng)由以下三個部分組成:
[0037] 服務器池:服務器池是由一組具有相同功能的,并被統(tǒng)一管理起來的服務器組成, 每個服務器池均使用唯一的池名作為標識;
[0038] 池化器:是服務器池的管理設備,負責將多臺服務器組成一個虛擬的服務器池,并 對各臺服務器的運行狀態(tài)進行實時監(jiān)控和采集;同時提供池名解析功能,以便能讓用戶方 便地訪問服務器;
[0039] 客戶端:訪問服務器池的客戶機。
[0040] 根據(jù)本發(fā)明的一個實施例,所述服務器池采用池化器的池名解析機制:客戶端訪 問服務器池,先在池化器處做池名解析,池化器根據(jù)客戶端提交的解析請求,在自己的服務 器列表中進行查詢,通常每個池名都對應著多個服務器,池化器按照事先確定好的選擇策 略,為該用戶選擇一個最佳的服務器IP,并將該結果以解析回應消息的形式反饋給客戶端。
[0041] 本發(fā)明的有益效果:本發(fā)明的故障識別方法,可識別以下故障種類:宕機故障、月艮 務器程序死鎖、服務器程序崩潰、系統(tǒng)資源耗盡、網(wǎng)絡故障(網(wǎng)卡故障、交換機故障等引起 的網(wǎng)絡通信故障)。故障識別更精準,更快速。相對傳統(tǒng)的故障識別機制(心跳機制)來 說,可以提供更深度的故障檢測功能。并且本發(fā)明的故障切換方法的優(yōu)點在于簡單透明,無 需在客戶端維護一個服務器列表,只需隨時簡單地在池化器做池名解析即可。同時服務器 增加減少或變更都無需通知客戶端做任何改動。對用戶實現(xiàn)了完全的透明化。
【專利附圖】
【附圖說明】
[0042] 圖1是本發(fā)明的服務器池系統(tǒng)的結構示意圖;
[0043] 圖2為本發(fā)明的服務器故障檢測及切換方法的流程圖。
【具體實施方式】
[0044] 此處所稱的"一個實施例"或"實施例"是指可包含于本發(fā)明至少一個實現(xiàn)方式中 的特定特征、結構或特性。在本說明書中不同地方出現(xiàn)的"在一個實施例中"并非均指同一 個實施例,也不是單獨的或選擇性的與其他實施例互相排斥的實施例。
[0045] 請參閱圖1,其為本發(fā)明的服務器池系統(tǒng)的結構示意圖。如圖1所示,本發(fā)明的服 務器池系統(tǒng)由以下三個部分組成:
[0046] 服務器池:服務器池是由一組具有相同功能的,并被統(tǒng)一管理起來的服務器組成, 每個服務器池均使用唯一的池名作為標識;
[0047] 池化器:是服務器池的管理設備,負責將多臺服務器組成一個虛擬的服務器池,并 對各臺服務器的運行狀態(tài)進行實時監(jiān)控和采集;同時提供池名解析功能,以便能讓用戶方 便地訪問服務器;
[0048] 客戶端:訪問服務器池的客戶機。
[0049] 請參閱圖2,其為本發(fā)明的服務器故障檢測及切換方法的流程圖。
[0050] 如圖2所示,其步驟包括:
[0051] 步驟S1 :首先建立網(wǎng)絡服務器池,所述服務器池包括至少兩臺池化器,其中該池 化器負責將多臺服務器組成一個虛擬的服務器池,并對服務器的運行狀態(tài)進行實時監(jiān)控和 米集;
[0052] 步驟S2 :服務器啟動后向池化器發(fā)送登記消息進行登記;
[0053] 步驟S3 :池化器收到登記消息后,立即以登記回應消息回復;
[0054] 步驟S4 :池化器每隔一個固定的時間間隔向該服務器發(fā)送持續(xù)活動消息,對服務 器進行周期性健康狀況檢查;
[0055] 步驟S5 :服務器接到持續(xù)活動消息后,立即以持續(xù)活動確認消息回復給池化器;
[0056] 步驟S6 :如果池化器發(fā)出的持續(xù)活動消息,在設定時間內(nèi)沒有收到持續(xù)活動確認 消息,則迅速連續(xù)發(fā)送幾個持續(xù)活動消息,如果仍然沒有收到持續(xù)活動確認消息,則可以判 定服務器發(fā)生故障;
[0057] 步驟S7 :客戶端通過池名訪問服務器池,首先在池化器處進行池名解析,池化器 收到客戶端發(fā)來的池名解析請求后,會在自身保存的服務器列表中進行查找,并根據(jù)預先 確定的策略選擇一個有效的正常運行的服務器,然后將該服務器的IP地址發(fā)送給發(fā)出解 析請求的客戶端;
[0058] 步驟S8 :客戶端完成池名解析后,然后根據(jù)解析得到的服務器IP地址,直接訪問 服務器,并進行數(shù)據(jù)交互;
[0059] 步驟S9 :如果在數(shù)據(jù)交換中該服務器發(fā)生故障,客戶端從傳輸層得到一個錯誤信 息,客戶端由此可以獲知服務器端發(fā)生故障,這時,客戶端進入故障切換模式,客戶端重新 在池化器處做一次池名解析,獲得下一臺正常運行的服務器IP地址,然后直接和新的服務 器建立連接,完成故障切換過程。
[0060] 由于服務器在登記時,提供其自身服務的相關信息,比如:服務協(xié)議、IP地址、端 口號、以及是否進行服務檢測等信息,如果服務器需要進行服務檢測,池化器根據(jù)這些信 息,對該服務器進行周期性的服務可用性探測,方法是向指定的IP和端口按照其服務協(xié)議 發(fā)送探測消息,然后通過服務器的回應判斷其服務正常與否。
[0061] 本發(fā)明的故障識別方法,可識別以下故障種類:宕機故障、服務器程序死鎖、服務 器程序崩潰、系統(tǒng)資源耗盡、網(wǎng)絡故障(網(wǎng)卡故障、交換機故障等引起的網(wǎng)絡通信故障)。故 障識別更精準,更快速。相對傳統(tǒng)的故障識別機制(心跳機制)來說,可以提供更深度的故 障檢測功能。并且本發(fā)明的故障切換方法的優(yōu)點在于簡單透明,無需在客戶端維護一個服 務器列表,只需隨時簡單地在池化器做池名解析即可。同時服務器增加減少或變更都無需 通知客戶端做任何改動。對用戶實現(xiàn)了完全的透明化。
[0062] 上述說明已經(jīng)充分揭露了本發(fā)明的【具體實施方式】。需要指出的是,熟悉該領域的 技術人員對本發(fā)明的【具體實施方式】所做的任何改動均不脫離本發(fā)明的權利要求書的范圍。 相應地,本發(fā)明的權利要求的范圍也并不僅僅局限于前述【具體實施方式】。
【權利要求】
1. 一種服務器故障檢測及切換方法,其包括如下步驟: (1) 首先建立網(wǎng)絡服務器池,所述服務器池包括至少兩臺池化器,其中該池化器負責將 多臺服務器組成一個虛擬的服務器池,并對服務器的運行狀態(tài)進行實時監(jiān)控和采集; (2) 服務器啟動后向池化器發(fā)送登記消息進行登記; (3) 池化器收到登記消息后,立即以登記回應消息回復; (4) 池化器每隔一個固定的時間間隔向該服務器發(fā)送持續(xù)活動消息,對服務器進行周 期性健康狀況檢查; (5) 服務器接到持續(xù)活動消息后,立即以持續(xù)活動確認消息回復給池化器; (6) 如果池化器發(fā)出的持續(xù)活動消息,在設定時間內(nèi)沒有收到持續(xù)活動確認消息,則迅 速連續(xù)發(fā)送幾個持續(xù)活動消息,如果仍然沒有收到持續(xù)活動確認消息,則可以判定服務器 發(fā)生故障; (7) 客戶端通過池名訪問服務器池,首先在池化器處進行池名解析,池化器收到客戶端 發(fā)來的池名解析請求后,會在自身保存的服務器列表中進行查找,并根據(jù)預先確定的策略 選擇一個有效的正常運行的服務器,然后將該服務器的IP地址發(fā)送給發(fā)出解析請求的客 戶端; (8) 客戶端完成池名解析后,然后根據(jù)解析得到的服務器IP地址,直接訪問服務器,并 進行數(shù)據(jù)交互; (9) 如果在數(shù)據(jù)交換中該服務器發(fā)生故障,客戶端從傳輸層得到一個錯誤信息,客戶 端由此可以獲知服務器端發(fā)生故障,這時,客戶端進入故障切換模式,客戶端重新在池化器 處做一次池名解析,獲得下一臺正常運行的服務器IP地址,然后直接和新的服務器建立連 接,完成故障切換過程。
2. 根據(jù)權利要求1所述的服務器故障檢測及切換方法,其特征在于:本發(fā)明的服務器 池系統(tǒng)由以下三個部分組成: 服務器池:服務器池是由一組具有相同功能的,并被統(tǒng)一管理起來的服務器組成,每個 服務器池均使用唯一的池名作為標識; 池化器:是服務器池的管理設備,負責將多臺服務器組成一個虛擬的服務器池,并對各 臺服務器的運行狀態(tài)進行實時監(jiān)控和采集;同時提供池名解析功能,以便能讓用戶方便地 訪問服務器; 客戶端:訪問服務器池的客戶機。
3. 根據(jù)權利要求1所述的服務器故障檢測及切換方法,其特征在于:所述服務器池采 用池化器的池名解析機制:客戶端訪問服務器池,先在池化器處做池名解析,池化器根據(jù)客 戶端提交的解析請求,在自己的服務器列表中進行查詢,通常每個池名都對應著多個服務 器,池化器按照事先確定好的選擇策略,為該用戶選擇一個最佳的服務器IP,并將該結果以 解析回應消息的形式反饋給客戶端。
【文檔編號】H04L12/24GK104144064SQ201310166822
【公開日】2014年11月12日 申請日期:2013年5月9日 優(yōu)先權日:2013年5月9日
【發(fā)明者】張焰 申請人:張焰