天天看點

heartbeat做nginx高可用叢集

一、理論

·HA高可用,又被叫做雙機熱備。

·高可用原理:兩台機器A和B,正常是A提供服務,B閑置,當A當機或服務宕掉,切換到B繼續提供服務,使用心跳進行通信和選舉

·heartbeat原理:心跳檢測和資源接管兩個部分。叢集中的主機互相發送封包,告訴對方自己目前的狀态,如果在一定時間内未收到對方封包,認定對發死亡

·常用的高可用軟體:heartbeat、keepalived

·腦裂:雙方無法進行心跳資訊的傳遞,導緻無法擷取其他節點狀态資訊

·heartbeat  适合做服務高可用

·keepalived 适合做lvs高可用

·兩種檢測的方式:互相發送封包,第二種ping網關或者别的第三方

·心跳線的作用(内網IP):互相發送封包

·實驗:AB兩台虛拟機上都裝nginx和heartbeat,AB兩台虛拟機都把heartbeat起來,但不啟動nginx。

        這時主節點上的nginx會自動啟動,并獲得VIP。

        正常情況下是A提供服務,VIP在A上,如果A上的nginx出現故障停止工作,VIP會漂移到B上,B上的nginx也會自動啟動,以此達到高可用效果

二、搭建

重點:時間同步

      各個叢集節點能互相解析

(1)三個配置檔案:

     秘鑰檔案:authkeys

     heartbeat服務配置檔案:ha.cf

     資源管理配置檔案:haresouce

(2)準備環境

     1.兩台虛拟機都裝heartbeat和nginx

          2. hostname分别為:node1 node2

          3.兩台機器都添加兩個内網位址:192.168.100.20,192.168.100.30(用來模拟心跳線)

          4. 關閉防火牆  service iptables stop

          5. 關閉SElinux  setenforce 0

          6.添加解析 vim/etc/hosts          #增加内容如下:  

            192.168.1.104  node1                         #外網位址和主機名

            192.168.1.106  node2                         #外網位址和主機名     

        7. 兩個機器都安裝heartbeat    libnet  nginx

             yum  install -y heartbeat*    libnet  nginx  

  (3)主節點:

   1.cd /usr/share/doc/heartbeat-3.0.4/
   2.cp  authkeys  ha.cf haresources   /etc/ha.d/        #拷貝模版配置檔案 
   3.cd /etc/ha.d                                           
   4.vim  authkeys                   #設定互相檢測心跳時的加密方式
   5.vim haresources                 #設定主節點,備用上邊不用修改                    
   node1  192.168.1.109/24/eth0:0 nginx   #主節點的主機名/外網IP/掩碼/虛拟接口/高可用服務
   6.vim  ha.cf                                    
    debugfile /var/log/ha-debug            #記錄調試資訊
    ogfile /var/log/ha-log                 #記錄日志資訊
    logfacility     local0                 #日志級别
    keepalive 2                            #發送心跳封包的間隔          
    deadtime 30                            #等待30秒,如果沒收到對方心跳,視為當機  
    warntime 10                            #10秒收不到,記錄日志 
    initdead 60                            #網絡啟動時間     
    udpport 694                            #設定廣播通信使用的端口
    ucast eth1 192.168.100.20        #第一種:廣播的形式檢測對方心跳線資訊(對方,内網IP)
    auto_failback on                 #主節點恢複後,是否接管從節點的服務
    respawn hacluster /usr/lib64/heartbeat/ipfail   #配合ping語句指定的ping node來檢測網絡的連通性
    node    zhaijunming              #主節點
    node    zhaijunming1             #從節點
    ping 192.168.1.254               #第二種檢測方式,ping 第三方穩定的節點                 #兩種檢測方式:  1.互相發送心跳封包   2.ping第三方穩定的節點      

(4)備節點

    1.拷貝配置檔案到 從伺服器上

         scp ha.cf  haresources authkeys zhaijunming1:/etc/ha.d/   #把配置檔案拷貝到從上

     2.備節點修改/etc/ha.cf        vim  /etc/ha.d/ha.cf           # 隻需要更改一個地方,修改為對方的心跳線位址

        ”ucast eth1 192.168.100.20 “改為   ”ucast eth1 192.168.100.30“

三、測試

主:1.啟動heartbeat:等待一分鐘左右 ,執行ifconfig -a 檢視是否有VIP,然後nginx服務是否自動起來了

繼續閱讀