天天看點

利用heartbeat實作高可用叢集

利用heartbeat實作高可用叢集

heartbeat是一個可以提供messaging  Layer層的軟體,他有三個版本(v1、v2、v3),本實驗使用heartbeat v2版本,由于v2版本自帶了2個資料總管heartbeat和crm,是以,本文會分别實作2個不同的資料總管來實作高可用叢集。

一、利用heartbeat自帶的資料總管heartbeat來實作高可用叢集

1、實驗環境

本次實驗作者是在RHEL 5.8系統上實作的,并且是在vm虛拟機上實作的。每一個虛拟機上面隻需要一個網卡即可,網卡模式可以是橋接也可以是僅主機模式。

本次實驗需要用到的ip位址

VIP:192.168.0.25

RS1:192.168.0.111  對應的主機名為ha1.xsl.com

RS2:192.168.0.200  對應的主機名為ha2.xsl.com

2、各個節點的時間必須要同步

由于高可用叢集的需要根據心跳資訊來判斷對方是否正常,且心跳資訊傳遞的時間間隔預設是以秒為機關的,是以,如果兩個節點的時間不一緻會導緻該實驗失敗。

可以配置ntp服務來使各個節點同步,關于ntp服務在此處不介紹,配置比較簡單

3、主機名要保持一緻

使用hostname得到的結果要和uname  -n指令得到的結果保持一緻

4、将主機名由/etc/hosts檔案來解析

将ha1.xsl.com和ha2.xsl.com的主機名和ip的對應關閉配置在本地的hosts檔案中,記住,不應該将高可用節點的主機名由dns來解析,否則一點dns出現故障,你的高可用服務也就不可用呢!

5、配置ssh雙機互信

在RS1上(ip為192.168.0.111)配置如下:

#ssh-keygen -t rsa  -N  ''

#ssh-copy-id  -i  /root/.ssh/id_rsa.pub   192.168.0.200

在RS2上(ip為192.168.0.200)配置如下:

#ssh-keygen  -t  rsa -N ''

#ssh-copy-id  -i  /root/.ssh/id_rsa.pub   192.168.0.111

使用ssh連接配接測試一下,如果不需要密碼,則表示測試成功

6、安裝heartbeat相關軟體

heartbeat-ldirectord - Monitor daemon for maintaining high availability resources, 為ipvs高可用提供規則自動生成及後端realserver健康狀态檢查的元件;

heartbeat-2.1.4-11.el5.i386.rpm    這個heartbeat核心元件

heartbeat-gui-2.1.4-11.el5.i386.rpm    這個是一個提供gui方式的叢集管理界面工具

heartbeat-ldirectord-2.1.4-11.el5.i386.rpm     為ipvs高可用提供規則自動生成及後端realserver健康狀态檢查的元件;

heartbeat-pils-2.1.4-11.el5.i386.rpm      其他下面的都是依賴包

heartbeat-stonith-2.1.4-11.el5.i386.rpm

libnet-1.1.6-7.el5.i386.rpm

perl-MailTools-1.77-1.el5.noarch.rpm

安裝指令   yum   -y  --nogpgcheck install  *.rpm

7、安裝httpd服務

#yum  install  httpd

8、heartbeat的配置檔案

heartbeat有三個配置檔案,分别為:

authkeys :這是一個密鑰檔案,用于確定其他非高可用叢集節點随便加入到高可用叢集中去。是以,彼此各個節點之間都是以加密的形式來傳輸資料的。

ha.cf:這個heartbeat服務的配置檔案,例如定義心跳資訊等等

haresources:這是一個資源管理配置檔案,裡面定義了資源如Vip、服務(如httpd服務)等等資訊

在/etc/ha.d/指令下預設沒有這三個檔案,需要從其他地方複制過來,如:

#cp  /usr/share/doc/heartbeat-2.1.4/{authkeys,ha.cf,haresources}    /etc/ha.d/

9、修改三個配置檔案

First修改authkeys檔案

裡面隻有三種加密方式,這裡選擇md5加密方式,格式如下

vim  authkeys

auth  3

3  md5   這裡是一堆随機數

生産一堆随機數方式

dd  if=/etc/urandom  bs=1 count=512   | MD5sum

配置完成後需要修改該檔案的權限為600

#chmod 600  authkeys

否則,會出現如下報錯資訊

heartbeat[27496]: 2011/11/14_18:26:11 ERROR: Bad permissions on keyfile [/etc/ha.d/authkeys], 600 recommended.

second修改ha.cf檔案

#crm on    #這個需要添加,指要用heartbeat V2版的資料總管crm,預設使用的是heartbeat,在這裡需要注釋掉,等到後面的實驗使用crm來實作的時候,需要啟動該選項。

logfile        /var/log/ha-log ##可以定義日志自定義存放位置,預設是/var/log/message

#logfacility     local0  ##日志發送的facility,這個和上面的隻能選擇一個

keepalive 2         ##發送心跳資訊間隔

deadtime 15         ##多少秒收不到心跳就以為它挂點了

warntime 5          ##多少秒收不到心跳就發出警告資訊

initdead 120        ##服務啟動或者重新開機多少秒之後就認為對方挂了

udpport        694  ##心跳資訊發送端口

mcast eth0 225.1.2.1 694 1 0 ##多點傳播組,使用哪種方式來告知VIP的mac位址,一旦vip所在的主機發生改變(即vip所對應的mac位址也會發生改變),那麼vip上一跳的裝置(如路由器)所緩存的arp緩存也要發生改變,否則可能導緻通信錯誤。上面有詳細的參數解釋

auto_failback on    ##主節點挂點,從節點代替,當主節點又正常了,是否歸還資源

node   ha1.xsl.com  ##定義叢集節點,這裡的節點名稱要和hostname保持一緻

node   ha2.xsl.com  ##定義叢集節點

ping 172.16.0.1     ##最好是一個網關

compression     bz2 ##是否壓縮心跳封包

compression_threshold 2 ##大于多少才壓縮

finish配置資源檔案haresources

這裡有許多配置資源的格式,可以參考上面的提示資訊進行配置

這裡我配置的資源格式為:

ha1.xsl.com    IPaddr::192.168.0.25/16/eth0    httpd

格式說明:

ha1.xsl.com為主節點,這裡隻需要配置主節點,其他節點不需要配置

IPaddr:這裡是ocf風格的資源,這些資源位于/etc/ha.d/rc.d/目錄下,IPadd後面接了2個“冒号”,表示為該資源的參數(ocf風格的腳本是可以接受參數的),如果有多個參數,則需要使用2個冒号隔開,後面的位址(192.168.0.25)是VIP,且工作在eth0這個接口的别名上(如果不配接口,則VIP會自動配置在與它在同一個網段内的接口的别名上)。如果有多個資源則使用空格隔開,這裡的httpd就是I個資源。

建議:配置完成上述步驟後,可以先把httpd服務開啟,手動測試一下,看看可不可以正常通路,如果可以通路則繼續下面的步驟;否則,先排除看看httpd服務配置是否有問題。還有就是此處不要把heartbeat服務啟動哦!!!

10、關閉heartbeat和httpd開啟自動啟動功能

chkconfig  heartbeat  off

chkconfig  httpd  off

11、啟動heartbeat服務和httpd服務

service heartbeat  start這個服務需要在所有的節點上開啟

service  httd  start  這個服務隻需要在主節點上開啟

按照上面的步驟,利用heartbeat就可以實作一個高可用叢集服務

繼續閱讀