RHCS(概念篇)
1、 什麼是RHCS
RHCS是Red Hat Cluster Suite的縮寫,也就是紅帽子集羣套件,RHCS是一個可以提供高可用性、高可靠性、負載均衡、存儲共享且經濟廉價的集羣工具集合,它將集羣系統中三大集羣架構融合一體,能夠給web應用、數據庫應用等提供安全、穩定的運行環境。
更確切的說,RHCS是一個功能完備的集羣應用解決方案,它從應用的前端訪問到後端的數據存儲都提供了一個行之有效的集羣架構實現,經過RHCS提供的這種解決方案,不但能保證前端應用持久、穩定的提供服務,同時也保證了後端數據存儲的安全。
RHCS提供了集羣系統中三種集羣構架,分別是高可用性集羣、負載均衡集羣、存儲集羣。前端
2、RHCS提供的三個核心功能
高可用集羣是RHCS的核心功能。當應用程序出現故障,或者系統硬件、網絡出現故障時,應用能夠經過RHCS提供的高可用**管理組件自動、快速從一個節點切換到另外一個節點,節點故障轉移功能對客戶端來講是透明的,從而保證應用持續、不間斷的對外提供服務,這就是RHCS高可用集羣實現的功能。
RHCS經過LVS(Linux Virtual Server)來提供負載均衡集羣,而LVS是一個開源的、功能強大的基於IP的負載均衡技術,LVS由負載調度器和服務訪問節點組成,經過LVS的負載調度功能,能夠將客戶端請求平均的分配到各個服務節點,同時,還能夠定義多種負載分配策略,當一個請求進來時,集羣系統根據調度算法來判斷應該將請求分配到哪一個服務節點,而後,由分配到的節點響應客戶端請求,同時,LVS還提供了服務節點故障轉移功能,也就是當某個服務節點不能提供服務時,LVS會自動屏蔽這個故障節點,接着將失敗節點從集羣中剔除,同時將新來此節點的請求平滑的轉移到其它正常節點上來;而當此故障節點恢復正常後,LVS又會自動將此節點加入到集羣中去。而這一系列切換動做,對用戶來講,都是透明的,經過故障轉移功能,保證了服務的不間斷、穩定運行。mysql
RHCS經過GFS文件系統來提供存儲集羣功能,GFS是Global File System的縮寫,它容許多個服務同時去讀寫一個單一的共享文件系統,存儲集羣經過將共享數據放到一個共享文件系統中從而消除了在應用程序間同步數據的麻煩,GFS是一個分佈式文件系統,它經過鎖管理機制,來協調和管理多個服務節點對同一個文件系統的讀寫操做。web
3、RHCS集羣的組成
RHCS是一個集羣工具的集合,主要有下面幾大部分組成:
? 集羣構架管理器
這是RHCS集羣的一個基礎套件,提供一個集羣的基本功能,使各個節點組成集羣在一塊兒工做,具體包含分佈式集羣管理器(CMAN)、成員關係管理、鎖管理(DLM)、配置文件管理(CCS)、柵設備(FENCE)。
? 高可用服務管理器
提供節點服務監控和服務故障轉移功能,當一個節點服務出現故障時,將服務轉移到另外一個健康節點。
? 集羣配置管理工具
RHCS最新版本經過LUCI來配置和管理RHCS集羣,LUCI是一個基於web的集羣配置方式,經過luci能夠輕鬆的搭建一個功能強大的集羣系統。
? Linux Virtual Server
LVS是一個開源的負載均衡軟件,利用LVS能夠將客戶端的請求根據指定的負載策略和算法合理的分配到各個服務節點,實現動態、智能的負載分擔。算法
RHCS除了上面的幾個核心構成,還能夠經過下面一些組件來補充RHCS集羣功能。
? Red Hat GFS (Global File System)
GFS是Redhat公司開發的一款集羣文件系統,目前的最新版本是GFS2,GFS文件系統容許多個服務同時讀寫一個磁盤分區,經過GFS能夠實現數據的集中管理,免去了數據同步和拷貝的麻煩,但GFS並不能孤立的存在,安裝GFS須要RHCS的底層組件支持。
? Cluster Logical Volume Manager
Cluster邏輯卷管理,即CLVM,是LVM的擴展,這種擴展容許cluster中的機器使用LVM來管理共享存儲。
? iSCSI
iSCSI是一種在Internet協議上,特別是以太網上進行數據塊傳輸的標準,它是一種基於IP Storage理論的新型存儲技術,RHCS能夠經過ISCSI技術來導出和分配共享存儲的使用。
? Global Network Block Device
全局網絡模塊,簡稱GNBD,是GFS的一個補充組件,用於RHCS分配和管理共享存儲,GNBD分爲客戶端和服務端,在服務端GNBD容許導出多個塊設備或者GNBD文件,而GNBD客戶端經過導入這些導出的塊設備或者文件,就能夠把它們看成本地塊設備使用。因爲如今GNBD已經中止了開發,因此使用GNBD的愈來愈少。sql
4、 RHCS集羣結構
RHCS集羣從總體上分爲三大部分,負載均衡集羣、 高可用性集羣、存儲集羣,如圖1所示:數據庫
圖1apache
圖1是典型的RHCS集羣拓撲結構:整個拓撲結構分爲三個層面:
最上層是LVS負載均衡層,中間一層是Real Server層,就是服務節點部分,最後一層是共享存儲層,主要用於給GFS文件系統提供共享存儲空間。後端
5、RHCS集羣運行原理及功能介紹安全
一、 分佈式集羣管理器(CMAN)
Cluster Manager,簡稱CMAN,是一個分佈式集羣管理工具,它運行在集羣的各個節點上,爲RHCS提供集羣管理任務。
CMAN用於管理集羣成員、消息和通知。它經過監控每一個節點的運行狀態來了解節點成員之間的關係,當集羣中某個節點出現故障,節點成員關係將發生改變,CMAN及時將這種改變通知底層,進而作出相應的調整。
二、鎖管理(DLM)
Distributed Lock Manager,簡稱DLM,表示一個分佈式鎖管理器,它是RHCS的一個底層基礎構件,同時也爲集羣提供了一個公用的鎖運行機制,在RHCS集羣系統中,DLM運行在集羣的每一個節點上,GFS經過鎖管理器的鎖機制來同步訪問文件系統元數據。CLVM經過鎖管理器來同步更新數據到LVM卷和卷組。
DLM不須要設定鎖管理服務器,它採用對等的鎖管理方式,大大的提升了處理性能。同時,DLM避免了當單個節點失敗須要總體恢復的性能瓶頸,另外,DLM的請求都是本地的,不須要網絡請求,於是請求會當即生效。最後,DLM經過分層機制,能夠實現多個鎖空間的並行鎖模式。
三、配置文件管理(CCS)
Cluster Configuration System,簡稱CCS,主要用於集羣配置文件管理和配置文件在節點之間的同步。CCS運行在集羣的每一個節點上,監控每一個集羣節點上的單一配置文件/etc/cluster/cluster.conf的狀態,當這個文件發生任何變化時,都將此變化更新到集羣中的每一個節點,時刻保持每一個節點的配置文件同步。例如,管理員在節點A上更新了集羣配置文件,CCS發現A節點的配置文件發生變化後,立刻將此變化傳播到其它節點上去。
rhcs的配置文件是cluster.conf,它是一個xml文件,具體包含集羣名稱、集羣節點信息、集羣資源和服務信息、fence設備等,這個會在後面講述。
四、柵設備(FENCE)
FENCE設備是RHCS集羣中必不可少的一個組成部分,經過FENCE設備能夠避免因出現不可預知的狀況而形成的「腦裂」現象,FENCE設備的出現,就是爲了解決相似這些問題,Fence設備主要就是經過服務器或存儲自己的硬件管理接口,或者外部電源管理設備,來對服務器或存儲直接發出硬件管理指令,將服務器重啓或關機,或者與網絡斷開鏈接。
FENCE的工做原理是:當意外緣由致使主機異常或者宕機時,備機會首先調用FENCE設備,而後經過FENCE設備將異常主機重啓或者從網絡隔離,當FENCE操做成功執行後,返回信息給備機,備機在接到FENCE成功的信息後,開始接管主機的服務和資源。這樣經過FENCE設備,將異常節點佔據的資源進行了釋放,保證了資源和服務始終運行在一個節點上。
RHCS的FENCE設備能夠分爲兩種:內部FENCE和外部FENCE,經常使用的內部FENCE有IBM RSAII卡,HP的iLO卡,還有IPMI的設備等,外部fence設備有UPS、SAN SWITCH、NETWORK SWITCH等
五、高可用服務管理器
高可用**管理主要用來監督、啓動和中止集羣的應用、服務和資源。它提供了一種對集羣服務的管理能力,當一個節點的服務失敗時,高可用性集羣服務管理進程能夠將服務從這個失敗節點轉移到其它健康節點上來,而且這種服務轉移能力是自動、透明的。
RHCS經過rgmanager來管理集羣服務,rgmanager運行在每一個集羣節點上,在服務器上對應的進程爲clurgmgrd。
在一個RHCS集羣中,高可用**包含集羣服務和集羣資源兩個方面,集羣服務其實就是應用服務,例如apache、mysql等,集羣資源有不少種,例如一個IP地址、一個運行腳本、ext3/GFS文件系統等。
在RHCS集羣中,高可用**是和一個失敗轉移域結合在一塊兒的,所謂失敗轉移域是一個運行特定服務的集羣節點的集合。在失敗轉移域中,能夠給每一個節點設置相應的優先級,經過優先級的高低來決定節點失敗時服務轉移的前後順序,若是沒有給節點指定優先級,那麼集羣高可用服務將在任意節點間轉移。所以,經過建立失敗轉移域不但能夠設定服務在節點間轉移的順序,並且能夠限制某個服務僅在失敗轉移域指定的節點內進行切換。
六、集羣配置管理工具
RHCS提供了多種集羣配置和管理工具,經常使用的有基於GUI的system-config-cluster、Conga等,也提供了基於命令行的管理工具。
system-config-cluster是一個用於建立集羣和配置集羣節點的圖形化管理工具,它有集羣節點配置和集羣管理兩個部分組成,分別用於建立集羣節點配置文件和維護節點運行狀態。通常用在RHCS早期的版本中。
Conga是一種新的基於網絡的集羣配置工具,與system-config-cluster不一樣的是,Conga是經過web方式來配置和管理集羣節點的。Conga有兩部分組成,分別是luci和ricci,luci安裝在一**立的計算機上,用於配置和管理集羣,ricci安裝在每一個集羣節點上,Luci經過ricci和集羣中的每一個節點進行通訊。
RHCS也提供了一些功能強大的集羣命令行管理工具,經常使用的有clustat、cman_tool、ccs_tool、fence_tool、clusvcadm等,這些命令的用法將在下面講述。
七、 Redhat GFS GFS是RHCS爲集羣系統提供的一個存儲解決方案,它容許集羣多個節點在塊級別上共享存儲,每一個節點經過共享一個存儲空間,保證了訪問數據的一致性,更切實的說,GFS是RHCS提供的一個集羣文件系統,多個節點同時掛載一個文件系統分區,而文件系統數據不受破壞,這是單一的文件系統,例如EXT三、EXT2所不能作到的。 爲了實現多個節點對於一個文件系統同時讀寫操做,GFS使用鎖管理器來管理I/O操做,當一個寫進程操做一個文件時,這個文件就被鎖定,此時不容許其它進程進行讀寫操做,直到這個寫進程正常完成才釋放鎖,只有當鎖被釋放後,其它讀寫進程才能對這個文件進行操做,另外,當一個節點在GFS文件系統上修改數據後,這種修改操做會經過RHCS底層通訊機制當即在其它節點上可見。 在搭建RHCS集羣時,GFS通常做爲共享存儲,運行在每一個節點上,而且能夠經過RHCS管理工具對GFS進行配置和管理。這些須要說明的是RHCS和GFS之間的關係,通常初學者很容易混淆這個概念:運行RHCS,GFS不是必須的,只有在須要共享存儲時,才須要GFS支持,而搭建GFS集羣文件系統,必需要有RHCS的底層支持,因此安裝GFS文件系統的節點,必須安裝RHCS組件。