Heartbeat安裝與部署及測試

Heartbeat作用:提供故障轉移及高可用服務,與keepalived有很多相同之處,也有區別

 

Hearbeat和keepalived區別:

Keepalived使用的vrrp協議方式,虛擬路由冗餘協議 (Virtual Router Redundancy Protocol,簡稱VRRP);

Heartbeat是基於主機或網絡的服務的高可用方式;

keepalived的目的是模擬路由器的雙機

heartbeat的目的是用戶service的雙機

lvs的高可用建議用keepavlived

業務的高可用用heartbeat

 

 

參考官方文檔:http://www.linux-ha.org/doc/users-guide/users-guide.html

http://www.linux-ha.org/wiki/Downloads  三個安裝包在此

參考博客:http://blog.51cto.com/wangzhijian/1708694

 

工作原理:

通過修改heartbeat的配置文件,可以指定一臺heartbeat服務器作爲主服務器,另一臺自動成爲熱備服務器。在熱備服務器上面配置heartbeat守護程序來監聽來自主服務器的心跳信息。如果在規定時間內,無法監聽到心跳信息,那麼就啓動故障轉移,取得主服務器上的相關資源的所有權,接替主服務器繼續不間斷的提供服務,從而達到資源以及服務高可用的目的。

 

heartbeat支持主主模式,以及兩臺服務器互爲主備,一般故障切換時間在5~20s之間

 

heartbeat裂腦:

兩臺服務器在一定時間內,無法相互檢測到對方心跳而各自啓動故障轉移功能,取得資源和服務的所有權,會導致同一個IP在兩端同時啓動服務,存在兩個相同的VIP,造成衝突的嚴重問題

 

裂腦的原因:

心跳鏈路故障,導致無法正常通信

  開啓了防火牆阻擋了心跳信息傳輸

  心跳網卡地址等配置不正確

  心跳方式,心跳廣播衝突,軟件bug

 

防止裂腦方案:

  同時使用串行電纜和以太網電纜連接,同時使用兩條心跳線

  檢測到裂腦時,強制關閉一個節點(需要特殊設備支持,如stonish和fence),相當於程

序上的備節點發現心跳故障,發送關機指令到主節點

  做好監控預警

  啓用磁盤鎖

  仲裁機制(確定讓哪個節點接管服務)

 

IP地址接管和故障轉移: heartbeat通過ip地址接管和arp廣播進行故障轉移

 

Heartbeat 2.1.4之後被拆分爲三個子項目: cluster-glue、resource-agents、heartbeat 導致了

配置更加複雜

 

源碼編譯比較複雜:需要安裝各種依賴,比較麻煩

 

安裝方式建議採用yum安裝的方式: 但是centos6.2後的epel源裏沒有了,centos6.2後

的系統,只能採取源碼編譯方式安裝heartbeat

   

源碼編譯安裝方式:

  必須安裝:

yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc

 

  1、安裝cluster-glue :

      groupadd  haclient

useradd  -g haclient hacluster

     下載:  wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2

       tar -jxvf cluster-clue-1.0.12.tar.bz2

 cd Reusable-Cluster-Components-glue--0a7add1d9996/

 ./autogen.sh

 ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'  ##注:32位系統去掉64

 make

 make install

 

 

   2、安裝Resource Agents : 爲集羣資源的訪問提供了一系列的標準的接口

       wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz

       tar zxvf resource-agents-3.9.6.tar.gz

       ./autogen.sh

       ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

       make && make install

 

   3、安裝Heartbeat :

       wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2

       tar jxvf 958e11be8686.tar.bz2

       cd Heartbeat-3-0-958e11be8686/

       ./bootstarp

       export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"

       ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

      make && make install

 

      複製源碼包部分內容到安裝目錄:

      cd Heartbeat-3-0-958e11be8686/   #切換到heartbeat源碼解壓後的目錄,複製一下內容:

      cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/

      chkconfig --add heartbeat  #加入到開機啓動項

chkconfig heartbeat on   #設爲開機啓動,7以上的此命令:systemctl enable heartbeat.service

chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys

mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/*/usr/local/heartbeat/lib/heartbeat/plugins/RAExec/  #主備heartbeat都需要設置

ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/  ##主備heartbeat都需要設置

 

 

Heartbeat配置:

  Heartbeat的配置主要涉及到ha.cf、haresources、authkeys這三個文件。其中ha.cf是主配置文件,haresource用來配置要讓Heartbeat託管的服務,authkey是用來指定Heartbeat的認證方式

 

1、配置ha.cf  : 主配置文件

注:192.168.56.102是主heartbeat節點IP,192.168.56.101是備heartbeat節點IP

cat /usr/local/heartbeat/etc/ha.d/ha.cf  去掉空行和註釋行後的內容如下:

debugfile /var/log/ha-debug           ##用於記錄heartbeat的調試信息

logfile/var/log/ha-log                ##用於記錄heartbeat的日誌信息

logfacilitylocal0                    ##設置heartbeat的日誌,這裏用的是系統日誌

keepalive 2                              ##設定心跳(監測)時間時間爲2秒

deadtime 30     ##指定若備用節點在30秒內未收到主節點心跳信號,則接管主服務器資源

warntime 10           ##指定心跳延遲的時間爲10秒,10秒內備節點不能接收主節點心跳信號,即往日誌寫入警告日誌,但不會切換服務

initdead 120       ##系統啓動或重啓後預留的忽略時間段,取值至少爲deadtime的兩倍

udpport  694                         ##廣播/單播通訊使用的Udp端口

bcast enp0s8  # Linux             ##使用網卡enp0s8發送心跳檢測

#mcast eth0 225.0.0.1 694 1 0       ##採用網卡eth0的Udp多播來組織心跳,一般在備用節點不止一臺時使用。Bcast、ucast和mcast分別代表廣播、單播和多播,是組織心跳的的方式,任選其一,可選配置

#ucast enp0s8 192.168.10.102        ##採用網卡enp0s8的udp單播來組織心跳,後面跟的IP地址爲雙機對方IP地址,可選配置

auto_failback on                ##定義當主節點恢復後,是否將服務自動切回#watchdog /dev/watchdog        ##可選配置,通過Heartbeat監控系統運行狀態。

node node1                     ##主節點名稱,與uname -n顯示一致,即主節點主機名

node node2                     ##備用節點名稱,即備節點主機名

ping 192.168.10.1              ##通過ping網關檢測心跳是否正常,僅用來測試網絡

respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail   ##指定和heartbeat一起啓動、關閉的進程,可選配置

#apiauth ipfail gid=haclient uid=hacluster ##設置啓動IPfail的用戶和組,可選配置

 

2、配置Haresources資源文件:

  Haresources文件用於指定雙機系統的主節點、集羣IP、子網掩碼、廣播地址及啓動服務集羣資源,文件每一行可包含一個或多個資源腳本名,資源間使用空格隔開,參數間使用兩個冒號隔開,主節點和備份節點中資源文件haresources要完全一樣

  編輯haresources文件: vim  /usr/local/heartbeat/etc/ha.d/haresources

     一般格式爲: node-name  network <resource-group>

          node-name表示主節點的主機名,必須和ha.cf文件中指定的節點名一致。

network用於設定集羣的IP地址、子網掩碼和網絡設備標識等。

          resoure-group 用於指定需Heartbeat託管的服務(即這些服務可由Heartbeat來啓動和關閉)

  如:

    

    IP 192.168.56.110是虛擬IP

   two是HA集羣的主節點,IPaddr爲heartbeat自帶的執行腳本,heartbeat首先將執行/etc/ha.d/resource.d/IPaddr 192.168.56.102/24 start的操作,即虛擬一個子網掩碼爲255.255.255.0,IP爲192.168.56.102的地址,此IP爲heartbeat對外提供服務的網絡地址,同時指定此IP使用的網絡接口

  

3、配置authkeys : 心跳密鑰驗證文件

  編輯 vim  /usr/local/heartbeat/etc/ha.d/authkeys

  

  注:auth後填序號,可任意填寫,但第二行開頭必須爲序列號,然後爲驗證方式,支持三種(crc md5 sha1)方式驗證,最後面是自定義密鑰

配置雙機互信(可選)並複製文件至備機 :  即配置ssh雙機通信:

ssh-keygen -t rsa

ssh-copy-id -i .ssh/id_rsa.pub root@對端IP

 

4、複製配置文件至備heartbeat:

scp /usr/local/heartbeat/etc/ha.d/* root@備heartbeat機IP地址:/usr/local/heartbeat/etc/ha.d/

注意:備heartbeat節點各配置文件與主heartbeat節點各配置文件大體相同

 

5、測試:在主備heartbeat機上都執行

啓動httpd: systemctl start httpd

啓動heartbeat: /etc/init.d/heartbeat start或systemctl start heartbeat

設置selinux爲Permissive模式:getenforce 0

停止防火牆:systemctl stop  firewalld

查看heartbeat啓動後的信息:

   netstat -tulnp|grep heartbeat

   tail -f /var/log/ha-log   #日誌文件在ha.cf裏已經指定了

ifconfig命令查看虛擬IP 192.168.56.110是否存在:

停掉主heartbeat服務,會發現192.168.56.110 IP會漂移到備heartbeat

在瀏覽器裏輸入: 192.168.56.110 訪問會發現當主備heartbeat切換時,網頁內容會在主備heartbeat上的httpd服務內容之間切換

 

 

 

 

 

 

 

 

 

       

       

 

 

      

      

 

 

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