nginx+keepalive實現高可用負載均衡詳解


 nginx+keepalive實現高可用負載均衡詳解

 

一、什么是keepalived?

         Keepalived軟件起初是專為LVS負載均衡軟件設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,后來又加入了可以實現高可用的VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗余協議)功能。因此,Keepalived除了能夠管理LVS軟件外,還可以作為其他服務(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟件

二、如何實現故障轉移?

        Keepalived高可用服務對之間的故障切換轉移,是通過 VRRP 來實現的。在 Keepalived服務正常工作時,主 Master節點會不斷地向備節點發送(多播的方式)心跳消息,用以告訴備Backup節點自己還活着,當主 Master節點發生故障時,就無法發送心跳消息,備節點也就因此無法繼續檢測到來自主 Master節點的心跳了,於是調用自身的接管程序,接管主Master節點的 IP資源及服務。而當主 Master節點恢復時,備Backup節點又會釋放主節點故障時自身接管的IP資源及服務,恢復到原來的備用角色。

實驗環境配置如下:

        192.168.1.110:nginx + keepalived   master 主

  192.168.1.111:nginx + keepalived   backup 從

  192.168.1.111:tomcat_8080

  192.168.1.111:tomcat_8081

  虛擬ip(VIP):192.168.1.200,對外提供服務的ip,也可稱作浮動ip,各個組件之間的關系圖如下:

 

三、安裝及配置

1. 下載地址:https://pan.baidu.com/s/1G7sLL-YkZGSMu8G76yz1Rw 密碼:adbw。

2.  keepalived安裝步驟:192.168.1.110:nginx + keepalived   master節點:

      2.1 ./configure --prefix=/data/program/keepalived --sysconf=/etc

            ##因為keepalive啟動時候會默認讀取/etc/keepalived/keepalived.conf

       2.2. make && make install

3. 修改/etc/keepalived/keepalived.conf配置文件信息

  1.  
    global_defs {             #全局配置
  2.  
     
  3.  
        notification_email {
  4.  
     
  5.  
            james@qq.com  #設置報警郵件地址,可以設置多個,每行一個。需要開啟sendmail服務。
  6.  
     
  7.  
        }
  8.  
     
  9.  
        notification_email_from sns-lvs@gmail.com
  10.  
     
  11.  
        smtp_server smtp.hysec.com   #設置SMTP Server地址
  12.  
     
  13.  
        smtp_connection_timeout 30   #設置SMTP Server的超時時間
  14.  
     
  15.  
        router_id nginx_master       #表示運行Keepalived服務器的一個標識,唯一的
  16.  
     
  17.  
    }
  18.  
     
  19.  
    vrrp_script chk_http_port {
  20.  
     
  21.  
        script "/usr/local/src/check_nginx_pid.sh" #心跳執行的腳本
  22.  
     
  23.  
        interval 2                          #(檢測腳本執行的間隔,單位是秒)
  24.  
     
  25.  
        weight 2
  26.  
     
  27.  
    }
  28.  
     
  29.  
    vrrp_instance VI_1 {        #vrrp 實例定義部分
  30.  
     
  31.  
        state MASTER            # 指定keepalived的角色,MASTER為主,BACKUP為備
  32.  
     
  33.  
        interface ens33         # 當前進行vrrp通訊的網絡接口卡(當前centos的網卡)
  34.  
     
  35.  
        virtual_router_id 66    # 虛擬路由編號,主從要一直
  36.  
     
  37.  
        priority 100            # 優先級,數值越大,獲取處理請求的優先級越高
  38.  
     
  39.  
        advert_int 1            # 檢查間隔,默認為1s(vrrp組播周期秒數)
  40.  
     
  41.  
        authentication {
  42.  
     
  43.  
            auth_type PASS #設置驗證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通信
  44.  
     
  45.  
            auth_pass 1111
  46.  
     
  47.  
        }
  48.  
     
  49.  
        track_script {
  50.  
     
  51.  
            chk_http_port            #(調用檢測腳本)
  52.  
     
  53.  
        }
  54.  
     
  55.  
        virtual_ipaddress {
  56.  
     
  57.  
            192.168.1.200            # 定義虛擬ip(VIP),可多設,每行一個
  58.  
     
  59.  
        }
  60.  
     
  61.  
    }

以上主節點的配置, 從節點backup配置和主節點一樣,只是state要改成backup,  priority 值要比master小點即可

 

四、啟動keepalived

           /data/program/keepalived/sbin/keepalived

 啟動順序:

1. 啟動192.168.1.111服務器上的tomcat8080和tomcat8081

2. 啟動Master 192.168.1.110的Keepalived節點,sh腳本也會被執行並自動啟動Nginx

3.   啟動Backup 192.168.1.111的Keepalived節點,sh腳本也會被執行並自動啟動Nginx

注:不需要手動啟動Nginx

4,查看keepalived日志: tail -f  /var/log/messages

五、KEEPLIVED主從故障測試

    1.  兩組Keepalied+Nginx應用都啟動成功后,使用VIP以負載均衡方式訪問兩個Tomcat

    2.   停止192.168.1.110主節點的Nginx應用,觀察Nginx狀態,並訪問Tomcat;

    3.    停止192.168.1.110主節點的Keepalived應用,觀察日志/var/log/messages,並訪問tomcat

    4.   觀察1.111從節點的日志,角色變更情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM