一種恢復服務及性能提升的方法及運維管理系統與流程
2023-07-14 22:56:36 1

本發明涉及分布式系統,更具體地,涉及一種分布式系統恢復服務及性能提升的方法及運維管理系統。
背景技術:
當前在大規模分布式存儲系統中,為了實現集中權限認證、配額控制,大部分採用了集中式元數據管理的方法,即將整個存儲系統中所有數據的元信息集中存放在若干節點進行存儲。這種架構中元數據節點(也可稱為元數據伺服器等)的可用性直接關係到整個系統的可用性,在多種分布式系統中都通過冗餘的方式來增加元數據服務的可用性。
冗餘的方式會引入多個節點,節點間必須使用狀態同步協議,保證在任何時候做出的決定都是正確和不可否認的。在一個分布式系統中,如果各節點的初始狀態一致,每個節點都執行相同的命令序列,那麼他們最後能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個「一致性算法」以保證每個節點看到的指令一致。
paxos協議被公認為是狀態同步協議中應用最廣泛的協議之一,它解決的問題是一個分布式系統如何就某個值(決議)達成一致。paxos協議在有修改操作時,會將所有修改狀態單調遞增編號,並在多個節點上進行決策,如果大多數節點都同意接受這個決策,則修改被分別持久化到多個節點。這樣的協議設計可以保證每次決議都是大多數節點同意做出的,保證了決議的正確性,反之,如果少數節點可以做出決議,會導致在同一個協議號產生兩個決議,從用戶角度看來是錯誤決議或者決議不一致。同時每次決議號和決議本身持久化保證了在有錯誤發生恢復的時候,只要大多數節點的數據沒有任何丟失,那麼以前做出的決議還是被保留的,之後的任何決議都可以基於一個正確的決議基礎繼續進行,在任何時刻保證數據的一致即決議正確。
在利用多個元數據節點作為備份的分布式存儲系統中,如果使用了paxos協議作為選舉和日誌備份的理論基礎,在剩餘少數元數據節點的情況下就不能提供正常的元數據服務。在生產系統中,由於元數據節點所在的機器的硬體配置基本是一致的,例如都使用了相同廠商的固態硬碟(ssd:solidstatedrives),擦寫壽命相差不大,導致多臺機器同時出問題的概率會增加。一旦過半的機器出現了磁碟只讀模式,會導致服務停止。在有多數元數據節點宕機的時候,如果主節點依然還可用,可以對外提供讀取元數據的服務,但修改元數據的操作都不能成功。
在分布式存儲系統中使用paxos協議的一種簡化方式時,多個元數據節點通過paxos協議進行選舉,產生主節點(primary)提供元數據服務;其他節點作為從節點(slave),只接受主節點的日誌同步。主節點產生的日誌會發給所有的從節點,如果從節點同意並且接受了日誌同步,主節點會收到從節點同意的反饋,在多數節點同步成功(包括主節點)時,主節點向發出服務請求的客戶端(client)返回成功,否則客戶端的請求將被掛起,客戶端會收到超時消息,此時表現為服務停止。也就是說,採用paxos協議提供元數據服務冗餘能力時,如果大多數元數據節點停止服務時,會導致整個服務停止,即使其中還存在正常節點。另外,如果至少一半的節點性能變差時,整個服務的性能也會隨之變差。因為日誌同步時大多數節點後返回同意才能完成客戶端的操作,所以操作性能依賴於大多數節點中最慢節點的性能。
其他運行狀態同步協議的節點集群也存在類似的情況。
技術實現要素:
有鑑於此,本發明提供了以下方案。
一種恢復服務的方法,應用於運維管理系統,包括:
檢測運行狀態同步協議的節點集群中節點的狀態變化,確定正常節點的個數nn,nn為整數;
如果nn從大於等於s0變為小於s0,進行緊急處理以恢復正常服務,其中,在所述正常節點中包括主節點時,所述緊急處理包括:將配置中心及 所述正常節點保存的所述參數s的值修改為小於或等於nn的正整數值;
其中,參數s表示所述節點集群提供正常服務所要求的同步成功節點的最小個數,s0是根據所述狀態同步協議確定的參數s的值。
一種運維管理系統,包括狀態檢測模塊、控制模塊和緊急處理模塊,其中:
所述狀態檢測模塊,用於檢測運行狀態同步協議的節點集群中節點的狀態變化,確定正常節點的個數nn並通知所述控制模塊,nn為整數;
所述控制模塊,用於在nn從大於等於s0變為小於s0後,調用緊急處理模塊進行緊急處理,以恢復正常服務;
所述緊急處理模塊,用於在所述正常節點中包括主節點時,執行以下緊急處理:將配置中心及所述正常節點保存的所述參數s的值修改為小於或等於nn的正整數值;
其中,參數s表示所述節點集群提供正常服務所要求的同步成功節點的最小個數,s0是根據所述狀態同步協議確定的參數s的值。
上述方案在正常節點的個數達不到正常服務所要求的同步成功節點的最小個數時,通過參數變更使服務可以立即恢復,在故障排除後可以方便地恢復服務,期間不會引起數據不一致和丟失。這樣的處理方法可以有效解決多個節點同時出現硬體錯誤帶來的不可用問題,減少經濟損失。
一種性能提升的方法,包括:
確定運行狀態同步協議的節點集群中的低性能節點;
當至少有一個低性能節點同步成功,所述節點集群的同步過程才能成功時,進行性能提升處理,使得沒有所述低性能節點同步成功時所述同步過程也能成功。
一種運維管理系統,包括性能管理模塊,其中:
所述性能管理模塊用於對運行狀態同步協議的節點集群進行性能提升處理,包括:
第一處理單元,用於將配置中心保存的參數s的值修改為t-sn;
第二處理單元,用於將所述節點集群中節點保存的參數s的值修改為t-sn;
其中,t為所述節點集群的節點數,t≥2,sn是所述節點集群中低性能節點的個數,參數s表示所述節點集群提供正常服務所要求的同步成功節點的最小個數。
上述方案在低性能節點增多使得同步速度變慢時,通過合理配置參數,讓節點集群的性能總與高性能節點匹配。
附圖說明
圖1是本發明實施例一網絡架構的示意圖;
圖2是本發明實施例一恢復服務的方法的流程圖;
圖3是本發明實施例一運維管理系統的模塊圖;
圖4是本發明實施例二性能提升的方法的流程圖;
圖5是本發明實施例二運維管理系統的模塊圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚明白,下文中將結合附圖對本發明的實施例進行詳細說明。需要說明的是,在不衝突的情況下,本申請中的實施例及實施例中的特徵可以相互任意組合。
實施例一
本實施例以分布式存儲系統中運行paxos協議或其衍生協議的元數據節點集群為例,為了方便表述,也將實施例中的元數據節點簡稱為節點。本實施例相關的網絡架構如圖1所示,包括:元數據節點集群、配置中心、運維管理系統和客戶端,元數據節點集群中的節點在圖中以3個為例,其中的多個元數據節點分為主節點和從節點。
主節點:對外提供讀、寫服務的節點,將寫操作轉換為修改日誌,同步給所有從節點;
從節點:接受主節點同步過來的日誌,通過協議約定判斷是否可以接受日誌,如果可以接受,則返回接受成功並將日誌應用到內存中,否則返回接受失敗。
配置中心是節點啟動參數持久化的存儲系統,每個節點啟動時從配置中心中獲取選舉階段和服務階段應使用的配置參數,保存在內存中,並在相應的階段應用。
運維管理系統:也可稱為運維工具,在必要的時候發送修改參數的請求給任何節點。可以在任何一個節點所在的機器上執行從該節點記錄到本地的日誌中提取日誌,同步到其他正常的節點的操作;可以查看當前集群中節點的狀態,確定正常節點的個數和異常節點的個數;判斷是否需要進行緊急處理以恢復正常服務;及,確定應該使用哪種緊急處理方案,等等。文中的運維管理系統包括用於完成相應運行維護、管理功能的各種功能模塊。在實體上,可以部署在元數據節點上,也可以部署為其他設備,可以用單個設備實現,也可以用多個設備實現,對此本發明不加以局限。
客戶端(client):發起讀、寫元數據請求的進程,讀寫元數據的請求都發送到當前的主節點,寫操作如果被接受會在主節點產生修改日誌。
利用運維工具設置當前正常的元數據節點內存中的參數為第2步驟中配置的新參數。
元數據節點集群的相關處理分為選舉階段和服務階段,其中:
選舉階段:
這個階段讓多個節點參與選舉過程,並決定對外提供服務的主節點,其他節點變成從節點。paxos協議中,完成選舉需要有兩個參數t和e。。t=en+nn,en是t個節點中異常節點的個數,nn是t個節點中正常節點的個數。e表示選舉成功所要求的正常節點的最小個數,根據狀態同步協議 確定的e的值記為e0,在paxos協議中e0=floor(t/2)+1,floor表示向下取整。也就是說,有多數也即超過一半的節點正常時,才能夠成功選舉出新的主節點。
服務階段:
選擇產生主節點之後,所有的讀寫請求都通過主節點進行處理,寫操作會產生修改日誌,主節點通過網絡將日誌同步給所有的從節點。同步階段需要有兩個參數t和s才能判斷是否完成了同步。t的含義如上所述。s表示所述節點集群提供正常服務所要求的同步成功節點的最小個數。根據狀態同步協議確定的s的值記為s0,在paxos協議中,s0=floor(t/2)+1,例如t=5時s0=3,而t=9時s0=5。在一次修改元數據的操作中,只有成功寫入相應修改日誌的節點的個數大於等於s,此次修改元數據的操作才能成功,主節點也算在s中。即除了將日誌寫入本地,主節點還需要將修改日誌成功同步給s-1個從節點才能完成修改元數據的操作,如果不能完成修改元數據的操作,客戶端的請求將被掛起,此時表現為服務停止。
顯然,文中表示節點個數的參數均為整數。
如上所述,在正常節點的個數低於paxos協議要求的參數s0時,由於異常節點不能成功寫入修改日誌,因而將導致節點集群不能提供正常服務。為此,本實施例通過運維管理系統根據節點狀態加以判決,在不能提供正常服務時,通過參數變更讓服務立即恢復。
如圖2所示,本實施例恢復服務的方法應用於運維管理系統,包括:
步驟110,檢測運行狀態同步協議的節點集群中節點的狀態變化,確定正常節點的個數nn,nn為整數;
本實施例中,所述節點集群是分布式存儲系統中運行paxos協議或其衍生協議的元數據節點集群。所述同步指日誌同步。但本發明不局限於此,也可以用於運行狀態同步協議的其他節點集群,因為本實施例是通過對協議參數的修改使節點之間可以同步成功從而恢復服務,節點集群所提供的服務種類不同並不影響服務的恢復。本發明也可以用於運行其他狀態同步協議如ha 協議的多個節點。
步驟120,如果nn從大於等於s0變為小於s0,進行緊急處理以恢復正常服務,在所述正常節點中包括主節點時,所述緊急處理包括:將配置中心及所述正常節點保存的所述參數s的值修改為小於或等於nn的正整數值;
其中,參數s的含義如上所述。
在主節點為正常節點的情況下,由於主節點還處於服務狀態,所以此時恢復服務不需要經過選舉階段,只需要更改服務階段的同步日誌參數s即可完成恢復。本實施例將參數s的值修改為nn(變化後的值)後,因為集群中存在nn個正常節點,因而可以有nn個節點同步成功,滿足對同步成功節點的最小個數的要求,因而即可恢復正常服服務。在另一實施例中,也可以將參數s的值修改為小於nn的值,此時也可以恢復正常服務,在又有少量正常節點變為異常節點時不需要再修改s,但本實施例修改為nn時,修改日誌同步成功的節點數相對較多,數據安全性更好。
本實施例中,在所述正常節點中包括主節點時,所述緊急處理還包括:將所述配置中心和所述正常節點保存的參數e的值修改為t-nn』+1,其中,參數e表示所述節點集群選舉成功所要求的正常節點的最小個數,nn』為參數s修改為的小於或等於nn的所述正整數值。此處,將e值修改為t-nn+1也即fn+1,使得要想選舉成功,必須有一個正常節點的參與,而這個正常節點保存的日誌是完整的,因而可以避免原來的異常節點恢復為正常節點後,在異常節點之間選舉出新的主節點而造成日誌數據不一致和丟失。這裡,通過修改e值來保證日誌的完整,是一種方便的方式,也無法增加其他的接口。但並非唯一方式,如也可以記錄下當前的正常節點,在後續的選舉中必須要有其中一個正常節點參考才能選舉成功,等等。
運維管理系統可以在需要緊急恢復元數據服務(如收到管理員的指令或者根據相應策略觸發)時啟動上述流程。
本實施例還提供了觸發緊急處理後,在所述正常節點中不包括主節點時的緊急處理方案,此時,由於不存在主節點,所以需要經歷選舉階段才能產 生主節點,之後處理流程同正常節點中存在主節點時的緊急處理。具體地,正常節點中不包括主節點時的緊急處理方案包括:
第一步,將至少fn-floor(t/2)個異常節點的本地日誌同步給一個正常節點,同步成功後將所述配置中心和所述正常節點保存的參數e的值修改為nn;
在主節點異常時,正常節點保存的日誌可能存在不一致的情況。因而此處先進行日誌的同步。將至少fn-floor(t/2)個異常節點的本地日誌同步給一個正常節點後,該正常節點和其他正常節點一起就有(fn-floor(t/2))+nn=t-floor(t/2)個節點的日誌,這些節點在一起就可以確定出現異常前的最新狀態。當然,同步成功的前提是至少fn-floor(t/2)個異常節點所在的機器可以登錄,這裡,異常節點需要不能完成日誌同步,但通過運維管理工具,仍有可能登錄到其所在機器上,將其本地日誌複製出來。
本步驟中,將參數e的值修改為nn使得nn個正常節點可以成功舉行出新的主節點以恢復服務。
第二步,在所述nn個正常節點選舉出新的主節點後,停止服務並執行上述正常節點中包括主節點時的緊急處理,執行完成後恢復正常服務。
在選舉出新的主節點後,就可以按照步驟120中的緊急處理方式對s的值進行修改而恢復正常服務,還可以對e的值進行修改。為了避免在修改參數時產生新的修改日誌,此時應停止元數據服務,一種簡單的方式就是在選舉出新的主節點之前,將所述配置中心和所述正常節點保存的參數s的值修改為大於或等於fn+1的值,這樣同步不能成功,服務被停止。而在執行完成緊急處理即完成步驟120中對s值的修改之後,即可恢復正常服務。採用其他方式禁止服務也是可以的,如增加一些步驟,在這些步驟增加額外的配置項來實現。
在進行緊急處理之後,節點集群的工作狀態轉入緊急狀態,實現了少數元數據節點可以對外提供服務的能力。在緊急狀態下,節點的狀態(正常或異常)會發生變化,例如有正常節點變為異常節點,異常節點故障排除後重 新啟動後而變為正常節點,為此,本實施例還提供了在節點狀態變化時的處理方案,如下:
在nn從大於等於s0變為小於s0,進行緊急處理並恢復正常服務後,如果所述節點集群中有節點的狀態再次發生變化,nn也會發生變化,此時比較變化後的nn和s0:
如果nn<s0,重新進行所述緊急處理以恢復正常服務;
如果nn≥s0,將所述配置中心和正常節點保存的參數s和參數e的值分別修改為值s0和值e0;
其中,e0是根據所述狀態同步協議確定的參數e的值。。
也即,如果已經有多數節點狀態正常,即將s、e的值修改為根據同步狀態協議確定的各自的值以恢復初始的工作狀態。在paxos協議中,s0=e0=floor(t/2)+1。如果仍然有多數節點狀態異常,則需要重新進行緊急處理以恢復正常服務,恢復paxos協議實現的冗餘特性。
上述方案中,運維管理系統需要修改元數據節點保存的參數,這可以通過以下方式之一完成:
在主節點正常時或重新選舉出主節點後,運維管理系統將參數修改命令發送給主節點;主節點直接修改自己內存中的參數,並產生修改日誌記錄到本地,並發給所有從節點;從節點接受到日誌同步,根據協議約定判斷是否可以接受日誌,若可以接受,將日誌記錄到本地,修改內存中參數並返回主節點成功。
在主節點異常時,運維管理系統獲取到所有正常的元數據節點,將修改參數的請求發送給每個元數據節點;收到參數修改請求的從節點直接修改自己內存中的配置參數,但不產生任何修改日誌。
本實施例中,在上述兩種情況下的緊急處理方案中,對所述配置中心和所述正常節點保存的參數s和/或參數e的值進行修改的過程中,禁止異常節點啟動,或斷開所述配置中心與所述異常節點的連接,以防止在配置過程中異常節點應用了之前的配置參數啟動。
本實施例還提供了一種運維管理系統,如圖3所示,包括狀態檢測模塊10、控制模塊20和緊急處理模塊30,其中:
所述狀態檢測模塊10,用於檢測運行狀態同步協議的節點集群中節點的狀態變化,確定正常節點的個數nn並通知所述控制模塊,nn為整數;
所述控制模塊20,用於在nn從大於等於s0變為小於s0後,調用緊急處理模塊進行緊急處理,以恢復正常服務;
所述緊急處理模塊30,用於在所述正常節點中包括主節點時,執行以下緊急處理:將配置中心及所述正常節點保存的所述參數s的值修改為小於或等於nn的正整數值;
其中,參數s表示所述節點集群提供正常服務所要求的同步成功節點的最小個數,s0是根據所述狀態同步協議確定的參數s的值。
可選地,
所述緊急處理模塊在所述正常節點中包括主節點時,執行的緊急處理還包括:將所述配置中心和所述正常節點保存的參數e的值修改為t-nn』+1,其中,參數e表示所述節點集群選舉成功所要求的正常節點的最小個數,nn』為參數s修改為的小於或等於nn的所述正整數值。
可選地,
所述緊急處理模塊還用於在所述正常節點中不包括主節點時,執行以下緊急處理:將至少fn-floor(t/2)個異常節點的本地日誌同步給一個正常節點,同步成功後將所述配置中心和所述正常節點保存的參數e的值修改為nn;及,在所述nn個正常節點選舉出新的主節點後,停止服務並執行所述正常節點中包括主節點時的緊急處理,執行完成後恢復正常服務,其中,t為所述節點集群的節點數,t≥2,fn為所述節點集群中異常節點的個數,fn=t-nn,floor表示向下取整。
可選地,
所述緊急處理模塊在所述nn個正常節點選舉出新的主節點後停止服務,是通過以下方式實現的:在選舉出新的主節點之前,將所述配置中心和 所述正常節點保存的參數s的值修改為大於或等於fn+1的值。
可選地,
所述控制模塊還用於在所述狀態檢測模塊通知的nn再次發生變化時,比較變化後的nn和s0:
如果nn<s0,調用緊急處理模塊重新進行緊急處理以恢復正常服務;
如果nn≥s0,將所述配置中心和正常節點保存的參數s和參數e的值分別修改為s0和e0;
其中,e0是根據所述狀態同步協議確定的參數e的值。
可選地,
所述節點集群是分布式存儲系統中運行paxos協議或其衍生協議的元數據節點集群,所述同步指日誌同步,s0=e0=floor(t/2)+1,floor表示向下取整。
可選地,
所述緊急處理模塊對所述配置中心和所述正常節點保存的參數s和/或參數e的值進行修改的過程中,禁止異常節點啟動,或斷開所述配置中心與所述異常節點的連接。
本實施例的上述方案基於paxos狀態同步協議,通過配置多個元數據伺服器間選舉和日誌同步的相關參數,在集群中少數元數據節點正常的情況下仍然可以提供元數據讀寫服務,在故障排除後可以方便恢復服務,期間不會引起數據不一致和丟失。
實施例二
本實施例涉及的也是運行同步狀態協議的節點集群,也以分布式存儲系統中運行paxos協議或其衍生協議的元數據節點集群為例。其網絡架構如圖1所示,不再贅述。
本實施例是針對節點集群中低性能節點較多,導致整個集群的服務性能 變差而提出的一種性能提升的方法,如圖4所示,包括:
步驟210,確定運行狀態同步協議的節點集群中的低性能節點;
本步驟中,低性能節點可以根據設定的節點響應速度等指標來確定,如可以由管理員確定。
步驟220,當至少有一個低性能節點同步成功,所述節點集群的同步過程才能成功時,進行性能提升處理,使得沒有所述低性能節點同步成功時所述同步過程也能成功。
本實施例中,如果所述節點集群中低性能節點的個數sn≥t-s0+1,即表示至少有一個低性能節點同步成功,所述節點集群的同步過程才能成功。所述性能提升處理包括:運維管理系統將配置中心和所述節點集群中節點保存的參數s的值修改為t-sn。其中,t為所述節點集群的節點數,t≥2,參數s表示所述節點集群提供正常服務所要求的同步成功節點的最小個數,s0是根據所述狀態同步協議確定的參數s的值。本實施例考慮的是正常節點個數大於s0的場景。
將參數s的值修改為t-sn之後,進行同步時只要有t-sn個節點返回成功即同步成功,該t-sn個節點可以不包括低性能節點,因而節點集群的性能可以與高性能節點匹配,而不被低性能節點拉低。
本實施例中,所述性能提升處理還可以包括以下至少一種處理:
處理一,將所述配置中心和所述節點集群中節點保存的參數e的值修改為sn+1;
以paxos協議為例,s0=floor(t/2)+1為例,如果有一半以上的節點為低性能節點,則需要進行性能提升處理,將s的值修改為t-sn,小於協議規定的值s0,為了避免極端情況下產生日誌數據不一致和丟失,將參數e修改為sn+1,以保證至少有一個參與之前同步的節點參與選舉。
對所述節點集群中節點保存的參數s、e的值的修改可以通過向所述節點集群中的主節點發送對參數s、e的值的修改請求來實現,在請求中攜帶要修改為的值t-sn、sn+1。
處理二,如果當前的主節點為低性能節點,則將主節點切換為所述節點 集群中除低性能節點外的另一節點。
本實施例中,所述節點集群是分布式存儲系統中運行paxos協議或其衍生協議的元數據節點集群,所述同步指日誌同步,s0=floor(t/2)+1,floor表示向下取整。但本實施例的方案也可以用於提供其他服務的節點集群。
本實施例還提供了一種運維管理系統,包括性能管理模塊,所述性能管理模塊用於對運行狀態同步協議的節點集群進行性能提升處理,如圖5所示,包括:
第一處理單元50,用於將配置中心保存的參數s的值修改為t-sn;
第二處理單元,用於將所述節點集群中節點保存的參數s的值修改為t-sn;
其中,t為所述節點集群的節點數,t≥2,sn是所述節點集群中低性能節點的個數,參數s表示所述節點集群提供正常服務所要求的同步成功節點的最小個數。
可選地,
所述性能管理模塊還包括以下單元中的至少一種:
第三處理單元,用於將所述配置中心和所述節點集群中節點保存的參數e的值修改為sn+1,其中,參數e表示所述節點集群選舉成功所要求的正常節點的最小個數;
第四處理單元,用於在當前的主節點為低性能節點時,將主節點切換為所述節點集群中除低性能節點外的另一節點。
可選地,
所述節點集群是分布式存儲系統中運行paxos協議或其衍生協議的元數據節點集群,所述同步指日誌同步。
本實施例在有較多的元數據節點性能降低導致集群整體性能降低時,通過修改參數,可以提到集群的服務性能。
上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例方法可藉助軟體加必需的通用硬體平臺的方式來實現,當然也可以通過硬體,但很多情況下前者是更佳的實施方式。基於這樣的理解,本發明實施例的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質(如rom/ram、磁碟、光碟)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述的方法。
以上所述僅為本發明的優選實施例而已,並不用於限制本發明,對於本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。