一、什么是RHCS
RHCS是Red Hat Cluster Suite的縮寫,也就是紅帽集群套件,RHCS是一個能夠提供高可用性、高可靠性、負載均衡、存儲共享且經濟廉價的集群工具集合,它將集群系統中三大集群架構融合一體,可以給web應用、數據庫應用等提供安全、穩定的運行環境。 更確切的說,RHCS是一個功能完備的集群應用解決方案,它從應用的前端訪問到后端的數據存儲都提供了一個行之有效的集群架構實現,通過RHCS提供的這種解決方案,不但能保證前端應用持久、穩定的提供服務,同時也保證了后端數據存儲的安全。 RHCS提供了集群系統中三種集群構架,分別是高可用性集群、負載均衡集群、存儲集群。
二、RHCS提供的三個核心功能
高可用集群是RHCS的核心功能。當應用程序出現故障,或者系統硬件、網絡出現故障時,應用可以通過RHCS提供的高可用性服務管理組件自動、快速從一個節點切換到另一個節點,節點故障轉移功能對客戶端來說是透明的,從而保證應用持續、不間斷的對外提供服務,這就是RHCS高可用集群實現的功能。 RHCS通過LVS(Linux Virtual Server)來提供負載均衡集群,而LVS是一個開源的、功能強大的基於IP的負載均衡技術,LVS由負載調度器和服務訪問節點組成,通過LVS的負載調度功能,可以將客戶端請求平均的分配到各個服務節點,同時,還可以定義多種負載分配策略,當一個請求進來時,集群系統根據調度算法來判斷應該將請求分配到哪個服務節點,然后,由分配到的節點響應客戶端請求,同時,LVS還提供了服務節點故障轉移功能,也就是當某個服務節點不能提供服務時,LVS會自動屏蔽這個故障節點,接着將失敗節點從集群中剔除,同時將新來此節點的請求平滑的轉移到其它正常節點上來;而當此故障節點恢復正常后,LVS又會自動將此節點加入到集群中去。而這一系列切換動作,對用戶來說,都是透明的,通過故障轉移功能,保證了服務的不間斷、穩定運行。 RHCS通過GFS文件系統來提供存儲集群功能,GFS是Global File System的縮寫,它允許多個服務同時去讀寫一個單一的共享文件系統,存儲集群通過將共享數據放到一個共享文件系統中從而消除了在應用程序間同步數據的麻煩,GFS是一個分布式文件系統,它通過鎖管理機制,來協調和管理多個服務節點對同一個文件系統的讀寫操作。
三、RHCS集群的組成
RHCS是一個集群工具的集合,主要有下面幾大部分組成:
集群構架管理器:這是RHCS集群的一個基礎套件,提供一個集群的基本功能,使各個節點組成集群在一起工作,具體包含分布式集群管理器(CMAN)、成員關系管理、鎖管理(DLM)、配置文件管理(CCS)、柵設備(FENCE)。
高可用服務管理器:提供節點服務監控和服務故障轉移功能,當一個節點服務出現故障時,將服務轉移到另一個健康節點。
四、RHCS集群的配置
實驗環境主機配置及功能:
server4 ip:172.25.2.1 安裝ricci(集群節點)
server1 ip 172.25.2.4 安裝ricci(集群節點) 和 luci(集群管理界面)
1)在server1中安裝ricci和luci軟件包。並設置啟動(首先。你需要有相應的yum源的倉庫。在之前的博客中已經說明過了,在此就不多說了)
---> yum install ricci luci -y
---> /etc/init.d/ricci start # 啟動ricci服務
---> chkconfig ricci on # 設置該服務為開機自啟動
---> chkconfig --list ricci # 查看是該服務的狀態
---> echo xniu |passwd --stdin ricci # 給ricci用戶添加密碼
---> /etc/init.d/luci start # 對luci進行類似的操作
---> chkconfig luci on
---> echo xniu| passwd --stdin luci
注意:在啟動ricci服務的過程中,若/etc/sysconfig/network文件中沒有參數NETWORKING=yes時,會出現服務啟動不了的問題。
2)在server4中ricci軟件的安裝和服務的啟動等設置
---> yum install ricci -y
---> /etc/init.d/ricci start
---> chkconfig ricci on
---> passwd xniu|grep --stdin ricci
---> server ricci status # 查看ricci的狀態是否啟動
3)在物理機中進行域名解析:
---> vim /etc/hosts # 修改配置文件。添加域名解析
172.25.2.1 server1
172.25.2.4 server4
4)在物理機的瀏覽器中進行如下添加
---> https://server1:8084 # 在瀏覽器中輸入,會出現群管理的登陸界面 (此時添如root和之前luci用戶的密碼)
具體配置如下:
五、配置實現nginx的高可用(nginx的安裝在之后的博客中有,在此就不多寫了)
1)集群的創建:點擊集群管理(Manager Clusters),然后點擊create出現以下頁面,創建自己的集群名稱
2) 建立錯誤恢復域,當一個節點有問題,可以切換到另一節點上(設置server1優先級高)
3)添加要用的資源vip和nginx(ip中參數有子網掩碼、vip、切換主機時間5s)
4)在集群中添加服務組,要按順序來添加資源,首先時ip--》存儲空間---》服務。
# 完成之后啟動資源組,我們可以查看到當前運行的狀態(運行在server1上,由於優先級問題,先啟動server1)
5)在server1和server4中進行nginx服務測試。在瀏覽器中輸入172.25.2.100會出現如下界面:(nginx的負載均衡)
# 也可以使用命令clustat查看服務在節點的運行情況
# 當server1中關閉nginx服務,自動會到server4節點上。從而實現服務的高可用(有出錯檢查時間,所以切換慢一點)
---> /etc/init.d/nginx stop
6)clusvcdm集群管理的基本操作
六、FENCE設備與nginx結合的高可用
fence:當發生意外導致主機異常或不是簡單的停機服務時,備用機會首先調用fence設備,然后通過fence設備將異常的主機重新啟動或從網絡上隔離,釋放異常主機占據的資源,當隔離成功,返回資源信息給備用機,備用機在接收到信息后,開始接管主機的服務和資源,
fence原理:通過柵設備可以從集群共享存儲中斷開一個節點,切斷I/O以確保數據的完整性。當CMAN確定一個節點失敗后,它在集群結構中通告這個失敗的節點,fence進程將失敗的節點隔離,以保證節點不破壞共享數據。它可以避免因出現不可預知的情況而造成的“腦裂”(split-brain)現象。腦裂是指當兩個節點之間的心跳線中斷時,兩台主機均認為自己時主節點,於是對集群資源進行爭用、搶奪。
RHCE的fence設備有兩種:內部fence和外部fence。當節點A上的柵過程發現C節點失效時,它通過柵代理通知光纖通道交換將c節點隔離,從而釋放占用的共享通道。當A上的柵過程發現c節點失效時,通過柵代理直接對服務器做power on/off操作,而不去執行操作系統的開關機。
1)在真機中安裝fence服務,並設置開機自啟動
---> yum install fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 fence-virtd.x86_64 -y
---> systemctl start fence-virtd
---> systemctl enabled fence-virtd
2)配置fence的配置文件
---> fence_virtd -c # 在nginx的高可用中說過了,在這就不多寫了
3)在真機中,生成密鑰
---> mkidr /etc/cluster
---> dd if=/dev/urandom of/fence_xvm bs=128 count=1 # 截取密碼文件
4)將生成的fence_xvm發送給server1和server4
---> scp /etc/cluster/fence_xvm server1:/etc/cluster
---> scp /etc/cluster/fence_xvm server4:/etc/cluster
5)在luci管理界面添加fence
# 首先在fence Dvice中添加vmfence1和vmfence2
# 添加完成后情況如下所示
#在節點server1和server4中把對應的vmfence添加進去(此處的uuid為vm1的唯一的id),此處為server1為例子
# 添加完成可以看到vmfence的信息
6)完成后啟動nginx資源組,並進行測試。
---> echo c> /proc/sysrq-trigger # 使server4主機崩了之后,服務會自動切換到server1上。(此時server4狀態為offline)
# 過一會,server4主機自啟動之后,結果為:(servr4為online)