一、Heartbeat是什麼?
Heartbeat是Linux-HA開源項目發佈的高可靠應用環境集羣服務的核心軟件。從1998年創建以來到現在, 歷經了V1、V2、V3等多個版本,在全球開源HA領域具有舉足輕重的知名度, 應用日益廣泛, 並且得到了衆多主流Linux操作系統廠商的支持。在Linux-HA中heartbeat負責節點健康信息檢測、可靠的節點間通訊和集羣管理等工作。
早期,heartbeat主要被設計用來配置雙機熱備功能的系統軟件。系統由兩臺服務器構成,一臺爲工作服務器,另一臺爲備份機。該軟件通過心跳檢測協議在兩臺服務器間通訊,檢測系統的健康狀況。當工作服務器down機時,軟件會自動檢測到,並將原來工作機上的相關服務轉移到備份機上,從而對外達到服務不間斷的能力。
隨着高可用系統技術的不斷髮展,以及Linux下對高可靠應用機器軟件的需求,軟件創始人Alan Robertson聯合一些其它社區技術人員重新設計了軟件架構,成功的擴展了原有軟件的功能和結構,使它能夠不斷滿足用戶新的需求。新增加的功能中包括提供多於兩個節點集羣的支持,系統應用的健康檢測,網絡連接的健康檢測,STONITH設備的支持等功能,還提供了一組集羣管理工具。可以說,Heartbeat的產生和發展是一個典型的Open Source軟件的案例。該軟件所應用的體系架構OCF(Open Cluster Framework)就是開源社區合作的結晶,並努力使其成爲一個非排他的國際標準。
但是隨着2008年corosync的推出,另外貌似在支持的監控的節點數上heartbeat最多好像是16個,而corosync能多達100多個(關於這裏所說的node數沒有去查詢對不對不清楚),總之短短四五年的時間裏,corosync逐漸取代了heartbeat在HA集羣中的地位成爲未來的趨勢。
二、關於Heartbeat的crm配置模式
heartbeat v1: haresources
heartbeat v2: crm
heartbeat v3:(heartbeat, Cluster-glue, pacemaker)
三、用heartbeat實現一個web高可用的測試實例
1、準備工作:
1.1、同步各node的時間,既然測試我們就簡單的找個時間服務器,每間隔15分鐘同步一次時間;
*/15 * * * * /usr/sbin/ntpdate 192.168.1.38 &> /dev/null
1.2、建立雙機互信,實現互信登陸;
1.3、規劃資源;
webip:192.168.1.100 webserver:nginx
2、安裝heartbeat:
# sudo apt-get install heartbeat;
查看版本
# cat /usr/share/heartbeat/ha_config
最後一行:
# Version number of package
# VERSION="3.0.5"
3、配置集羣服務:
3.1、ha讀取的配置是/etc/ha.d/,所以我們將/usr/share/doc/heartbeat/ 的配置示例模版拷貝過來編輯
# cd /usr/share/doc/heartbeat/
# sudo cp -p authkeys ha.cf.gz haresources.gz /etc/ha.d/
3.2、文件說明
authkeys 定義加密方式 (保持600或400的權限)
ha.cf 主配置文件
haresources 定義資源
3.3、配置authkeys
# openssl rand -hex 8 >> authkeys
# sudo vim authkeys 調整加密方式
# sudo chmod -R 600 authkeys
3.4、簡單編輯主配置文件
# sudo gzip -d ha.cf.gz
# sudo vim ha.cf
# debugfile /var/log/ha-debug 調整日誌存放位置
# mcast eth0 255.3.30.4 694 1 0 設置組播範圍及端口地址等
# auto_failback on 主節點故障修復上線後,資源是否自動切換到主節點
# node node-s1 設置集羣的工作節點
# node node-s2
# ping 192.168.1.38 由於是偶數個節點,無法取得合法票數故需要引入ping機制保證集羣能做出正確的決策保證那個節點是否存活
# compression bz2開啓日誌壓縮
# compression_threshold 2
3.5、 配置資源
# sudo gzip -d haresources.gz
# sudo vim haresources
# 活動節點(主) VIP 服務資源
# node-s1 192.168.1.100/24/eth0 nginx
3.6、複製配置文件到另一節點主機上去
# sudo scp -p authkeys ha.cf haresources name@node-s2:/etc/ha.d/
四、啓動heartbeat,並測試最終效果
# sudo service heartbeat start
# cat /var/log/ha-log 查看日誌
啓動的時候儘量在一節點上啓動自己或另一個節點,關閉的時候先關閉P節點上的服務再關閉A節點上的heartbeat服務
查看效果:
服務在node-s1上運行正常,我嘗試將node-s1待機或停止heartbeat服務,運行standby或heartbeat stop,結果如下圖:
測試結果一切正常,資源能按預期自動轉移........