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

四、高可用集羣的分類   
1.雙機熱備(Active/Passive)
官方說明:Two-node Active/Passive clusters using Pacemaker and DRBD are a cost-effective solution for many High Availability situations.

2.多節點熱備(N+1)
官方說明:By supporting many nodes, Pacemaker can dramatically reduce hardware costs by allowing several active/passive clusters to be combined and share a common backup node.

3.多節點共享存儲(N-TO-N)
官方說明:When shared storage is available, every node can potentially be used for failover. Pacemaker can even run multiple copies of services to spread out the workload.

4.共享存儲熱備 (Split Site)
官方說明:Pacemaker 1.2 will include enhancements to simplify the creation of split-site clusters.

五、高可用集羣軟件
Messaging and Membership Layer(信息與關係層):
heartbeat (v1,v2,v3),heartbeat v3 分拆  heartbeat pacemaker cluster-glue

corosync

cman

keepalived

ultramokey

Cluster Resource Manager Layer(資源管理層,簡稱:CRM):
haresource,crm (heartbeat v1/v2)

pacemaker (heartbeat v3/corosync)

rgmanager (cman)

常用組合:
heartbeat v2+haresource(或crm) (說明:一般常用於CentOS 5.X)

heartbeat v3+pacemaker (說明:一般常用於CentOS 6.X)

corosync+pacemaker (說明:現在最常用的組合)

cman + rgmanager (說明:紅帽集羣套件中的組件,還包括gfs2,clvm)

keepalived+lvs (說明:常用於lvs的高可用)

總結:我們經常在技術博客中看到,heartbeat+pacemaker實現mysql高可用,或corosync+pacemaker實現mysql高可用等,有的博友會問了,我們到底用什麼好呢?經過上面的說明大家應該有所瞭解!

六、共享存儲
  說到集羣, 我們不得不說到,共享存儲,因爲不管理是Web高可用也,Mysql高可用也好,他們的數據都是共享的就一份,所有必須放在共享存儲中,主節點能訪問,從節點也能訪問。下面我們就簡單說一下共享存儲。
1.DAS:(Direct attached storage)直接附加存儲
說明:設備直接連接到主機總線上的,距離有限,而且還要重新掛載,之間有數據傳輸有延時
RAID 陣列

SCSI 陣列

2.NAS:(network attached storage)網絡附加存儲 
說明:文件級別的共享
NFS

FTP

CIFS

3.SAN:(storage area network)存儲區域網絡 
說明:塊級別的,模擬的scsi協議
FC光網絡(交換機的光接口超貴,一個差不多2萬,如果使用這個,代價太高)

IPSAN(iscsi)存取快,塊級別,廉價

七、集羣文件系統與集羣LVM(集羣邏輯卷管理cLVM)
集羣文件系統:gfs2、ocfs2
集羣LVM:cLVM
注:一般用於高可用雙主模型中(如下圖)

八、高可用集羣的工作原理
說明:這裏主要以主/從節點的高可用來說明工作原理。
  主服務器和從服務器建立雙機熱備,基本上都是共享一個存儲,以mysql爲例。通常情況下,數據庫文件掛載在主數據庫服務器上,用戶連接到主服務器上進行數據庫操作。當主服務器出現故障時,從服務器就會自動掛載數據庫文件,並接替主服務器的工作。用戶在未通知的情況下,通過從數據庫連接到數據庫文件進行操作。等主服務器的故障修復之後,又可以重新提供服務;
  那麼,從服務器是如何知道主服務器掛掉了呢,這就要使用一定的檢測機制,如心跳檢測,也就是說每一個節點都會定期向其他節點通知自己的心跳信息,尤其是主服務器,如果從服務器在幾個心跳週期內(可自行設置心跳週期)還沒有檢測到的話,就認爲主服務器宕掉了,而這期間在通告心跳信息當然不能使用tcp傳輸的,如果使用tcp檢測,還要經過三次握手,等手握完了,不定經過幾個心跳週期了,所以在檢測心跳信息的時候採用的是udp的端口694來進行傳遞信息的,如果主服務器在某一端時間由於服務繁忙,沒時間響應心跳信息,這個時候從服務器要是把主服務資源搶過去(共享數據文件),但是這個時候主服務器還沒有宕掉,這樣就會導致資源搶佔,就這樣用戶在主從上都能訪問,如果僅僅是讀操作還沒事,要是有寫的操作,那就會導致文件系統崩潰,這樣一切都玩了,所以在資源搶佔的時候,可以採用一定的隔離方法來實現,就是從服務器搶佔資源的時候,直接把主服務器給“STONITH”,就是我們常說的“爆頭”;
  那麼,我們又用什麼方式來檢測心跳信息呢?就是通過心跳線來檢測。運行在從服務器上的Heartbeat可以通過以太網連接檢測主服務器的運行狀態,一旦其無法檢測到主服務器的“心跳”則自動接管主服務器的資源。通常情況下,主、從服務器間的心跳連接是一個獨立的物理連接,這個連接可以是串行線纜、一個由“交叉線”實現的以太網連接。Heartbeat甚至可同時通過多個物理連接檢測主服務器的工作狀態,而其只要能通過其中一個連接收到主服務器處於活動狀態的信息,就會認爲主服務器處於正常狀態。從實踐經驗的角度來說,建議爲Heartbeat配置多條獨立的物理連,以避免Heartbeat通信線路本身存在單點故障。
  上面的原理中我們提到了“隔離方法”,下面我們來說一說,隔離方法有兩種,一種是節點隔離,另一種是資源隔離。節點隔離就是我們常說的STONITH(Shoot The Other Node In the Head ,俗稱“爆頭”),意思就是直接切斷電源;常用的方法是所有節點都接在一個電源交換機上,如果有故障,就直接導致該節點的電壓不穩定,或斷電,讓有故障的節點重啓或關閉。(如下圖),而資源隔離,就是 fencing 直接把某種資源截獲過來。

  下面我們再來說一說“心路線”的類型,一種是串行電纜,另一種就是我們常看到的以太網線(交叉的雙絞線),它們各有優缺點,串行電纜,被認爲是比以太網連接安全性稍好些的連接方式,因爲hacker無法通過串行連接運行諸如telnet、ssh或rsh類的程序,從而可以降低其通過已劫持的服務器再次侵入備份服務器的機率。但串行線纜受限於可用長度,因此主、備服務器的距離必須非常短。以太網線連接,使用此方式可以消除串行線纜的在長度方面限制,並且可以通過此連接在主從服務器之間同步文件系統,從而減少了對正常通信連接帶寬的佔用。(如下圖)

參考文檔:
http://www.linux-ha.org/wiki/Main_Page
http://clusterlabs.org/wiki/Main_Page
http://opencf.org/home.html


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