Linux 高可用(HA)集羣基本概念詳解一

目錄:

一、高可用集羣的定義

二、高可用集羣的衡量標準
三、高可用集羣的層次結構
四、高可用集羣的分類
五、高可用集羣常用軟件
六、共享存儲
七、集羣文件系統與集羣LVM

八、高可用集羣的工作原理


一、高可用集羣的定義
  高可用集羣,英文原文爲High Availability Cluster,簡稱HACluster,簡單的說,集羣(cluster)就是一組計算機,它們作爲一個整體向用戶提供一組網絡資源。這些單個的計算機系統 就是集羣的節點(node)。
  高可用集羣的出現是爲了使集羣的整體服務儘可能可用,從而減少由計算機硬件和軟件易錯性所帶來的損失。如果某個節點失效,它的備援節點將在幾秒鐘的時間內接管它的職責。因此,對於用戶而言,集羣永遠不會停機。
  高可用集羣軟件的主要作用就是實現故障檢查和業務切換的自動化。只有兩個節點的高可用集羣又稱爲雙機熱備,即使用兩臺服務器互相備份。當一臺服務器出現故障時,可由另一臺服務器承擔服務任務,從而在不需要人工干預的 情況下,自動保證系統能持續對外提供服務。雙機熱備只是高可用集羣的一種,高可用集羣系統更可以支持兩個以上的節點,提供比雙機熱備更多、更高級的功能,更能滿足用戶不斷出現的需求變化。
二、高可用集羣的衡量標準 
  HA(High Available), 高可用性羣集是通過系統的可靠性(reliability)和可維護性(maintainability)來度量的。工程上,通常用平均無故障時間(MTTF)來度量系統的可靠性,用平均維修時間(MTTR)來度量系統的可維護性。於是可用性被定義爲:HA=MTTF/(MTTF+MTTR)*100%
  具體HA衡量標準:
99% 一年宕機時間不超過4天

99.9% 一年宕機時間不超過10小時

99.99% 一年宕機時間不超過1小時

99.999% 一年宕機時間不超過6分鐘

三、高可用集羣的層次結構

  說明:高可用集羣可分爲三個層次結構,分別由紅色部分的Messaging與Membership層,藍色部分的Cluster Resource Manager(CRM)層,綠色部分的Local Resource Manager(LRM)與Resource Agent(RA)組成,下面我們就來具體說明(如上圖),
1.位於最底層的是信息和成員關係層(Messaging and Membership),Messaging主要用於節點之間傳遞心跳信息,也稱爲心跳層。節點之間傳遞心跳信息可以通過廣播,組播,單播等方式。成員關係(Membership)層,這層最重要的作用是主節點(DC)通過Cluster Consensus Menbership Service(CCM或者CCS)這種服務由Messaging層提供的信息,來產生一個完整的成員關係。這層主要實現承上啓下的作用,承上,將下層產生的信息生產成員關係圖傳遞給上層以通知各個節點的工作狀態;啓下,將上層對於隔離某一設備予以具體實施。
2.集羣資源管理層(Cluster Resource Manager),真正實現集羣服務的層。在該層中每個節點都運行一個集羣資源管理器(CRM,cluster Resource Manager),它能爲實現高可用提供核心組件,包括資源定義,屬性等。在每一個節點上CRM都維護有一個CIB(集羣信息庫 XML文檔)和LRM(本地資源管理器)組件。對於CIB,只有工作在DC(主節點)上的文檔是可以修改的,其他CIB都是複製DC上的那個文檔而來的。對於LRM,是執行CRM傳遞過來的在本地執行某個資源的執行和停止的具體執行人。當某個節點發生故障之後,是由DC通過PE(策略引擎)和TE(實施引擎)來決定是否搶奪資源。
3.資源代理層(Resource Agents),集羣資源代理(能夠管理本節點上的屬於集羣資源的某一資源的啓動,停止和狀態信息的腳本),資源代理分爲:LSB(/etc/init.d/*),OCF(比LSB更專業,更加通用),Legacy heartbeat(v1版本的資源管理)。

核心組件的具體說明(如上圖):
1.ccm組件(Cluster Consensus Menbership Service):作用,承上啓下,監聽底層接受的心跳信息,當監聽不到心跳信息的時候就重新計算整個集羣的票數和收斂狀態信息,並將結果轉遞給上層,讓上層做出決定採取怎樣的措施,ccm還能夠生成一個各節點狀態的拓撲結構概覽圖,以本節點做爲視角,保證該節點在特殊情況下能夠採取對應的動作。
2.crmd組件(Cluster Resource Manager,集羣資源管理器,也就是pacemaker):實現資源的分配,資源分配的每個動作都要通過crm來實現,是核心組建,每個節點上的crm都維護一個cib用來定義資源特定的屬性,哪些資源定義在同一個節點上。
3.cib組件(集羣信息基庫,Cluster Infonation Base):是XML格式的配置文件,在內存中的一個XML格式的集羣資源的配置文件,主要保存在文件中,工作的時候常駐在內存中並且需要通知給其它節點,只有DC上的cib才能進行修改,其他節點上的cib都是拷貝DC上。配置cib文件的方法有,基於命令行配置和基於前臺的圖形界面配置。
4.lrmd組件(Local Resource Manager,本地資源管理器):用來獲取本地某個資源的狀態,並且實現本地資源的管理,如當檢測到對方沒有心跳信息時,來啓動本地的服務進程等。
5.pengine組件:
PE(Policy Engine):策略引擎,來定義資源轉移的一整套轉移方式,但只是做策略者,並不親自來參加資源轉移的過程,而是讓TE來執行自己的策略。

TE(Transition Engine): 就是來執行PE做出的策略的並且只有DC上才運行PE和TE。

6.stonithd組件
  STONITH(Shoot The Other Node in the Head,”爆頭“), 這種方式直接操作電源開關,當一個節點發生故障時,另 一個節點如果能偵測到,就會通過網絡發出命令,控制故障節點的電源開關,通過暫時斷電,而又上電的方式使故障節點被重啓動, 這種方式需要硬件支持。
  STONITH應用案例(主從服務器),主服務器在某一端時間由於服務繁忙,沒時間響應心跳信息,如果這個時候備用服務器一下子把服務資源搶過去,但是這個時候主服務器還沒有宕掉,這樣就會導致資源搶佔,就這樣用戶在主從服務器上都能訪問,如果僅僅是讀操作還沒事,要是有寫的操作,那就會導致文件系統崩潰,這樣一切都玩了,所以在資源搶佔的時候,可以採用一定的隔離方法來實現,就是備用服務器搶佔資源的時候,直接把主服務器給STONITH,就是我們常說的”爆頭 ”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章