RHCS(實戰篇)

1、 安裝環境介紹
這個實例要介紹的是web+mysql集羣的構建,整個RHCS集羣共有四臺服務器組成,分別由兩臺主機搭建web集羣,兩臺主機搭建mysql集羣,在這種集羣構架下,任何一臺web服務器故障,都有另外一臺web服務器進行服務接管,同時,任何一臺mysql服務器故障,也有另外一臺mysql服務器去接管服務,保證了整個應用系統服務的不間斷運行。以下圖所示:node


2、 安裝前準備工做
Centos是RHEL的克隆版本,而且RHCS全部功能組件都免費提供,所以下面的講述以Centos爲準。
操做系統:統一採用Centos5.3版本。爲了方便安裝RHCS套件,在安裝操做系統時,建議選擇以下這些安裝包:
? 桌面環境:xwindows system、GNOME desktop environment。
? 開發工具:development tools、x software development、gnome software development、kde software development。
地址規劃以下:mysql

iSCSI-target的安裝與使用已經在前面文章中作過介紹,再也不講述,這裏假定共享的磁盤是/dev/sdb。web


3、 安裝Luci
Luci是RHCS基於web的集羣配置管理工具,能夠從系統光盤找到對應的Luci安裝包,安裝以下:
[root@storgae-server ~]#rpm -ivh luci-0.12.2-12.el5.centos.1.i386.rpm
安裝完成,執行luci初始化操做:
[root@storgae-server ~]#luci_admin init
Initializing the Luci server
Creating the 'admin' user
Enter password:
Confirm password:
Please wait...
The admin password has been successfully set.
Generating SSL certificates...
Luci server has been successfully initialized
輸入兩次密碼後,就建立了一個默認登陸luci的用戶admin。
最後,啓動luci服務便可:
[root@storgae-server ~]# /etc/init.d/luci start
服務成功啓動後,就能夠經過https://ip:8084訪問luci了。
爲了能讓luci訪問集羣其它節點,還須要在/etc/hosts增長以下內容:
192.168.12.231 Mysql1
192.168.12.232 Mysql2
192.168.12.230 web1
192.168.12.240 web2
到這裏爲止,在storgae-server主機上的設置完成。sql

4、在集羣節點安裝RHCS軟件包
爲了保證集羣每一個節點間能夠互相通訊,須要將每一個節點的主機名信息加入/etc/hosts文件中,修改完成的/etc/hosts文件內容以下:
127.0.0.1 localhost
192.168.12.230 web1
192.168.12.240 web2
192.168.12.231 Mysql1
192.168.12.232 Mysql2
將此文件依次複製到集羣每一個節點的/etc/hosts文件中。windows

RHCS軟件包的安裝有兩種方式,能夠經過luci管理界面,在建立Cluster時,經過在線下載方式自動安裝,也能夠直接從操做系統光盤找到所需軟件包進行手動安裝,因爲在線安裝方式受網絡和速度的影響,不建議採用,這裏經過手動方式來安裝RHCS軟件包。
安裝RHCS,主要安裝的組件包有cman、gfs2和rgmanager,固然在安裝這些軟件包時可能須要其它依賴的系統包,只需按照提示進行安裝便可 ,下面是一個安裝清單,在集羣的四個節點分別執行 :
#install cman
rpm -ivh perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm
rpm -ivh perl-XML-SAX-0.14-8.noarch.rpm
rpm -ivh perl-XML-LibXML-Common-0.13-8.2.2.i386.rpm
rpm -ivh perl-XML-LibXML-1.58-6.i386.rpm
rpm -ivh perl-Net-Telnet-3.03-5.noarch.rpm
rpm -ivh pexpect-2.3-3.el5.noarch.rpm
rpm -ivh openais-0.80.6-16.el5_5.2.i386.rpm
rpm -ivh cman-2.0.115-34.el5.i386.rpm
#install ricci
rpm -ivh modcluster-0.12.1-2.el5.centos.i386.rpm
rpm -ivh ricci-0.12.2-12.el5.centos.1.i386.rpm
#install gfs2
rpm -ivh gfs2-utils-0.1.62-20.el5.i386.rpm
#install rgmanager
rpm -ivh rgmanager-2.0.52-6.el5.centos.i386.rpmcentos

5、在集羣節點安裝配置iSCSI客戶端
安裝iSCSI客戶端是爲了和iSCSI-target服務端進行通訊,進而將共享磁盤導入到各個集羣節點,這裏以集羣節點web1爲例,介紹如何安裝和配置iSCSI,剩餘其它節點的安裝和配置方式與web1節點徹底相同 。
iSCSI客戶端的安裝和配置很是簡單,只需以下幾個步驟便可完成:
[root@web1 rhcs]# rpm -ivh iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm
[root@web1 rhcs]# /etc/init.d/iscsi restart
[root@web1 rhcs]# iscsiadm -m discovery -t sendtargets -p 192.168.12.246
[root@web1 rhcs]# /etc/init.d/iscsi restart
[root@web1 rhcs]# fdisk -l
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdb doesn't contain a valid partition table
經過fdisk的輸出可知,/dev/sdb就是從iSCSI-target共享過來的磁盤分區。
至此,安裝工做所有結束。瀏覽器

6、配置RHCS高可用集羣
配置RHCS,其核心就是配置/etc/cluster/cluster.conf文件,下面經過web管理界面介紹如何構造一個cluster.conf文件。
在storgae-server主機上啓動luci服務,而後經過瀏覽器訪問https://192.168.12.246:8084/,就能夠打開luci登陸界面,如圖1所示:安全

圖1服務器


成功登陸後,luci有三個配置選項,分別是homebase、cluster和storage,其中,cluster主要用於建立和配置集羣系統,storage用於建立和管理共享存儲,而homebase主要用於添加、更新、刪除cluster系統和storage設置,同時也能夠建立和刪除luci登陸用戶。如圖2所示:網絡

圖2


一、建立一個cluster
登陸luci後,切換到cluster選項,而後點擊左邊的clusters選框中的「Create a new cluster」,增長一個cluster,如圖3所示:

圖3


在圖3中,建立的cluster名稱爲mycluster,「Node Hostname」表示每一個節點的主機名稱,「Root Password」表示每一個節點的root用戶密碼。每一個節點的root密碼能夠相同,也能夠不一樣。
在下面的五個選項中,「Download packages」表示在線下載並自動安裝RHCS軟件包,而「Use locally installed packages」表示用本地安裝包進行安裝,因爲RHCS組件包在上面的介紹中已經手動安裝完成,因此這裏選擇本地安裝便可。剩下的三個複選框分別是啓用共享存儲支持(Enable Shared Storage Support)、節點加入集羣時重啓系統(Reboot nodes before joining cluster)和檢查節點密碼的一致性(Check if node passwords are identical),這些建立cluster的設置,可選可不選,這裏不作任何選擇。
「View SSL cert fingerprints」用於驗證集羣各個節點與luci通訊是否正常,並檢測每一個節點的配置是否能夠建立集羣,若是檢測失敗,會給出相應的錯誤提示信息。若是驗證成功,會輸出成功信息。

全部選項填寫完成,點擊「Submit」進行提交,接下來luci開始建立cluster,如圖4所示:

圖4

在通過Install----Reboot----Configure----Join四個過程後,若是沒有報錯,「mycluster」就建立完成了,其實建立cluster的過程,就是luci將設定的集羣信息寫入到每一個集羣節點配置文件的過程。Cluster建立成功後,默認顯示「mycluster」的集羣全局屬性列表,點擊cluster-->Cluster list來查看建立的mycluster的狀態,如圖5所示:

圖5


從圖5可知,mycluster集羣下有四個節點,正常狀態下,節點Nodes名稱和Cluster Name均顯示爲綠色,若是出現異常,將顯示爲紅色。
點擊Nodes下面的任意一個節點名稱,能夠查看此節點的運行狀態,如圖6所示:

圖6


從圖6能夠看出,cman和rgmanager服務運行在每一個節點上,而且這兩個服務須要開機自動啓動,它們是RHCS的核心守護進程,若是這兩個服務在某個節點沒有啓動,能夠經過命令行方式手工啓動,命令以下:
/etc/init.d/cman start
/etc/init.d/rgmanager start
服務啓動成功後,在圖6中點擊「Update node daemon properties」按鈕,更新節點的狀態。
經過上面的操做,一個簡單的cluster就建立完成了,可是這個cluster目前仍是不能工做的,還須要爲這個cluster建立Failover Domain、Resources、Service、Shared Fence Device等,下面依次進行介紹。

二、建立Failover Domain
Failover Domain是配置集羣的失敗轉移域,經過失敗轉移域能夠將服務和資源的切換限制在指定的節點間,下面的操做將建立兩個失敗轉移域,分別是webserver-failover和mysql-failover。
點擊cluster,而後在Cluster list中點擊「mycluster」,接着,在左下端的mycluster欄中點擊Failover Domains-->Add a Failover Domain,增長一個Failover Domain,如圖7所示:

圖7


在圖7中,各個參數的含義以下:
? Failover domain name:建立的失敗轉移域名稱,起一個易記的名字便可。
? Prioritized:是否在Failover domain 中啓用域成員優先級設置,這裏選擇啓用。
? Restrict Failover to this domain’s member:表示是否在失敗轉移域成員中啓用服務故障切換限制。這裏選擇啓用。
? Do not fail back services in this domain:表示在這個域中使用故障切回功能,也就是說,主節點故障時,備用節點會自動接管主節點服務和資源,當主節點恢復正常時,集羣的服務和資源會從備用節點自動切換到主節點。
而後,在Failover domain membership的Member複選框中,選擇加入此域的節點,這裏選擇的是web1和web2節點,而後,在「priority」處將web1的優先級設置爲1,web2的優先級設置爲10。須要說明的是「priority」設置爲1的節點,優先級是最高的,隨着數值的下降,節點優先級也依次下降。
全部設置完成,點擊Submit按鈕,開始建立Failover domain。
按照上面的介紹,繼續添加第二個失敗轉移域mysql-failover,在Failover domain membership的Member複選框中,選擇加入此域的節點,這裏選擇Mysql1和Mysql2節點,而後,在「priority」處將Mysql1的優先級設置爲2,Mysql2的優先級設置爲8。


三、建立Resources

Resources是集羣的核心,主要包含服務腳本、IP地址、文件系統等,RHCS提供的資源如圖8所示:

圖8

依次添加IP資源、http服務資源、Mysql管理腳本資源、ext3文件系統,如圖9所示:

圖9


四、建立Service

點擊cluster,而後在Cluster list中點擊「mycluster」,接着,在左下端的mycluster欄中點擊Services-->Add a Service,在集羣中添加一個服務,如圖10所示:

圖10

全部服務添加完成後,若是應用程序設置正確,服務將自動啓動,點擊cluster,而後在Cluster list中能夠看到兩個服務的啓動狀態,正常狀況下,均顯示爲綠色。如圖11所示:

圖11

7、配置存儲集羣GFS
在上面章節中,咱們已經經過storgae-server主機將一個磁盤分區共享給了集羣系統的四個節點,接下來將進行磁盤分區、格式化、建立文件系統等操做。
(1) 對磁盤進行分區
能夠在集羣系統任意節點對共享磁盤分區進行磁盤的分區和格式化,這裏選擇在節點web1上進行,首先對共享磁盤進行分區,操做以下:
[root@web1 ~]# fdisk /dev/sdb
這裏將共享磁盤分爲三個有效分區,分別將/dev/sdb5用於GFS文件系統,將/dev/sdb6用於ext3文件系統,而將/dev/sdb7用於表決磁盤,關於表決磁盤,下面立刻會進行講述。
(2) 格式化磁盤
接下來,在web1節點將磁盤分區分別格式化爲ext3和gfs2文件系統,操做以下:
[root@web1 ~]# mkfs.ext3 /dev/sdb6
[root@web1 ~]# mkfs.gfs2 -p lock_dlm -t mycluster:my-gfs2 -j 4 /dev/sdb5
其中:
? -p lock_dlm
定義爲DLM鎖方式,若是不加此參數,當在兩個系統中同時掛載此分區時就會像EXT3格式同樣,兩個系統的信息不能同步。
? -t mycluster:my-gfs2
指定DLM鎖所在的表名稱,mycluster就是RHCS集羣的名稱,必須與cluster.conf文件中Cluster標籤的name值相同。
? -j 4

設定GFS2文件系統最多支持多少個節點同時掛載,這個值能夠通gfs2_jadd命令在使用中動態調整。
? /dev/sdb5
指定要格式化的分區設備標識。
全部操做完成後,重啓集羣全部節點,保證劃分的磁盤分區可以被全部節點識別。

(3)掛載磁盤
全部節點從新啓動後,就能夠掛載文件系統了,依次在集羣的每一個節點執行以下操做,將共享文件系統掛載到/gfs2目錄下:
[root@web1 ~]#mount -t gfs2 /dev/sdb5 /gfs2 –v
/sbin/mount.gfs2: mount /dev/sdb5 /gfs2
/sbin/mount.gfs2: parse_opts: pts = "rw"
/sbin/mount.gfs2: clear flag 1 for "rw", flags = 0
/sbin/mount.gfs2: parse_opts: flags = 0
/sbin/mount.gfs2: write "join /gfs2 gfs2 lock_dlm mycluster:my-gfs2 rw /dev/sdb5"
//sbin/mount.gfs2: mount(2) ok
/sbin/mount.gfs2: lock_dlm_mount_result: write "mount_result /gfs2 gfs2 0"
/sbin/mount.gfs2: read_proc_mounts: device = "/dev/sdb5"
/sbin/mount.gfs2: read_proc_mounts: pts = "rw,hostdata=jid=3:id=65540:first=0「
經過「-v」參數能夠輸出掛載gfs2文件系統的過程,有助於理解gfs2文件系統和問題排查。
爲了能讓共享文件系統開機自動掛載磁盤,將下面內容添加到每一個集羣節點的/etc/fstab文件中。
#GFS MOUNT POINTS
/dev/sdb5 /gfs2 gfs2 defaults 1 1

8、配置表決磁盤
(1)使用表決磁盤的必要性
在一個多節點的RHCS集羣系統中,一個節點失敗後,集羣的服務和資源能夠自動轉移到其它節點上,可是這種轉移是有條件的,例如,在一個四節點的集羣中,一旦有兩個節點發生故障,整個集羣系統將會掛起,集羣服務也隨即中止,而若是配置了存儲集羣GFS文件系統,那麼只要有一個節點發生故障,全部節點掛載的GFS文件系統將hung住。此時共享存儲將沒法使用,這種狀況的出現,對於高可用的集羣系統來講是絕對不容許的,解決這種問題就要經過表決磁盤來實現了。
(2)表決磁盤運行機制
表決磁盤,即Quorum Disk,在RHCS裏簡稱qdisk,是基於磁盤的Cluster仲裁服務程序,爲了解決小規模集羣中投票問題,RHCS引入了Quorum機制機制,Quorum表示集羣法定的節點數,和Quorum對應的是Quorate,Quorate是一種狀態,表示達到法定節點數。在正常狀態下,Quorum的值是每一個節點投票值再加上 QDisk分區的投票值之和。
QDisk是一個小於10MB的共享磁盤分區,Qdiskd進程運行在集羣的全部節點上,經過Qdiskd進程,集羣節點按期評估自身的健康狀況,而且把自身的狀態信息寫到指定的共享磁盤分區中,同時Qdiskd還能夠查看其它節點的狀態信息,並傳遞信息給其它節點。
(3)RHCS中表決磁盤的概念
和qdisk相關的幾個工具備mkdisk、Heuristics。
mkdisk是一個集羣仲裁磁盤工具集,能夠用來建立一個qdisk共享磁盤也能夠查看共享磁盤的狀態信息。mkqdisk操做只能建立16個節點的投票空間,所以目前qdisk最多能夠支持16個節點的RHCS高可用集羣。
有時候僅靠檢測Qdisk分區來判斷節點狀態仍是不夠的,還能夠經過應用程序來擴展對節點狀態檢測的精度,Heuristics就是這麼一個擴充選項,它容許經過第三方應用程序來輔助定位節點狀態,經常使用的有ping網關或路由,或者經過腳本程序等,若是試探失敗,qdiskd會認爲此節點失敗,進而試圖重啓此節點,以使節點進入正常狀態。
(4)建立一個表決磁盤
在上面章節中,已經劃分了多個共享磁盤分區,這裏將共享磁盤分區/dev/sdb7做爲qdisk分區,下面是建立一個qdisk分區:
[root@web1 ~]# mkqdisk -c /dev/sdb7 -l myqdisk
[root@web1 ~]# mkqdisk –L #查看錶決磁盤信息

(5)配置Qdisk
這裏經過Conga的web界面來配置Qdisk,首先登陸luci,而後點擊cluster,在Cluster list中點擊「mycluster」,而後選擇「Quorum Partition」一項,如圖12所示:



圖12

對圖12中每一個選項的含義解釋以下:
? Interval:表示間隔多長時間執行一次檢查評估,單位是秒。
? Votes:指定qdisk分區投票值是多少。
? TKO:表示容許檢查失敗的次數。一個節點在TKO*Interval時間內若是還鏈接不上qdisk分區,那麼就認爲此節點失敗,會從集羣中隔離。
? Minimum Score:指定最小投票值是多少。
? Label:Qdisk分區對應的卷標名,也就是在建立qdisk時指定的「myqdisk」,這裏建議用卷標名,由於設備名有可能會在系統重啓後發生變化,但卷標名稱是不會發生改變的。
? Device:指定共享存儲在節點中的設備名是什麼。
? Path to program: 配置第三方應用程序來擴展對節點狀態檢測的精度,這裏配置的是ping命令
? Score:設定ping命令的投票值。
? interval:設定多長時間執行ping命令一次。

(6)啓動Qdisk服務
在集羣每一個節點執行以下命令,啓動qdiskd服務:
[root@web1 ~]# /etc/init.d/qdiskd start
qdiskd啓動後,若是配置正確,qdisk磁盤將自動進入online狀態:
[root@web1 ~]# clustat -l
Cluster Status for mycluster @ Sat Aug 21 01:25:40 2010
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
Web 1 Online, rgmanager
Mysql1 2 Online, rgmanager
Mysql2 3 Online, rgmanager
web1 4 Online, Local, rgmanager
/dev/sdb7 0 Online, Quorum Disk
至此,Qdisk已經運行起來了。


9、配置Fence設備
配置Fence設備 是RHCS集羣系統中必不可少的一個環節,經過Fence設備能夠防止集羣資源(例如文件系統)同時被多個節點佔有,保護了共享數據的安全性和一致性節,同時也能夠防止節點間腦裂的發生。
GFS是基於集羣底層架構來傳遞鎖信息的,或者說是基於RHCS的一種集羣文件系統,所以使用GFS文件系統也必需要有fence設備。
RHCS提供的fence device有兩種,一種是內部fence設備。常見的有:
IBM服務器提供的RSAII卡
HP服務器提供的iLO卡
DELL服務器提供的DRAC卡
智能平臺管理接口IPMI
常見的外部fence設備有:UPS、SAN SWITCH、NETWORK SWITCH,另外若是共享存儲是經過GNBD Server實現的,那麼還可使用GNBD的fence功能。


點擊cluster,而後點擊「cluster list」中的「mycluster」,在左下角的mycluster欄目中選擇Shared Fence Devices-->Add a Sharable Fence Device,在這裏選擇的Fence Device爲「WTI Power Switch」,Fence的名稱爲「WTI-Fence」,而後依次輸入IP Address和Password,如圖13所示:

圖13

至此,基於web界面的RHCS配置完成。

相關文章
相關標籤/搜索