高可用集羣原理

對於高可用集羣,某個時刻某種服務只能在一臺服務器上運行。
服務器之間的通知連接,通過特定的連接方式
 
共享存儲

DAS直接附加存儲。避免兩個節點同時在一個存儲設備上數據,這樣可能造成數據的紊亂。常見的設備有RAIDSCSI

NAS網絡附加存儲,類似NFS。這樣可有一臺主機來控制對數據的讀寫,但是,負責存儲的服務器可能成爲存儲瓶頸,而降低其儲存效率。

SAN存儲區域網絡,通過光交換機來傳輸數據,模擬出類似SCSI的設備,但又不同於SCSI,因爲其存儲是通過塊設備的,可以避免同時更改一塊數據。但這種設備比較昂貴。其本身是通過FCoe的協議來模擬出設備。爲了降低其成本,又出現了通過tcp/ip的協議來實現。這就又需要一臺主機,類似於DAS,但是其共享出去的是基本的塊兒設備,保證了速度寫的速度。

 

Brain-split腦裂:集羣分成多個獨立的區域,兩個主機爭用存儲資源。

Partitioned cluster集羣的分裂:一個大的集羣分成了多個小的集羣。
 

所以在高可用集羣中,保證其資源的獨用是最重要的

 

STONITH     shoot the other node in the head。解決資源的共享(腦裂)。如:電源交換機。

 

multipath,解決多路徑的情況,如有多條線路的時候,避免識別出有多個多個設備。

 

quarom,法定票數,避免Partitioned cluster。即當主機的數目小於一半的時候,不允許再工作了。注意,每臺主機的權重並不是1,而是根據主機的性能,如果其服務器的性能好的話,其權重要大一些,否則小一些。而決定集羣是否能運行,主要是剩餘的服務器的權重能否大於一半。但對於只有兩個節點應特殊對待

 

heartbeat是通過判斷是否能收到其他服務器的信號來確定另一臺服務器是否能還能夠正常運行。

故障轉移域:定義故障轉移的範圍和轉移的先後順序
 
 
 

RHCS是通過判斷在磁盤上的特定位置是否書寫內容來判斷一個節點是的還存在。

RHCS 同樣提供fance類似於STONITH

 
 
如圖所示:

 

是個高可用集羣兩節點的示意圖。
其中分爲四個層次,從下到上
Messaging infrastructure
Membership
Resource Allocation
Resource
 
其中每個圓圈代表一個進程。其中
Messaging infrastructure是最重要的一層,其作用是在集羣節點之間傳遞心跳信息。這是集羣正常運行的基礎。

Membership 這一層主要是用來做決策的,根據法定票數來決定集羣的運行,起作用主要是:添加或刪除一個節點的時候做決策。在這層用到的一個進程是CCMCluster Consensus Menbership)通過下層的心跳消息來決定其集羣的拓撲。

Resource Allocation 這一層就是提供集羣服務的。在其中Cluster Resource Manger是用來管理集羣的資源(IP,進程,後臺資源等),也成爲集羣資源管理器,簡稱:CRM。要保證集羣中所有節點的這個服務的配置文件完全相同。在服務器之間同步數據的最好的方式是使用xml格式的數據(其中包含了節點的個數,類型,總的權重,以及各個服務器的配置信息等)。在RHCS中使用ccsd的進程用於在服務器之間同步這個數據。這個文件也叫Cluster Information Base簡稱CIB,這個文件十分重要。

在集羣中各個節點之間是平等的,但需要一個來協調所有關係。這就是Designated Coordinator簡稱DC。對於集羣的所有的計算,控制都在這個節點上進行,同時修改CIB通常也是在這個節點上進行的,而後同步到其他節點上去的

Policy Engine 簡稱PE,通過計算對這個集羣上的所有節點進行計算,來進行決策。

Transition Engine 執行決策,是進行監督決策的執行。但自身並不執行。如果是對本機的決策,則直接傳給本地的LRM,否則通過下面的兩層傳個,其他的服務器。

Local Resource Manager 這是最終執行決策的進程。在一個集羣中PETE只運行在DC上。

Resource 這一層纔是真正提供集羣服務資源的。

Resource Agent 資源代理,這是管理本機資源的進程。有三種類型:heartbeat V1LSB 遵循linux規範的startup腳本,OCF開放式集羣格式,類似於LSB,但是比其更有通用性。

切記!不能使用startup腳本啓動,必須要使用集羣服務的腳本來啓動服務,而且切記,不能開機啓動。

 
 

heartbeatMessaging infrastructure中運行的一個進程,現在可以支持2~16個節點。它在各個服務器之間傳遞心跳信息,這允許客戶端知道其他節點的信息通過簡單的交互信息。爲了更方便用戶的使用heartbeat通常需要和CRM結合起來。

pacemaker:專門的CRM可以和多個底層的通信軟件結合起來使用。

 

heartbeat的工作過程是這樣的:首先你可以告訴heartbeat那個計算機擁有資源,包括哪個是主服務器,哪個是備份服務器。之後在備份服務器上配置其監聽主服務器。如果備份服務器監聽不到主服務器的心跳,則主動搶佔其資源。

其通信的方式有:
組播 UDP
廣播 UDP
多播 UDP
串行通信信道
由於心跳信息重要,所有要進行加密。
 

heartbeat傳遞的信息有:心跳信息,集羣事物信息(服務器重啓,發送信息),重傳信息(出錯時候重傳一次)。這三種信息都定義在/etc/ha.d/ha.cf文件中(即heartbeat的主配置文件)。

配置文件haresource 用來配置:對外顯示的別名IP地址,同時包括其提供的服務的名字,服務所需要的資源。

Gratutious ARP Broadcasts 當備份服務器搶佔後,主動通知網關更改了MAC地址。使用到的是/usr/lib/heartbeat/send_arp這個程序。

Resource Scripts資源腳本,用於heartbeat啓動提供高可用服務器的啓動腳本,通常放在/etc/ha.d/resource.d/文件夾下

/etc/ha.d/authkeys定義信息傳遞時使用的加密算法,以及密鑰等。要求權限必須是600的。

以上使用到的文件在/etc/ha.d/中都沒有,當安裝完軟件之後在/usr/share/doc/heartbeat-Version中存有,直接拷貝,並編輯就行了

ha.cf文件中需要修改的內容:

debugfile 調試日誌

keepalive 通告的時間

initdead 確定dead的時間

udpport 通告使用的端口默認是694,而其不能改。

bcast 使用廣播,後面跟上網卡

node 指出其中所有的節點每行一個,且後面的名字必須和使用命令uname -r得到的一樣

 

autokeys的書寫的方法(要保證權限是600):

第一行auth N,第二行N md5 隨機數,表示使用md5的加密方法

 

對於haresource 中只需定義主節點

egnode1.a.com        192.168.0.1/24/eth0/192.168.0.255       httpd

這一行的含義是:主節點是node1.a.com 浮動地址是192.168.0.1掩碼24執行在eth0這塊兒網卡上     檢測進程是httpd

 

模擬主節點掛掉:在/usr/lib/heartbeat文件夾中執行hb_standy,搶佔回來執行腳本hb_takeouer來測試是否能正常使用 

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