高可用集羣原理

什麼是高可用

在集羣負載的基礎上,考慮服務質量和服務的可用性,簡單地說,就是當集羣某個部分出現故障時,通過一些機制快速的恢復服務,最好讓用戶完全察覺不到,做到一種無縫的效果,一般作爲一種服務都能實現高可用,像ipvs集羣服務,httpd,mysql等。我覺得可以分爲一下有兩種情況

     1:通過部署多臺服務器,設備間通過心跳線,固定時間通過事務傳輸層互相發送事務信息,若有設備故障,其他設備在限定時間內沒有收到事務信息,則開始進行法定票數的投票,根據票數,對票數少的一方進行策略(重啓,關閉等)

     2:後端節點故障,前端負載均衡器,固定時間對後端服務器進行 health check(健康檢查),經過一定次數檢查後,若有問題不在線了,則不再分配請求到故障節點,若後續解除了故障,再對其分配請求(針對負載均衡集羣的後端節點)


如何判斷故障

     1:藉助另外的參考節點,如ping網關(可以是一個節點),可以和測試點ping通,但不可以和對方通,說明對方節點有問題,或本節點有問題

     2:仲裁設備,如仲裁磁盤,每個節點都間隔一定時間不停往磁盤寫數據,若監測到對方不再寫入的時候,可能對方節點出故障


故障處理:


法定票數(quorum)

     即當有節點故障時,節點間投票決定哪個節點是有問題的,票數大於半數爲合法。票數是可以有多有少的,例如有些節點的性能較好或有其他優勢,可以設置較多的票數,根據需要進行規劃

全局集羣資源管理策略:對不具備法定票數的集羣節點採取的策略(without_quorum_policy)

  • freeze:已經建立的請求繼續提供服務,但不再接收新請求

  • stop:暫停所有服務和請求

  • ignore:繼續正常服務


故障轉移(FailOver)

     將高可用集羣資源從不具備法定票數的集羣節點轉移到故障轉移域(可以接收故障資源轉移的節點),票數低的節點資源根據資源約束進行轉移;當排除故障後,是否要故障迴轉(FailBack),則要看根據資源粘性資源約束的設置,一般備用設備單純只用於備份,性能低於主設備,所以當主設備恢復時應轉回,根據實際判斷。通過資源傾向實現


高可用集羣資源 (HA resource):例如,服務可以作爲一個資源,vip,文件系統配置等都是高可用集羣資源

  • Primitive:主資源,在某一時刻只能運行在某個節點上,如VIP

  • group:組,一般只包含primitive資源

  • clone:克隆,可以在多個節點運行的資源,例如stonith作爲資源,應運行在所有節點上;針對cluster filesystem產生的分佈式鎖管理器(distributed lock manager,dlm)爲這種資源,應運行在所有節點上

  • master/slave:特殊的clone資源,運行在兩個節點上,一主一從,如:drbd,分佈式複製塊設備(2.6.33之後整合進內核了)


資源的傾向(資源定位的依據)

     資源粘性:資源和當前節點的關係

  • 資源是否傾向於當前節點,score,正值傾向於當前節點,(還要和位置約束結合)

     資源約束 Constraint:資源和資源之間的關係

  • 排列約束 (colocation):資源間的互斥性,定義資源是否運行在同一節點上 ,score,正值表示要運行在同一節點上,負值則不可

  • 位置約束(location),每個節點都有一個score值,正值則傾向於本節點,負值傾向於其他節點

  • 順序約束(order):定義資源啓動或關閉的次序,例如vip應先配置,httpd服務後配置

     特殊的score值,-inf 負無窮,inf 正無窮


高可用集羣管理:高可用的具體實現


集羣事務信息層(message layer)

     傳遞集羣信息的一種機制,通過監聽UDP 694號端口 ,可通過單播、組播、廣播的方式,實時快速傳遞信息,傳遞的內容爲高可用集羣的集羣事務,例如:心跳信息,資源信息等等,只負責傳遞信息,不負責信息的計算和比較

集羣資源管理器(Cluster Resource Manager,CRM

     利用messaging layer的功能收集節點信息,並負責信息的計算和比較,並做出相應的動作,CRM會推選出一個用於計算和比較的節點,叫DC(Designated coordinator)指定協調節點,計算由PE(Policy Engine)策略引擎實現,計算出結果後的動作控制由TE(Transition Engine)事務引擎實現,並且在每個節點上都有一個LRM(local resource manager)本地資源管理器,是CRM的一個子功能,接收TE傳遞過來的事務,在節點上採取相應動作,例如,運行RA腳本

     資源代理(Resource Agent,RA),能夠集羣資源進行管理的腳本,由於對於節點的動作因包含:對所有資源的狀態檢測,一定次數的檢測檢測後,若存在問題,則考慮資源的重置、重啓,若重啓無效,則進行資源轉移,所以HA腳本格式應遵循linux腳本標準(linux standard base,LSB),包含(start|stop|restart|status),後來也出現了更加優化的腳本類型,如可以實現監控的OCF腳本


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