HA應用之 -- heartbeat

一、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服務

   查看效果:

012925803.jpg

   服務在node-s1上運行正常,我嘗試將node-s1待機或停止heartbeat服務,運行standby或heartbeat stop,結果如下圖:

013531829.jpg


   測試結果一切正常,資源能按預期自動轉移........



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章