《OpenStack高可用集群(上冊):原理與架構》—3.4 Pacemaker內部組件
3.4 Pacemaker內部組件
Pacemaker作為一個獨立的集群資源管理器項目,其本身由多個內部組件構成,這些內部組件彼此之間相互通信協作并最終實現了集群的資源管理,Pacemaker項目由五個內部組件構成,
各個組件之間的關系如圖3-8所示。
CIB:集群信息基礎(Cluster Information Base)。
CRMd:集群資源管理進程(Cluster Resource Manager deamon)。
LRMd:本地資源管理進程(Local Resource Manager deamon)。
PEngine(PE):策略引擎(PolicyEngine)。
STONITHd:集群Fencing進程(Shoot The Other Node In The Head deamon)。
CIB主要負責集群最基本的信息配置與管理,Pacemaker中的CIB主要使用XML的格式來顯示集群的配置信息和集群所有資源的當前狀態信息。CIB所管理的配置信息會自動在集群節點之間進行同步,PE將會使用CIB所提供的集群信息來規劃集群的最佳運行狀態。并根據當前CIB信息規劃出集群應該如何控制和操作資源才能實現這個最佳狀態,在PE做出決策之后,會緊接著發出資源操作指令,而PE發出的指令列表最終會被轉交給集群最初選定的控制器節點(Designated Controller,DC),通常DC便是運行Master CRMd的節點。在集群啟動之初,Pacemaker便會選擇某個節點上的CRM進程實例來作為集群Master CRMd,然后集群中的CRMd便會集中處理PE根據集群CIB信息所決策出的全部指令集。在這個過程中,如果作為Master的CRM進程出現故障或擁有Master CRM進程的節點出現故障,則集群會馬上在其他節點上重新選擇一個新的Master CRM進程。
在PE的決策指令處理過程中,DC會按照指令請求的先后順序來處理PEngine發出的指令列表,簡單來說,DC處理指令的過程就是把指令發送給本地節點上的LRMd(當前節點上的CRMd已經作為Master在集中控制整個集群,不會再并行處理集群指令)或者通過集群消息層將指令發送給其他節點上的CRMd進程,然后這些節點上的CRMd再將指令轉發給當前節點的LRMd去處理。當集群節點運行完指令后,運行有CRMd進程的其他節點會把他們接收到的全部指令執行結果以及日志返回給DC(即DC最終會收集全部資源在運行集群指令后的結果和狀態),然后根據執行結果的實際情況與預期的對比,從而決定當前節點是應該等待之前發起的操作執行完成再進行下一步的操作,還是直接取消當前執行的操作并要求PEngine根據實際執行結果再重新規劃集群的理想狀態并發出操作指令。
在某些情況下,集群可能會要求節點關閉電源以保證共享數據和資源恢復的完整性,為此,Pacemaker引入了節點隔離機制,而隔離機制主要通過STONITH進程實現。STONITH是一種強制性的隔離措施,STONINH功能通常是依靠控制遠程電源開關以關閉或開啟節點來實現。在Pacemaker中,STONITH設備被當成資源模塊并被配置到集群信息CIB中,從而使其故障情況能夠被輕易地監控到。同時,STONITH進程(STONITHd)能夠很好地理解STONITH設備的拓撲情況,因此,當集群管理器要隔離某個節點時,只需STONITHd的客戶端簡單地發出Fencing某個節點的請求,STONITHd就會自動完成全部剩下的工作,即配置成為集群資源的STONITH設備最終便會響應這個請求,并對節點做出Fenceing操作,而在實際使用中,根據不同廠商的服務器類型以及節點是物理機還是虛擬機,用戶需要選擇不同的STONITH設備。
OpenStack 云計算
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。