Linux下搭建Nginx+heartbeat

一、理論概述

     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 -yheartbeat*    libnet  nginx  
             #yum  install -y heartbeat*   libnet  nginx  

  (3)主節點:

 #cd /usr/share/doc/heartbeat-3.0.4/
   #cp  authkeys  ha.cf haresources   /etc/ha.d/        拷貝模版配置文件 
   #cd /etc/ha.d                                           
   #vim  authkeys                   設置互相檢測心跳時的加密方式
   #vim haresources                 設置主節點,備用上邊不用修改                    
   node1  192.168.1.109/24/eth0:0 nginx    主節點的主機名/外網IP/掩碼/虛擬接口/高可用服務
   #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 authkeyszhaijunming1:/etc/ha.d/   #把配置文件拷貝到從上

    2.備節點修改/etc/ha.cf       vim  /etc/ha.d/ha.cf          # 只需要更改一個地方,修改爲對方的心跳線地址
        ”ucast eth1192.168.100.20 “改爲   ”ucasteth1 192.168.100.30“

三、測試

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

備:2.啓動heartbeat,不能有VIPnginx也不能自動啓動

停止主節點上的httpd,看是否vip轉到備用節點,備節點httpd服務是否啓動

 


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