利用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就可以實作一個高可用叢集服務