RHCS 即 RedHat Cluster Suite ,中文意思即紅帽集羣套件。紅帽集羣套件(RedHat Cluter Suite, RHCS)是一套綜合的軟件組件,能夠經過在部署時採用不一樣的配置,以知足你的對高可用性,負載均衡,可擴展性,文件共享和節約成本的須要。對於須要最大 正常運行時間的應用來講,帶有紅帽集羣套件(Red Hat Cluster Suite)的紅帽企業 linux 集羣是最佳的選擇。紅帽集羣套件專爲紅帽企業 Linux 量身設計,它提供有以下兩種不一樣類型的集羣:
一、應用/服務故障切換-經過建立n個節點的服務器集羣來實現關鍵應用和服務的故障切換
二、IP 負載均衡-對一羣服務器上收到的 IP 網絡請求進行負載均衡利用紅帽集羣套件,能夠以高可用性配置來部署應用,從而使其老是處於運行狀態-這賦予了企業向外擴展(scale- out)linux 部署的能力。對於網絡文件系統(NFS)、Samba 和Apache 等大量應用的開源應用來講,紅帽集羣套件提供了一個隨時可用的全面故障切換解決方案。
html
分佈式集羣管理器(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是一種web集羣配置工具,與system-config-cluster不一樣的是,Conga是經過web方式來配置和管理集羣節點的。Conga有兩部分組成,分別是luci和ricci,luci安裝在一臺獨立的計算機上,用於配置和管理集羣,ricci安裝在每一個集羣節點上,Luci經過ricci和集羣中的每一個節點進行通訊。RHCS也提供了一些功能強大的集羣命令行管理工具,經常使用的有clustat、cman_tool、ccs_tool、fence_tool、clusvcadm等。
node
服務器:mysql
ansible server : 192.168.8.40 node2.chinasoft.com: 192.168.8.39 node3.chinasoft.com: 192.168.8.41 node4.chinasoft.com: 192.168.8.42
一、配置/etc/hosts文件,不使用DNS解析域名linux
192.168.8.39 node2.chinasoft.com node2 192.168.8.42 node4.chinasoft.com node4 192.168.8.41 node3.chinasoft.com node3
二、時間同步、在ansible服務器配置免密碼訪問node二、node三、node4
在ansible服務器中添加rhcs組
# vim /etc/ansible/hosts
加入以下內容:web
[rhcs] node2.chinasoft.com node3.chinasoft.com node4.chinasoft.com
時間同步sql
# ansible rhcs -a "ntpdate -u 192.168.8.102" node2.chinasoft.com | success | rc=0 >> 29 Apr 12:05:30 ntpdate[26149]: step time server 192.168.8.102 offset 4.144328 sec node3.chinasoft.com | success | rc=0 >> 29 Apr 12:05:30 ntpdate[23829]: adjust time server 192.168.8.102 offset 0.208051 sec node4.chinasoft.com | success | rc=0 >> 29 Apr 12:05:30 ntpdate[4932]: step time server 192.168.8.102 offset 2.731589 sec # ansible rhcs -a "date" node2.chinasoft.com | success | rc=0 >> Fri Apr 29 12:05:35 CST 2016 node4.chinasoft.com | success | rc=0 >> Fri Apr 29 12:05:35 CST 2016 node3.chinasoft.com | success | rc=0 >> Fri Apr 29 12:05:35 CST 2016
/etc/hosts文件是否相同shell
# ansible rhcs -m shell -a "cat /etc/hosts" node2.chinasoft.com | success | rc=0 >> 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.8.39 node2.chinasoft.com node2 192.168.8.42 node4.chinasoft.com node4 192.168.8.41 node3.chinasoft.com node3 node4.chinasoft.com | success | rc=0 >> 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.8.39 node2.chinasoft.com node2 192.168.8.42 node4.chinasoft.com node4 192.168.8.41 node3.chinasoft.com node3 node3.chinasoft.com | success | rc=0 >> 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.8.39 node2.chinasoft.com node2 192.168.8.42 node4.chinasoft.com node4 192.168.8.41 node3.chinasoft.com node3
三、使用centos6.5做爲yum源
注意:若是啓用了epel源,其會經過epel安裝Luci依賴的rpm包,這會被rhcs認爲是不安全的。所以,安裝luci時要禁用epel源。
檢查Yum源apache
# ansible rhcs -m shell -a "yum repolist" node2.chinasoft.com | success | rc=0 >> Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile repo id repo name status base localyum 3995 updates localyum 3995 repolist: 7990 node3.chinasoft.com | success | rc=0 >> Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile repo id repo name status base localyum 3995 updates localyum 3995 repolist: 7990 node4.chinasoft.com | success | rc=0 >> Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile repo id repo name status base localyum 3995 updates localyum 3995 repolist: 7990
四、關閉幾臺服務器上的防火牆和selinux(避免干擾)
具體可參考前面的博文:CentOS 6.5環境實現corosync+pacemaker實現DRBD高可用
http://blog.csdn.net/reblue520/article/details/51271281vim
一、在各ha節點上安裝ricci
# ansible rhcs -m yum -a "name=ricci state=present disablerepo=epel"
# ansible rhcs -m yum -a "name=ricci state=present"
管理機安裝luci並啓動luci服務(8.40 安裝ansible服務的機器)實際使用中,若是沒有專用的跳板機,也能夠以三個節點中的某節點來替代
# yum install -y luci --disablerepo=epel
# service luci start
二、啓動HA節點的ricci服務並設置爲開機啓動centos
# ansible rhcs -m service -a "name=ricci state=started enabled=yes" node2.chinasoft.com | success >> { "changed": true, "enabled": true, "name": "ricci", "state": "started" } node3.chinasoft.com | success >> { "changed": true, "enabled": true, "name": "ricci", "state": "started" } node4.chinasoft.com | success >> { "changed": true, "enabled": true, "name": "ricci", "state": "started" }
隨便找一臺ha節點機器執行netstat -tunlp 能夠看到ricci服務已啓動
# netstat -tunlp | grep ricci
tcp 0 0 :::11111 :::* LISTEN 26995/ricci
5、經過HA WEB配置集羣
訪問https://192.168.8.40:8084 能夠看到HA節點的web控制檯
輸入root用戶和密碼便可登陸
一、爲HA節點添加ricci的密碼,配置集羣要用到
# ansible rhcs -m shell -a "echo centos | passwd --stdin ricci" node2.chinasoft.com | success | rc=0 >> Changing password for user ricci. passwd: all authentication tokens updated successfully. node3.chinasoft.com | success | rc=0 >> Changing password for user ricci. passwd: all authentication tokens updated successfully. node4.chinasoft.com | success | rc=0 >> Changing password for user ricci. passwd: all authentication tokens updated successfully.
依次點擊Manager Clusters/create建立一個名爲mycluster的集羣,建立會自動從新啓動HA節點,須要等幾分鐘生效
二、故障轉移域配置,如咱們當前配置:故障後下線又上線不自動切換,優先級分別爲node二、node三、node4
定義節點啓動的優先級,數字越小級別越高
三、定義資源
添加一個VIP:地址爲192.168.8.77
在HA節點上安裝apache軟件
# ansible rhcs -m yum -a "name=httpd state=present"
刪除默認歡迎主頁
# ansible rhcs -m shell -a "rm -rf /etc/httpd/conf.d/welcome.conf"
添加一個編輯各自節點主頁內容爲當前主機名的腳本
# vim setindex.sh
#!/bin/bash
#
echo "<h1>`uname -n`" > /var/www/html/index.html
# chmod +x setindex.sh
將腳本拷貝到各節點
# for i in {2..4}; do scp -p setindex.sh node$i.chinasoft.com:/tmp/; done
執行腳本
# ansible rhcs -m shell -a "/tmp/setindex.sh"
驗證主頁是否修改爲功
# ansible rhcs -a "cat /var/www/html/index.html"
node2.chinasoft.com | success | rc=0 >>
<h1>node2.chinasoft.com
node3.chinasoft.com | success | rc=0 >>
<h1>node3.chinasoft.com
node4.chinasoft.com | success | rc=0 >>
<h1>node4.chinasoft.com
四、定義服務
添加一個名爲webservice的服務,並關聯以前定義的webdomain
添加資源如:VIP和SCRIPTS(httpd服務)
啓動服務
經過訪問http://192.168.8.77/
能夠看到服務運行在了node3上面,經過nodes使node3下線,此時轉移到了node4上,由於將node4的優先級調整爲了1
讓node3從新上線此時服務依舊運行在node4上面
經過在任意HA節點上運行clustat、cman_tool status及cman_tool services命令能夠看到集羣的狀態
經過rpm命令能夠看到rhcs集羣底層是把cman和corosync以插件的方式運行的