本公開涉及互聯(lián)網(wǎng)應(yīng)用技術(shù)領(lǐng)域,特別涉及服務(wù)器集群的故障解決方法和裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)應(yīng)用技術(shù)的發(fā)展,服務(wù)器集群的高可用性越來越重要。將主服務(wù)器和備用服務(wù)器組成一個服務(wù)器集群,該服務(wù)器集群通過唯一的虛擬ip地址和外部網(wǎng)絡(luò)通信。
現(xiàn)有技術(shù)中,當服務(wù)器集群中的主服務(wù)器出現(xiàn)故障時,啟用服務(wù)器集群中的備用服務(wù)器以代替主數(shù)據(jù)庫服務(wù)器,并將虛擬ip地址設(shè)置在新的主服務(wù)器上。但是,當原來發(fā)生故障的主服務(wù)器重新恢復后,服務(wù)器集群中存在兩個主服務(wù)器與虛擬ip地址綁定。即服務(wù)器集群中同時出現(xiàn)兩個擁有虛擬ip地址的主服務(wù)器,服務(wù)器集群中原本處于服務(wù)器同步狀態(tài)的主服務(wù)器和備用服務(wù)器,分裂為兩個獨立的主服務(wù)器。這兩個獨立的主服務(wù)器將導致服務(wù)器集群無法有效地與外部網(wǎng)絡(luò)通信。
技術(shù)實現(xiàn)要素:
為了解決相關(guān)技術(shù)中存在的服務(wù)器集群在故障解決后無法有效與外部網(wǎng)絡(luò)通信的技術(shù)問題,本公開提供了一種服務(wù)器集群的故障解決方法及裝置。
一種服務(wù)器集群的故障解決方法,所述服務(wù)器集群包括主服務(wù)器和備用服務(wù)器,所述服務(wù)器集群通過綁定的虛擬ip地址和外部網(wǎng)絡(luò)通信,所述方法包括:
監(jiān)聽所述服務(wù)器集群中的主服務(wù)器;
在所述主服務(wù)器處于故障狀態(tài)時,啟用所述服務(wù)器集群中的備用服務(wù)器,并重新確定所述服務(wù)器集群中的所有服務(wù)器的優(yōu)先權(quán)等級;
根據(jù)重新確定的所述優(yōu)先權(quán)等級,更新所述虛擬ip地址和所述服務(wù)器集群中的服務(wù)器綁定,以使所述備用服務(wù)器代替所述主服務(wù)器。
一種服務(wù)器集群的故障解決裝置,所述裝置包括:
監(jiān)聽裝置,用于監(jiān)聽所述服務(wù)器集群中的主服務(wù)器;
切換裝置,用于在所述主服務(wù)器處于故障狀態(tài)時,啟用所述服務(wù)器集群中的備用服務(wù)器,并重新確定所述服務(wù)器集群中的所有服務(wù)器的優(yōu)先權(quán)等;
ip地址更新裝置,用于根據(jù)重新確定的所述優(yōu)先權(quán)等級,更新所述虛擬ip地址和所述服務(wù)器集群中的服務(wù)器綁定,以使所述備用服務(wù)器代替所述主服務(wù)器。
本公開的實施例提供的技術(shù)方案可以包括以下有益效果:通過主服務(wù)器和備用服務(wù)器組合成服務(wù)器集群,服務(wù)器集群通過唯一的虛擬ip地址和外部網(wǎng)絡(luò)通信。監(jiān)聽服務(wù)器集群中的主服務(wù)器,當主服務(wù)器處于故障狀態(tài)時,啟用服務(wù)器集群中的備用服務(wù)器以代替主服務(wù)器。更新虛擬ip地址和服務(wù)器集群中的服務(wù)器綁定,及時解除原來的主服務(wù)器的虛擬ip地址綁定,且在替代主服務(wù)器的備用服務(wù)器上綁定虛擬ip地址。避免了服務(wù)器集群中同時出現(xiàn)兩個綁定虛擬ip地址的主服務(wù)器,確保外部網(wǎng)絡(luò)訪問服務(wù)器集群的請求可以達到該服務(wù)器集群。
應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實施例,并于說明書一起用于解釋本發(fā)明的原理。
圖1是一示例性實施例示出的服務(wù)器集群的故障解決方法的流程圖。
圖2是圖1對應(yīng)實施例示出的方法中步驟110的一種具體實現(xiàn)流程圖。
圖3是圖1對應(yīng)實施例示出的方法中步驟130的一種具體實現(xiàn)流程圖。
圖4是圖3對應(yīng)實施例示出的方法中步驟131的一種具體實現(xiàn)流程圖。
圖5是另一示例性實施例示出的服務(wù)器集群的故障解決方法的示意圖。
圖6是一示例性實施例示出的服務(wù)器集群的故障解決裝置的框圖。
圖7是根據(jù)圖6對應(yīng)實施例的裝置中的監(jiān)聽裝置在一個實施例的框圖。
圖8是根據(jù)圖6對應(yīng)實施例的裝置中的切換裝置在一個實施例的框圖。
圖9是根據(jù)圖8對應(yīng)實施例的裝置中的優(yōu)先權(quán)值獲取單元在一個實施例的框圖。
具體實施方式
這里將詳細地對示例性實施例執(zhí)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
圖1是根據(jù)一示例性實施例示出的服務(wù)器集群的故障解決方法的流程圖。如圖1所示,該方法包括以下步驟:
在步驟110中,監(jiān)聽服務(wù)器集群中的主服務(wù)器。
主服務(wù)器,是指服務(wù)器集群中為外部網(wǎng)絡(luò)提供數(shù)據(jù)服務(wù)的服務(wù)器。服務(wù)器集群中包括多個服務(wù)器,但只有主服務(wù)器為外部網(wǎng)絡(luò)提供數(shù)據(jù)服務(wù),其它的備用服務(wù)器作為該主服務(wù)器的備用服務(wù)器,只有當主服務(wù)器發(fā)生故障才會被啟動以代替主服務(wù)器器。為保證主服務(wù)器發(fā)生故障時,能立即啟動備用服務(wù)器以代替主服務(wù)器器,需要對處于工作狀態(tài)的主服務(wù)器進行監(jiān)聽。
虛擬ip地址,是指在通過協(xié)議軟件實現(xiàn)服務(wù)器集群的路由功能時,由具有虛擬路由冗余功能的協(xié)議軟件將一個ip地址動態(tài)分配給服務(wù)器集群中的服務(wù)器,該ip地址不需要和物理網(wǎng)關(guān)相關(guān)聯(lián),但能實現(xiàn)服務(wù)器集群的路由功能。
不管該服務(wù)器集群由多少臺的服務(wù)器組成,都只有一臺主服務(wù)器通過綁定唯一的虛擬ip地址,負責服務(wù)器集群的路由工作。外部網(wǎng)絡(luò)通過該唯一的虛擬ip地址訪問服務(wù)器集群。
通過將主服務(wù)器和備用服務(wù)器組合成服務(wù)器集群,該服務(wù)器集群通過唯一的虛擬ip地址和外部網(wǎng)絡(luò)通信。該虛擬ip地址和服務(wù)器集群中的主服務(wù)器綁定,外部網(wǎng)絡(luò)通過向該虛擬ip地址發(fā)送訪問請求以獲取服務(wù)器集群提供的數(shù)據(jù)服務(wù)。
在一個具體的實施例中,通過向服務(wù)器集群中的主服務(wù)器持續(xù)的發(fā)送icmp(internetcontrolmessageprotocol,網(wǎng)絡(luò)控制消息協(xié)議)數(shù)據(jù)包,如果主服務(wù)器能夠響應(yīng)該數(shù)據(jù)包并返回有效的ip地址,則主服務(wù)器處于工作正常狀態(tài)。如果主服務(wù)器不能返回有效的ip地址,即可判定主服務(wù)器處于故障狀態(tài)。
icmp是tcp/ip協(xié)議族的子協(xié)議,用于在主機和路由器之間傳遞控制消息。icmp數(shù)據(jù)包在linux系統(tǒng)和windows系統(tǒng)中可以通過ping程序?qū)崿F(xiàn)。
在另一個具體的實施例中,通過監(jiān)聽主服務(wù)器的tcp端口狀態(tài)來判斷該主服務(wù)器是否處于故障狀態(tài)。例如,如果監(jiān)聽到主服務(wù)器瀏覽網(wǎng)頁服務(wù)默認的80端口沒有啟動,即可判斷主服務(wù)器處于故障狀態(tài)。
通過對主服務(wù)器進行持續(xù)的監(jiān)聽,一旦發(fā)現(xiàn)主服務(wù)器處于故障狀態(tài),即可在非常短的時間內(nèi)啟動服務(wù)器集群中的備用服務(wù)器以替代該主服務(wù)器,使得外部網(wǎng)絡(luò)與服務(wù)器集群之間的通信不會因主服務(wù)器出現(xiàn)故障而中斷。
在步驟130中,在主服務(wù)器處于故障狀態(tài)時,啟用服務(wù)器集群中的備用服務(wù)器,并重新確定服務(wù)器集群中的所有服務(wù)器的優(yōu)先權(quán)等級。
在服務(wù)器集群正常工作狀態(tài)下,服務(wù)器集群中的主服務(wù)器和備用服務(wù)器處于服務(wù)器同步狀態(tài)。當監(jiān)聽到主服務(wù)器故障,立即啟動服務(wù)器集群中主服務(wù)器和備用服務(wù)器進行切換,以備用服務(wù)代替原來的主服務(wù)器工作。同時,重新確定服務(wù)器集群中的所有服務(wù)器的優(yōu)先權(quán)等級,以按照新確定的優(yōu)先權(quán)等級,更新虛擬ip地址和服務(wù)器集群中的服務(wù)器綁定,以使備用服務(wù)器代替主服務(wù)器。
優(yōu)先權(quán)等級,是指在配置了虛擬路由冗余協(xié)議的服務(wù)器集群中有多臺服務(wù)器,但是這些服務(wù)器并不能同時工作,而是由一臺主服務(wù)器同虛擬ip地址綁定而負責路由工作。服務(wù)器集群就通過這個虛擬ip地址來與其它網(wǎng)絡(luò)進行通信。服務(wù)器集群中的多臺服務(wù)器通過比較各自的優(yōu)先權(quán)等級,優(yōu)先權(quán)等級最高的數(shù)據(jù)庫服務(wù)器成為主服務(wù)器并和虛擬ip地址進行綁定。虛擬冗余協(xié)議中優(yōu)先權(quán)等級范圍是0至255,優(yōu)先權(quán)等級0只有當虛擬ip地址的所有者主動放棄主控者角色時才使用。因此,虛擬冗余協(xié)議中可配置的優(yōu)先級范圍為1至254。優(yōu)先權(quán)等級的配置原則可以依據(jù)鏈路的速度和成本、路由器性能和可靠性以及其它管理策略設(shè)定。
在一個具體的實施例中,通過將數(shù)據(jù)庫高可用組件中的節(jié)點組件分別安裝于服務(wù)器集群中的主服務(wù)器和備用服務(wù)器。數(shù)據(jù)庫高可用組件中的管理員組件單獨部署在一臺獨立的服務(wù)器上。管理員組件通過ping程序定時探測服務(wù)器集群中的主服務(wù)器,當主服務(wù)器出現(xiàn)故障時,它可以自動將已經(jīng)復制了最新數(shù)據(jù)的備用服務(wù)器提升為新的主服務(wù)器,然后將其它的備用數(shù)據(jù)庫服務(wù)器重新連接到新的主服務(wù)器,重新將服務(wù)器集群設(shè)置為服務(wù)器同步狀態(tài)。
高可用組件,是指用于提高服務(wù)器集群可用性的一套軟件系統(tǒng),高可用組件包括管理員組件和節(jié)點組件,管理員組件用于服務(wù)器的故障探測和切換,節(jié)點組件主要實現(xiàn)服務(wù)器上的二進制歸檔日志保存功能,并通過管理員組件來觸發(fā)節(jié)點組件執(zhí)行對二進制歸檔日志的保存。
二進制歸檔日志,是記錄主服務(wù)器上的數(shù)據(jù)更新的日志,當主服務(wù)器發(fā)生故障時,節(jié)點組件通過將主服務(wù)器二進制歸檔日志復制到備用服務(wù)器,保證備用服務(wù)器和主服務(wù)器的存儲數(shù)據(jù)保持一致。
如果主服務(wù)器發(fā)生故障時,備用服務(wù)器未能獲取到最新的該主服務(wù)器二進制歸檔日志,導致備用服務(wù)器和主服務(wù)器的存儲數(shù)據(jù)不一致。通過高可用組件對服務(wù)器集群中的服務(wù)器進行故障切換過程中,高可用組件通過讀取發(fā)生故障的主服務(wù)器的上二進制歸檔日志,并將主服務(wù)器二進制歸檔日志復制到備用數(shù)據(jù)庫服務(wù)器,最大程度的保證主服務(wù)器上的數(shù)據(jù)不丟失。
在監(jiān)聽得到主服務(wù)器處于故障狀態(tài)時,啟用服務(wù)器集群中的備用服務(wù)器。同時,重新確定服務(wù)器集群中的所有服務(wù)器的優(yōu)先權(quán)等級,服務(wù)器集群中的多臺服務(wù)器通過比較各自的優(yōu)先權(quán)等級,使得優(yōu)先權(quán)等級最高的服務(wù)器成為主服務(wù)器,并能和服務(wù)器集群的虛擬ip地址進行綁定。
在步驟150中,根據(jù)重新確定的優(yōu)先權(quán)等級,更新虛擬ip地址和服務(wù)器集群中的服務(wù)器綁定,以使備用服務(wù)器代替主服務(wù)器。
根據(jù)重新確定的優(yōu)先權(quán)等級,更新虛擬ip地址和所述服務(wù)器集群中的服務(wù)器綁定,以使備用服務(wù)器代替主服務(wù)器。更新虛擬ip地址和服務(wù)器集群中的服務(wù)器綁定,需要在代替主服務(wù)器的備份服務(wù)器上設(shè)置虛擬ip地址的同時,將該虛擬ip地址和原來的主服務(wù)器綁定解除。
在一個具體的實施例中,通過分別在主服務(wù)器和備用服務(wù)器上安裝keepalived軟件為服務(wù)器集配置群虛擬冗余協(xié)議。主服務(wù)器和備用服務(wù)器之間通過基于虛擬路由冗余協(xié)議的keepalived軟件進行通信。
通過keepalived軟件為服務(wù)器集配置群虛擬冗余協(xié)議,當備用服務(wù)器的優(yōu)先權(quán)等級高于主服務(wù)器,該備用服務(wù)器便會剝奪當前低優(yōu)先權(quán)等級的主服務(wù)器而成為新的主服務(wù)器。通過獲取進行虛擬路由冗余協(xié)議配置后的服務(wù)器集群中的全部服務(wù)器的優(yōu)先權(quán)等級,保證優(yōu)先權(quán)等級最高的服務(wù)器可以獲得服務(wù)器集群的唯一的虛擬ip地址。
為避免服務(wù)器集群中同時出現(xiàn)兩個綁定虛擬ip地址的主數(shù)據(jù)庫服務(wù)器,通過虛擬路由冗余協(xié)議配置服務(wù)器集群,獲取主服務(wù)器和備用服務(wù)器各自在服務(wù)器集群中的優(yōu)先權(quán)等級。通過虛擬路由冗余協(xié)議自動將優(yōu)先權(quán)等級最高的數(shù)據(jù)庫服務(wù)器配置為主服務(wù)器,并更新虛擬ip地址和新的主服務(wù)器進行綁定。避免了服務(wù)器集群中同時出現(xiàn)兩個綁定虛擬ip地址的主服務(wù)器,確保外部網(wǎng)絡(luò)訪問服務(wù)器集群的請求可以達到服務(wù)器集群。
在另一個示例性實施例中,在步驟110之前還包括步驟101。
在步驟101中,通過向服務(wù)器集群發(fā)送服務(wù)器同步狀態(tài)指令,將主服務(wù)器存儲的內(nèi)容復制到備用服務(wù)器。
服務(wù)器同步狀態(tài),是指服務(wù)器集群中的備用服務(wù)器中全部指向并連接到主服務(wù)器,并對主服務(wù)器中存儲的內(nèi)容根據(jù)預(yù)先設(shè)定的時間間隔不斷的復制,使得備用服務(wù)器存儲的內(nèi)容和主服務(wù)器存儲的內(nèi)容保存一致的狀態(tài)。通過向服務(wù)器集群發(fā)送服務(wù)器同步狀態(tài)指令,設(shè)置服務(wù)器集群處于服務(wù)器同步狀態(tài),將主服務(wù)器存儲的內(nèi)容復制到備用服務(wù)器。
在一個具體的實施例中,高可用組件中的管理員組件通過向分別安裝于主服務(wù)器和備用服務(wù)器的節(jié)點組件發(fā)送同步狀態(tài)指令,備用服務(wù)通過和主服務(wù)器建立連接并將主服務(wù)器存儲的內(nèi)容復制到備用服務(wù)器。
通過向服務(wù)器集群發(fā)送同步狀態(tài)指令,設(shè)置服務(wù)器集群處于服務(wù)器同步狀態(tài),保證當主服務(wù)器發(fā)生故障而啟動備用服務(wù)器代替主服務(wù)器,備用服務(wù)器中存儲的內(nèi)容和主服務(wù)器中存儲的內(nèi)容一致。
圖2是圖1對應(yīng)實施例示出的方法中步驟110的一種具體實現(xiàn)流程圖。圖2所示,該步驟110還包括以下步驟:
在步驟111中,向服務(wù)器集群中的主服務(wù)器發(fā)送詢問指令。
通過備用服務(wù)器或者獨立于服務(wù)器集群的外部服務(wù)器不間斷的發(fā)送詢問指令給主服務(wù)器,當備用服務(wù)器或者獨立于服務(wù)器集群的外部服務(wù)器在設(shè)定的時間間隔內(nèi)沒有收到該詢問指令的應(yīng)答指令,即可判定主服務(wù)器處于故障狀態(tài)。
詢問指令,是指備用服務(wù)器或者獨立于服務(wù)器集群的其它服務(wù)器為了探測主服務(wù)器是否處于正常工作狀態(tài)而向主服務(wù)器發(fā)送的探測指令。
在一個具體的實施例中,詢問指令可以通過安裝于備用服務(wù)器之上的keepalived軟件發(fā)送的報文來實現(xiàn)。其中,keepalived軟件是一個基于虛擬路由冗余協(xié)議而實現(xiàn)收發(fā)虛擬路由冗余報文的軟件。通過分別在主服務(wù)器和備用服務(wù)器上安裝基于虛擬路由冗余協(xié)議的keepalived軟件。通過虛擬路由冗余協(xié)議配置服務(wù)器集群。主服務(wù)器和備用服務(wù)器之間利用keepalived軟件發(fā)送虛擬路由冗余協(xié)議報文進行通信,通過keepalived軟件提供的檢測函數(shù)監(jiān)聽服務(wù)器集群中的主服務(wù)器的運行狀態(tài)是否正常。
具體的,通過安裝于備用服務(wù)器上keepalived軟件或者安裝在獨立于服務(wù)器集群的外部服務(wù)器的keepalived軟件,不間斷的發(fā)送詢問指令給安裝于主數(shù)據(jù)庫服務(wù)器的keepalived軟件。當安裝于備用服務(wù)器上keepalived軟件或者安裝在獨立于服務(wù)器集群的外部服務(wù)器的keepalived軟件在設(shè)定的時間間隔內(nèi)沒有收到該詢問指令的應(yīng)答指令,即可判定主服務(wù)器處于故障狀態(tài)。
在步驟113中,通過在預(yù)先設(shè)定的切換時間內(nèi)未能接收主服務(wù)器發(fā)出的應(yīng)答指令,判定主服務(wù)器處于故障狀態(tài)。
當主服務(wù)器處于故障狀態(tài),可能造成外部網(wǎng)絡(luò)的訪問請求不可以達到服務(wù)器集群。通過監(jiān)聽服務(wù)器集群中的主服務(wù)器,通過在預(yù)先設(shè)定的切換時間內(nèi)未能獲得主服務(wù)器發(fā)出的應(yīng)答指令,判定主服務(wù)器處于故障狀態(tài)。
可見,由于服務(wù)器集群能夠及時啟動服務(wù)器集群中的備用服務(wù)器以代替主服務(wù)器,使得外部網(wǎng)絡(luò)訪問請求能夠及時達到服務(wù)器集群而不會中斷服務(wù)器集群提供的數(shù)據(jù)服務(wù),提高了服務(wù)器集群的可用性。
圖3是圖1對應(yīng)實施例示出的方法中步驟130的一種具體實現(xiàn)流程圖。如圖3示,步驟130還包括以下步驟:
在步驟131中,獲取由虛擬路由冗余協(xié)議配置后的所述服務(wù)器集群中的全部服務(wù)器各自的優(yōu)先權(quán)值。
虛擬路由冗余協(xié)議,是指一種選擇協(xié)議,它可以把一個虛擬ip地址動態(tài)分配給服務(wù)器集群中的一臺服務(wù)器。綁定虛擬ip地址的服務(wù)器稱為主服務(wù)器。主服務(wù)器通過虛擬路由冗余報文將服務(wù)器集群中服務(wù)器的優(yōu)先權(quán)等級和工作狀態(tài)通告給所有的其它服務(wù)器。
優(yōu)先權(quán)值,是指由虛擬路由冗余協(xié)議配置后的服務(wù)器集群中的全部服務(wù)器后,用于計算服務(wù)器集群中的全部服務(wù)器的優(yōu)先權(quán)等級的數(shù)值。
通過獲取由虛擬路由冗余協(xié)議配置后的服務(wù)器集群中的全部服務(wù)器各自的優(yōu)先權(quán)值,即可確定服務(wù)器集群中的每個服務(wù)器的優(yōu)選權(quán)等級。
在步驟133中,根據(jù)優(yōu)先權(quán)值,重新確定主服務(wù)器、備用服務(wù)器的優(yōu)先權(quán)等級。
服務(wù)器集群配置虛擬路由冗余協(xié)議功能后,服務(wù)器集群中的服務(wù)器會根據(jù)優(yōu)先級確定自己在服務(wù)器集群中的角色。優(yōu)先權(quán)等級高的服務(wù)器成為主數(shù)據(jù)庫服務(wù)器,優(yōu)先權(quán)等級低的成為備份服務(wù)器。
主服務(wù)器定期發(fā)送虛擬路由冗余協(xié)議報文,通知服務(wù)器集群內(nèi)的其他備份服務(wù)器自己工作正常。當服務(wù)器集群里有多臺備份服務(wù)器時,短時間內(nèi)可能產(chǎn)生多個主服務(wù)器,此時,備份服務(wù)器將會將收到的虛擬路由協(xié)議報文中的優(yōu)先權(quán)等級與自身的優(yōu)先權(quán)等級做比較。從而選取優(yōu)先權(quán)等級最高的服務(wù)器和虛擬ip地址進行綁定。
如果主服務(wù)器壞掉,服務(wù)器集群將會通過優(yōu)先權(quán)等級選舉策略選出一個新的主服務(wù)器,繼續(xù)向外部網(wǎng)絡(luò)提供數(shù)據(jù)服務(wù)。從而實現(xiàn)服務(wù)器集群不間斷地與外部網(wǎng)絡(luò)進行通信。服務(wù)器集群中的主服務(wù)器的改變,不影響外部網(wǎng)絡(luò)對服務(wù)器集群的訪問。
在一個具體的實施例中,通過配置虛擬路由冗余協(xié)議的服務(wù)器集群支持的優(yōu)先權(quán)等級的范圍是0至255。當主服務(wù)器的優(yōu)先權(quán)等級為100,如果服務(wù)器集群中的一個備份服務(wù)器的優(yōu)先權(quán)等級為120。由于備份數(shù)據(jù)庫服務(wù)器的優(yōu)先權(quán)等級120大于主服務(wù)器的優(yōu)先權(quán)等級100,服務(wù)器集群將虛擬ip地址和優(yōu)先權(quán)等級為120的備份服務(wù)器進行綁定,并將原來的主服務(wù)器和虛擬ip地址解除綁定。
如果服務(wù)器集群中的主服務(wù)器壞掉,備用服務(wù)器將會通過基于虛擬路由冗余協(xié)議的選舉策略選出一個新的主服務(wù)器,從而實現(xiàn)服務(wù)器集群不間斷地與外部網(wǎng)絡(luò)進行通信。確保任何時候,外部網(wǎng)絡(luò)訪問服務(wù)器集群的請求都可以達到該服務(wù)器集群。
圖4是圖3對應(yīng)實施例示出的方法中步驟131的一種具體實現(xiàn)流程圖。圖4示,步驟131還包括以下步驟:
在步驟171中,獲取主服務(wù)器、備用服務(wù)器和服務(wù)器同步狀態(tài)各自的優(yōu)先權(quán)初始值。
優(yōu)先權(quán)初始值,是指虛擬路由冗余協(xié)議賦予主服務(wù)器、備用服務(wù)器和服務(wù)器同步狀態(tài)的用于計算優(yōu)先權(quán)等級的初始值。
主服務(wù)器和備用服務(wù)器各自的優(yōu)先權(quán)初始值存儲于服務(wù)器自身的優(yōu)先權(quán)值表中。通過讀取主服務(wù)器、備用服務(wù)器各自優(yōu)先權(quán)值表中的優(yōu)先權(quán)初始值,得到主服務(wù)器的優(yōu)先權(quán)初始值和備份服務(wù)器的優(yōu)先權(quán)初始值。而服務(wù)器同步狀態(tài)的優(yōu)先權(quán)初始值默認為0。
在步驟173中,對主服務(wù)器、備用服務(wù)器和服務(wù)器同步狀態(tài)進行檢測識別,獲取由檢測識別成功而返回的識別值。
主服務(wù)器和備用服務(wù)器在工作中處于不同的讀寫狀態(tài)。當服務(wù)器集群處于工作狀態(tài),主服務(wù)器處于可讀寫狀態(tài),備用服務(wù)器處于只讀狀態(tài)。通過讀取主服務(wù)器中的讀寫標志位,并根據(jù)該讀寫標志位判斷該服務(wù)器為主服務(wù)器。
通過在備用服務(wù)器中設(shè)置一個備份標志位,通過讀取備用數(shù)據(jù)庫服務(wù)器中的該備份標志位,判斷該服務(wù)器為備用服務(wù)器。
如果備用服務(wù)器代替原來的主服務(wù)器且和虛擬ip地址綁定。服務(wù)器集群中的其它服務(wù)器全部連接該備用服務(wù)器,即服務(wù)器集群重新處于服務(wù)器同步狀態(tài),已經(jīng)切換為主服務(wù)器的該備用數(shù)據(jù)庫服務(wù)器中的備用標志位將被清除。
在一個具體的實施例中,通過keepalived軟件提供的識別函數(shù)讀取主服務(wù)器中的讀寫標志位,并返回對應(yīng)主服務(wù)器的識別值。通過識別函數(shù)讀取備用服務(wù)器中的備份標志位,并返回對應(yīng)備用服務(wù)器的識別值。通過識別函數(shù)讀取服務(wù)器同步狀態(tài)對應(yīng)的同步進程,根據(jù)該同步進程判斷服務(wù)器同步狀態(tài)建立,并返回對應(yīng)服務(wù)器同步狀態(tài)的識別值。
在一個具體的實施例中,識別函數(shù)識別主服務(wù)器中的讀寫標志位成功,并返回的識別值為50。識別函數(shù)識別備用服務(wù)器中的備用標志位成功,并返回的識別值為40。識別函數(shù)識別服務(wù)器同步狀態(tài)成功而返回的識別值為20。
在步驟175中,根據(jù)識別返回值和優(yōu)先權(quán)初始值,得到主服務(wù)器、備用服務(wù)器各自的優(yōu)先權(quán)值。
根據(jù)主服務(wù)器、備用服務(wù)器各自的優(yōu)先權(quán)初始值,以及通過對主服務(wù)器、備用服務(wù)器和服務(wù)器同步狀態(tài)進行檢測識別而返回的識別值,得到主服務(wù)器、備用服務(wù)器各自的優(yōu)先權(quán)值。通過主服務(wù)器、備用服務(wù)器各自的優(yōu)先權(quán)值,確定主服務(wù)器、備用服務(wù)器在服務(wù)器集群中的優(yōu)先權(quán)等級。
在一個具體的實施例中,當服務(wù)器集群處于正常工作狀態(tài)下,主服務(wù)器優(yōu)先權(quán)初始值為100,通過識別函數(shù)識別該主服務(wù)器和服務(wù)器同步狀態(tài)成功,分別返回的識別值為50和20。將主服務(wù)器的優(yōu)先權(quán)初始值、對應(yīng)主服務(wù)器、服務(wù)器同步狀態(tài)的識別值三者相加,得到該主服務(wù)器的優(yōu)先權(quán)值為170。
備份服務(wù)器的優(yōu)先權(quán)初始值90,通過識別函數(shù)識別備份服務(wù)器成功而返回的識別值40,通過備份服務(wù)器的優(yōu)先權(quán)初始值、識別值二者相加,得到備份服務(wù)器的優(yōu)先權(quán)值為130。
通過比較主服務(wù)器的優(yōu)先權(quán)值170和備份服務(wù)器的優(yōu)先權(quán)值130,得到主服務(wù)器的優(yōu)先權(quán)等級大于備份服務(wù)器的優(yōu)先權(quán)等級。即當服務(wù)器集群處于正常工作狀態(tài)下,服務(wù)器虛擬ip地址綁定不會發(fā)生更新。
在一個具體的實施例中,當主服務(wù)器故障,服務(wù)器集群啟動備用服務(wù)器以代替主服務(wù)器,并將備用服務(wù)器設(shè)置為讀寫狀態(tài)。此時,由于備用服務(wù)器的備用標志位沒有被清除,通過識別函數(shù)識別備用服務(wù)器成功而返回的識別值等于讀寫標志位50和備用標志位40二者之和90。通過備用服務(wù)器的優(yōu)先權(quán)初始值、對應(yīng)備用服務(wù)器識別值二者相加,得到該備用服務(wù)器的優(yōu)先權(quán)值為180。
由于服務(wù)器集群的服務(wù)器同步狀態(tài)還沒有建立,原來的主服務(wù)器仍然為讀寫狀態(tài),通過識別函數(shù)識別原來的主服務(wù)器成功而返回的識別值為50。通過將主服務(wù)器的優(yōu)先權(quán)初始值100和對應(yīng)主服務(wù)器返回值50二者相加,得到主服務(wù)器的優(yōu)先權(quán)值為150。
在另一個具體的實施例中,根據(jù)備份服務(wù)器的優(yōu)先權(quán)值180大于主服務(wù)器的優(yōu)先權(quán)值150,得到備份服務(wù)器的優(yōu)先權(quán)等級大于主服務(wù)器的優(yōu)先權(quán)等級。啟動更新服務(wù)器集群中虛擬ip地址的服務(wù)器綁定,即解除主服務(wù)器的虛擬ip地址綁定,并將該虛擬ip地址和對應(yīng)該優(yōu)先權(quán)值為150的備份服務(wù)器進行綁定,備份服務(wù)器成為新的主服務(wù)器。
在另一個具體的實施例中,當主服務(wù)器故障,服務(wù)器集群啟動備用服務(wù)器以代替主服務(wù)器。通過將備用服務(wù)器設(shè)置為讀寫狀態(tài),服務(wù)器集群中的其它服務(wù)器全部指向該備份服務(wù)器,并和該備份數(shù)據(jù)庫服務(wù)器建立連接,即服務(wù)器集群重新建立的服務(wù)器同步狀態(tài)。
此時,新的備用服務(wù)器代替原來的主服務(wù)器并綁定虛擬ip地址,備用服務(wù)器中的備用標志位被清除。備用服務(wù)器設(shè)置為讀寫狀態(tài),識別函數(shù)識別備用服務(wù)器中的讀寫標志位成功而返回的識別值為50。原來的主服務(wù)器被設(shè)置為只讀狀態(tài),識別函數(shù)識別該原主服務(wù)器中的備用標志位成功而返回的識別值為40。
通過將備用服務(wù)器的優(yōu)先權(quán)初始值90、對應(yīng)備用服務(wù)器識別值50和同步狀態(tài)識別值20二者相加,得到備用服務(wù)器的優(yōu)先權(quán)值為160。通過原來的主服務(wù)器的優(yōu)先權(quán)初始值100、對應(yīng)原來的主服務(wù)器識別值40二者相加,得到原主庫服務(wù)器的優(yōu)先權(quán)值為140。根據(jù)備份服務(wù)器的優(yōu)先權(quán)值大于原來的主服務(wù)器的優(yōu)先權(quán)值,得到備份服務(wù)器的優(yōu)先權(quán)等級大于備份服務(wù)器的優(yōu)先權(quán)等級。此時,備份數(shù)據(jù)庫服務(wù)器已經(jīng)完成虛擬ip地址綁定,服務(wù)器集群中的服務(wù)器虛擬ip地址綁定不發(fā)生更新。
通過對服務(wù)器集群配置虛擬路由冗余協(xié)議,在啟用服務(wù)器集群中的備用服務(wù)器以代替主服務(wù)器的過程中,根據(jù)優(yōu)先權(quán)等級更新虛擬ip地址和服務(wù)器集群中的服務(wù)器綁定。避免了服務(wù)器集群中同時出現(xiàn)兩個綁定虛擬ip地址的主服務(wù)器,確保外部網(wǎng)絡(luò)訪問服務(wù)器集群的請求可以達到服務(wù)器集群。
圖5是另一示例性實施例示出的服務(wù)器集群的故障解決方法的示意圖。
通過將高可用組件中的節(jié)點組件分別安裝于服務(wù)器集群中的主服務(wù)器和備用服務(wù)器。數(shù)據(jù)庫高可用組件中的管理員組件單獨部署在一臺獨立的服務(wù)器上。通過分別在主服務(wù)器和備用服務(wù)器上安裝keepalived軟件為服務(wù)器集配置群虛擬冗余協(xié)議。主服務(wù)器和備用服務(wù)器之間通過基于虛擬路由冗余協(xié)議的keepalived軟件進行通信。
當主服務(wù)器故障,通過數(shù)據(jù)庫高可用組件啟動數(shù)據(jù)庫服務(wù)器切換,備用服務(wù)器代替原來的主服務(wù)器。通過keepalived軟件賦予備用服務(wù)器高于原來主服務(wù)器的優(yōu)先權(quán)等級,該備用服務(wù)器便會剝奪當前低優(yōu)先權(quán)等級的主服務(wù)器而成為新的主服務(wù)器并和服務(wù)器集群的虛擬ip地址進行綁定。
圖6是一示例性實施例示出的服務(wù)器集群的故障解決裝置的框圖。如圖6所示,該裝置包括但不限于:監(jiān)聽裝置610,切換裝置630,ip地址更新裝置650。
監(jiān)聽裝置610,用于監(jiān)聽服務(wù)器集群中的主服務(wù)器;
切換裝置630,用于在主服務(wù)器處于故障狀態(tài)時,啟用服務(wù)器集群中的備用服務(wù)器,并重新確定服務(wù)器集群中的所有服務(wù)器的優(yōu)先權(quán)等級;
ip地址更新裝置650,用于根據(jù)重新確定的優(yōu)先權(quán)等級,更新虛擬ip地址和所述服務(wù)器集群中的服務(wù)器綁定,以使備用服務(wù)器代替所述主服務(wù)器。
一種根據(jù)權(quán)利要求6所述的裝置,還包括同步裝置。
同步裝置,用于通過向服務(wù)器集群發(fā)送服務(wù)器同步狀態(tài)指令,將主服務(wù)器存儲的內(nèi)容復制到所述備用服務(wù)器。
圖7是根據(jù)圖6對應(yīng)實施例的裝置中的監(jiān)聽裝置在一個實施例的框圖。如圖7所示,該裝置還包括:包括但不限于:詢問單元611,故障獲取單元613。
詢問單元611,用于向主服務(wù)器發(fā)送詢問指令;
故障獲取單元613,用于通過在預(yù)先設(shè)定的切換時間內(nèi)未能接收主服務(wù)器發(fā)出的應(yīng)答指令,判定主服務(wù)器處于故障狀。
圖8是根據(jù)圖6對應(yīng)實施例的裝置中的切換裝置在一個實施例的框圖。如圖8所示,該切換裝置包括但不限于:優(yōu)先權(quán)值獲取單元631,優(yōu)先權(quán)權(quán)等級確定單元633。
優(yōu)先權(quán)值獲取單元631,用于獲取由虛擬路由冗余協(xié)議配置后的所述服務(wù)器集群中的全部服務(wù)器各自的優(yōu)先權(quán)值;
優(yōu)先權(quán)等級確定單元633,用于根據(jù)優(yōu)先權(quán)值,重新確定所述主服務(wù)器、備用服務(wù)器的優(yōu)先權(quán)等級。
圖9是根據(jù)圖8對應(yīng)實施例的裝置中的優(yōu)先權(quán)值獲取單元631在一個實施例的框圖。如圖9所示,該優(yōu)先權(quán)值獲取單元631包括但不限于:優(yōu)先權(quán)初始值獲取子單元711,識別值獲取子單元713,優(yōu)先權(quán)值獲取子單元715。
優(yōu)先權(quán)初始值獲取子單元711,用于獲取主服務(wù)器、備用服務(wù)器和服務(wù)器同步狀態(tài)各自的優(yōu)先權(quán)初始值;
識別值獲取子單元713,用于對主服務(wù)器、備用服務(wù)器和服務(wù)器同步狀態(tài)進行檢測識別,獲取檢測識別成功而返回的識別值;
優(yōu)先權(quán)值獲取子單元715,用于根據(jù)識別值和優(yōu)先權(quán)初始值,得到主服務(wù)器、備用服務(wù)器各自的優(yōu)先權(quán)值;
應(yīng)當理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍執(zhí)行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來限制。