知識剖析
- 什麼是RHCS?
- RHCS是Red Hat Cluster Suite的縮寫,也就是紅帽子叢集套件,RHCS是一個能夠提供高可用性、高可靠性、負載均衡、存儲共享且經濟廉價的叢集工具集合,它将叢集系統中三大叢集架構融合一體,可以給web應用、資料庫應用等提供安全、穩定的運作環境。
- 更确切的說,RHCS是一個功能完備的叢集應用解決方案,它從應用的前端通路到後端的資料存儲都提供了一個行之有效的叢集架構實作,通過RHCS提供的這種解決方案,不但能保證前端應用持久、穩定的提供服務,同時也保證了後端資料存儲的安全。
- RHCS提供了叢集系統中三種叢集構架,分别是高可用性叢集、負載均衡叢集、存儲叢集。
- RHCS提供的三個核心功能
- 高可用叢集: 是RHCS的核心功能。當應用程式出現故障,或者系統硬體、網絡出現故障時,應用可以通過RHCS提供的高可用性服務管理元件自動、快速從一個節點切換到另一個節點,節點故障轉移功能對用戶端來說是透明的,進而保證應用持續、不間斷的對外提供服務,這就是RHCS高可用叢集實作的功能。
- 負載均衡叢集: RHCS通過LVS來提供負載均衡叢集,而LVS是一個開源的、功能強大的基于IP的負載均衡技術,LVS由負載排程器和服務通路節點組成,通過LVS的負載排程功能,可以将用戶端請求平均的配置設定到各個服務節點,同時,還可以定義多種負載配置設定政策,當一個請求進來時,叢集系統根據排程算法來判斷應該将請求配置設定到哪個服務節點,然後,由配置設定到的節點響應用戶端請求,同時,LVS還提供了服務節點故障轉移功能,也就是當某個服務節點不能提供服務時,LVS會自動屏蔽這個故障節點,接着将失敗節點從叢集中剔除,同時将新來此節點的請求平滑的轉移到其它正常節點上來;而當此故障節點恢複正常後,LVS又會自動将此節點加入到叢集中去。而這一系列切換動作,對使用者來說,都是透明的,通過故障轉移功能,保證了服務的不間斷、穩定運作。
- 存儲叢集: RHCS通過GFS檔案系統來提供存儲叢集功能,GFS是Global File System的縮寫,它允許多個服務同時去讀寫一個單一的共享檔案系統,存儲叢集通過将共享資料放到一個共享檔案系統中進而消除了在應用程式間同步資料的麻煩,GFS是一個分布式檔案系統,它通過鎖管理機制,來協調和管理多個服務節點對同一個檔案系統的讀寫操作。
- 叢集結構:

- 叢集套件的作用
-
叢集中luci的作用:
luci是用來配置和管理叢集,監聽在8084上
-
叢集中ricci的作用:
ricci是安裝在每個後端的每個節點上的,luci管理叢集上的各個節點就是通過和節點上的ricci進行通信,ricci監聽在11111上
-
叢集中fence的作用:
當意外原因導緻主機異常或者當機時,備機會首先調用FENCE裝置,然後通過FENCE裝置将異常主機重新開機或者從網絡隔離,當FENCE操作成功執行後,傳回資訊給備機,備機在接到FENCE成功的資訊後,開始接管主機的服務和資源。這樣通過FENCE裝置,将異常節點占據的資源進行了釋放,保證了資源和服務始終運作在一個節點上。并且有效的阻止了“腦裂"的發生。
實驗環境:
主機名 | IP | 服務 |
---|---|---|
server1 | 172.25.79.1 | ricci 、luci、httpd |
server2 | 172.25.79.2 | ricci、httpd |
foundation79 | 172.25.79.250 | fence |
搭建RHCS環境
一、 配置主機和server1,server2的環境環境
- 首先在server1和server2搭建進階的yum源
vim /etc/yum.repo//rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.79.250/rhel6.5
enabled=1
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.79.250/rhel6.5/HighAvailability
enabled=1
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.79.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.79.250/rhel6.5/ResilientStorage
enabled=1
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.79.250/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=0
[[email protected] ~]# yum clean all
[[email protected] ~]# yum repolist
server2上同理
- 添加解析(實體機,server1和server2上都要做)
[[email protected] images]# vim /etc/hosts
[[email protected] images]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.79.1 server1
172.25.79.2 server2
172.25.79.3 server3
172.25.79.4 server4
172.25.79.5 server5
172.25.79.6 server6
server1和server2同上配置
- 在server1下載下傳rhcs的圖形網頁管理工具
- ricci(圖形裡的叢集管理)
- luci(圖形界面)
- 修改ricci使用者密碼
- 開啟ricci和luci
- 并設定開機自啟
[[email protected] ~]# yum install ricci luci -y
[[email protected] ~]# passwd ricci
[[email protected] ~]# /etc/init.d/ricci start
[[email protected] ~]# /etc/init.d/luci start
[[email protected] ~]# chkconfig ricci on
[[email protected] ~]# chkconfig luci on
- 在server2上下載下傳ricci,其餘同server1上設定
[[email protected] ~]# yum install ricci -y
[[email protected] ~]# passwd ricci
[[email protected] ~]# /etc/init.d/ricci start
[[email protected] ~]# chkconfig ricci on
二、建立叢集
(1)在浏覽器中輸入https://172.25.79.1:8084
- 因為是https通路,是以需要添加信任網絡,點選Advanced …
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
(2)登陸帳号和密碼是server1中的系統使用者和密碼,普通使用者需要經過超級使用者的稽核才能登陸,是以一般選擇超級使用者登陸
(3)點選叢集管理(Manager Clusters),然後點選create出現以下頁面,建立一個叢集westos_ha
- 然後點選(CreateCluster),進入等待頁面,此時server1和server2會重新開機,然後在重新連接配接server1和server2
- 節點添加成功如下圖
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 此時,在兩個主機中的任一個上執行clustat,或者cat /etc/cluster/cluster.conf ,都可以檢視到叢集的資訊
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
三、配置fence
- FENCE的原理:
當意外原因導緻主機異常或者當機時,備機會首先調用FENCE裝置,然後通過FENCE裝置将異常主機重新開機或者從網絡隔離,當FENCE操作成功執行後,傳回資訊給備機,備機在接到FENCE成功的資訊後,開始接管主機的服務和資源。這樣通過FENCE裝置,将異常節點占據的資 源進行了釋放,保證了資源和服務始終運作在一個節點上。
- 配置過程:
- 在主機上安裝fence
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 編輯fence的配置檔案
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- 除了修改此處,其餘回車即可
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- 如果沒有密鑰目錄,自己建立一個,并截取密鑰
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 将修改好的密鑰檔案發送給節點server1和server2,保證server1和server2利用的是同一個密鑰
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 打開fence服務
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- 添加fence裝置
- 點選Fence Devices,再點選Add
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- 選擇多點傳播模式的fence
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
-
綁定節點(兩個節點都要進行以下操作)
(1)server1
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- UUID可以在虛拟機的管理截面看到 (2)server2同理
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- 兩個節點都綁定後配置檔案内容應該如下:
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) -
測試:
在server2上通過fence幹掉節點server2,使server2斷電重新開機則為成功
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
四、高可用服務配置(httpd為例)
- 添加故障轉移域
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- 将sever1和server2添加在域中,即server1或server2出現故障時,切換到正常的那一個上,叢集打開後,服務落在優先級高的節點上。(數字越小優先級越高)
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- 添加服務中所要用到的資源(以httpd高可用為例)
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
-
添加IP Address(叢集對外VIP) ,點選Submit送出
5 : 切換主機之間的時間
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 再點選Resources,點選Add,選擇模式Script,添加啟動httpd服務的腳本
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- 向叢集中添加上一步添加的資源(IP Address 和script)
- 第一步是建立一個資源組(服務中要用到資源的集合)apache
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 接着将資源添加進去
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 在server1 和server2上安裝httpd服務,并編寫預設測試頁面内容
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) (2)server2上配置同理RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 重新整理頁面,顯示httpd服務運作在server2上(優先級高)
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 并且在server2上可以看到添加上的VIP
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
-
測試
(1)在實體機通路兩台節點,正常
(2)在實體機通路VIP——>server2RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) (3)測試高可用RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)
- 在server2中,輸入echo c> /proc/sysrq-trigger ,手動宕掉伺服器
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) - 再次通路VIP,會發現通路切換到server1上,等server2重新開機成功之後,則又會切換到server2
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) -
注意:
一般在企業中,需要勾選 No Failback (故障不會切) 、
即當server2挂掉後,服務自動轉到server1上,并且VIP也會自動飄過來,即使server2重新開機成功了,服務也不會再轉回去
- 當關掉server2上的httpd,服務會自動轉移到server1上
RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例) RHCS叢集套件(ricci,luci,fence)及實作高可用性叢集(httpd為例)