紅帽叢集套件RHCS四部曲(實戰篇)

來源:互聯網
上載者:User

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

二、 安裝前準備工作
 Centos是RHEL的複製版本,並且RHCS所有功能組件都免費提供,因此下面的講述以Centos為準。
作業系統:統一採用Centos5.3版本。為了方便安裝RHCS套件,在安裝作業系統時,建議選擇如下這些安裝包:
l 案頭環境:xwindowssystem、GNOME desktop environment。
l 開發工具:developmenttools、x software development、gnomesoftware development、kde software development。
地址規劃如下:

iSCSI-target的安裝與使用已經在前面文章中做過介紹,不再講述,這裡假定共用的磁碟是/dev/sdb。


三、 安裝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主機上的設定完成。

四、在叢集節點安裝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檔案中。

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.rpm

五、在叢集節點安裝配置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共用過來的磁碟分割。
 至此,安裝工作全部結束。

六、配置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


1、建立一個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)、節點加入叢集時重啟系統(Rebootnodes before joining cluster)和檢查節點密碼的一致性(Check if nodepasswords are identical),這些建立cluster的設定,可選可不選,這裡不做任何選擇。
“View SSL cert fingerprints”用於驗證叢集各個節點與luci通訊是否正常,並檢測每個節點的配置是否可以建立叢集,如果檢測失敗,會給出相應的錯誤提示資訊。如果驗證成功,會輸出成功資訊。 所有選項填寫完成,點擊“Submit”進行提交,接下來luci開始建立cluster,如圖4所示:

圖4

在經過Install----Reboot----Configure----Join四個過程後,如果沒有報錯,“mycluster”就建立完 成了,其實建立cluster的過程,就是luci將設定的叢集資訊寫入到每個叢集節點設定檔的過程。Cluster建立成功後,預設顯示 “mycluster”的叢集全域屬性列表,點擊cluster-->Clusterlist來查看建立的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 nodedaemon properties”按鈕,更新節點的狀態。
通過上面的操作,一個簡單的cluster就建立完成了,但是這個cluster目前還是不能工作的,還需要為這個cluster建立Failover Domain、Resources、Service、SharedFence Device等,下面依次進行介紹。

2、建立Failover Domain
Failover Domain是配置叢集的失敗轉移域,通過失敗轉移域可以將服務和資源的切換限制在指定的節點間,下面的操作將建立兩個失敗轉移域,分別是webserver-failover和mysql-failover。
點擊cluster,然後在Cluster list中點擊“mycluster”,接著,在左下端的mycluster欄中點擊Failover Domains-->Add a Failover Domain,增加一個Failover Domain,如圖7所示:

圖7


在圖7中,各個參數的含義如下:
l Failover domain name:建立的失敗轉移網域名稱稱,起一個易記的名字即可。
l Prioritized:是否在Failover domain 中啟用域成員優先順序設定,這裡選擇啟用。
l Restrict Failover to this domain’s member:表示是否在失敗轉移域成員中啟用服務故障切換限制。這裡選擇啟用。
l Do not fail back services in this domain:表示在這個域中使用故障切回功能,也就是說,主節點故障時,備用節點會自動接管主節點服務和資源,當主節點恢複正常時,叢集的服務和資源會從備用節點自動切換到主節點。
然後,在Failover domain membership的Member複選框中,選擇加入此域的節點,這裡選擇的是web1和web2節點,然後,在“priority”處將web1的優 先級設定為1,web2的優先順序設定為10。需要說明的是“priority”設定為1的節點,優先順序是最高的,隨著數值的降低,節點優先順序也依次降低。
所有設定完成,點擊Submit按鈕,開始建立Failoverdomain。
按照上面的介紹,繼續添加第二個失敗轉移域mysql-failover,在Failover domain membership的Member複選框中,選擇加入此域的節點,這裡選擇Mysql1和Mysql2節點,然後,在“priority”處將 Mysql1的優先順序設定為2,Mysql2的優先順序設定為8。


3、建立Resources

Resources是叢集的核心,主要包含服務指令碼、IP地址、檔案系統等,RHCS提供的資源如圖8所示:

圖8

依次添加IP資源、http服務資源、Mysql管理指令碼資源、ext3檔案系統,如圖9所示:

圖9


4、建立Service

點擊cluster,然後在Cluster list中點擊“mycluster”,接著,在左下端的mycluster欄中點擊Services-->Add a Service,在叢集中添加一個服務,如圖10所示:

圖10

所有服務添加完成後,如果應用程式設定正確,服務將自動啟動,點擊cluster,然後在Cluster list中可以看到兩個服務的啟動狀態,正常情況下,均顯示為綠色。如圖11所示:

圖11

七、配置儲存叢集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
其中:
l -p lock_dlm
 定義為DLM鎖方式,如果不加此參數,當在兩個系統中同時掛載此分區時就會像EXT3格式一樣,兩個系統的資訊不能同步。
l -t mycluster:my-gfs2
 指定DLM鎖所在的表名稱,mycluster就是RHCS叢集的名稱,必須與cluster.conf檔案中Cluster標籤的name值相同。
l -j 4

  設定GFS2檔案系統最多支援多少個節點同時掛載,這個值可以通gfs2_jadd命令在使用中動態調整。
l /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: opts = "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 gfs20"
/sbin/mount.gfs2: read_proc_mounts: device = "/dev/sdb5"
/sbin/mount.gfs2: read_proc_mounts: opts ="rw,hostdata=jid=3:id=65540:first=0“
 通過“-v”參數可以輸出掛載gfs2檔案系統的過程,有助於理解gfs2檔案系統和問題排查。
 為了能讓共用檔案系統開機自動掛載磁碟,將下面內容添加到每個叢集節點的/etc/fstab檔案中。
#GFS  MOUNT POINTS
/dev/sdb5    /gfs2           gfs2    defaults        1 1

八、配置表決磁碟
(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中每個選項的含義解釋如下:
l Interval:表示間隔多長時間執行一次檢查評估,單位是秒。
l Votes:指定qdisk分區投票值是多少。
l TKO:表示允許檢查失敗的次數。一個節點在TKO*Interval時間內如果還串連不上qdisk分區,那麼就認為此節點失敗,會從叢集中隔離。
l Minimum Score:指定最小投票值是多少。
l Label:Qdisk分區對應的卷標名,也就是在建立qdisk時指定的“myqdisk”,這裡建議用卷標名,因為裝置名稱有可能會在系統重啟後發生變化,但卷標名稱是不會發生改變的。
l Device:指定共用儲存在節點中的裝置名稱是什麼。
l Path to program: 配置第三方應用程式來擴充對節點狀態檢測的精度,這裡配置的是ping命令
l Score:設定ping命令的投票值。
l 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            1Online, rgmanager
 Mysql1           2Online, rgmanager
 Mysql2           3Online, rgmanager
 web1            4Online, Local, rgmanager
 /dev/sdb7        0 Online, Quorum Disk
至此,Qdisk已經運行起來了。


九、配置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,然後點擊“clusterlist”中的“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配置完成。

(待續)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.