1. 程式人生 > >keepalived nginx 主備配置

keepalived nginx 主備配置

text vim image chm 服務安裝 nginx inf conf 服務器

keepalived nginx 主備配置(多主多備同理)

1.Nginx服務安裝

  nginx 不區分主備,在兩臺服務上安裝兩個即可。

  安裝參考:https://www.cnblogs.com/zwcry/p/9454647.html

2.Keepalived服務安裝

  keepalived 區分主備、多主多備的。

  keepalived 多主多備 是把 單主單備 復制多份,調下優先級配置即可。

  安裝參考:https://www.cnblogs.com/zwcry/p/9542867.html

  主備配置參考:https://www.cnblogs.com/zwcry/p/9549756.html

3.環境描述

  兩臺服務器(已按照1、2教程安裝)

  IP.192.168.159.129

    nginx 已安裝

    keepalived 已安裝

  IP.192.168.159.130

    nginx 已安裝

    keepalived 已安裝

4.修改keepalived.conf配置

  192.168.159.129 (主)keepalived.conf

    cd /etc/keepalived/  #進入默認配置目錄

    vim keepalived.conf  #編輯配置信息

    修改為如下內容

! Configuration File for keepalived

vrrp_script chk_nginx { 

 #虛擬路由沈余協議腳本
  script "/etc/keepalived/script/nginx_chk.sh"  #執行腳本 該腳本權限必須是可以執行的X
  interval 2  #上面的腳本沒兩秒執行一次
  weight 0  #權重 0為不變
}

vrrp_instance VI_1 {
  state MASTER  #兩個值(主:MASTER  備:BACKUP),必須大寫
  interface ens33  #網卡接口,ip a查看,上面主備搭建教程有講
  virtual_router_id 51  #虛擬路由ID,主備或多主多備,需要全部設置一樣


  priority 101  #優先級,越高越優先使用該服務
  advert_int 1  #多個keepalived的通訊檢測間隔,單位秒
  authentication {  #認證類型與密碼,主備或多主多備需要設置一樣
    auth_type PASS
    auth_pass 1111
  }

  track_script {  #執行腳本
    chk_nginx  #上面定義的vrrp_script chk_nginx
  }

    virtual_ipaddress {
      192.168.159.110  #定義虛擬IP,換行可以定義多個
    }
  }

  192.168.159.130(備) keepalived.conf

    cd /etc/keepalived/  #進入默認配置目錄

    vim keepalived.conf  #編輯配置信息

    修改為如下內容

! Configuration File for keepalived

vrrp_script chk_nginx {
  script "/etc/keepalived/script/nginx_chk.sh"
  interval 2
  weight 0
}

vrrp_instance VI_1 {
  state BACKUP
  interface ens33
  virtual_router_id 51
  priority 99
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }

  track_script {
    chk_nginx
  }

  virtual_ipaddress {
    192.168.159.110
  }
}    

5.編寫vrrp_script nginx_chk.sh腳本(該腳本必須有執行權限)

  192.168.159.129(主)nginx_chk.sh

    cd /etc/keepalived/script/  #無目錄,自己創建

    vim nginx_chk.sh  編輯腳本

    添加如下內容  

#!/bin/bash
if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
  /usr/local/nginx/sbin/nginx
  sleep 2
  if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
    /etc/init.d/keepalived stop
  fi
fi

保存

chmod 775 nginx_chk.sh  #賦值執行權限

  192.168.159.130(備) nginx_chk.sh

    cd /etc/keepalived/script/  #無目錄,自己創建

    vim nginx_chk.sh  編輯腳本

    添加如下內容  

#!/bin/bash
if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
  /usr/local/nginx/sbin/nginx
  sleep 2
  if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
    /etc/init.d/keepalived stop
  fi
fi

保存

chmod 775 nginx_chk.sh  #賦值執行權限

6.測試

  1)停止nginx,nginx自動重啟成功

    技術分享圖片

  2)停止主keepalived,虛擬IP自動切換至備keepalived

    技術分享圖片

    技術分享圖片

    技術分享圖片

  3)訪問虛擬IP自動跳轉至nginx

    技術分享圖片

  4)其他測試不演練了

註:Keepavlied不影響Nginx服務,Keepalived運行狀態或非運行狀態,Nginx該怎樣還是怎樣。

  Keepalied只是配合lvs將訪問虛擬IP的請求,轉發到虛擬IP所在服務器上。而這臺服務器上的Nginx監聽到後,再做應用層的請求轉發。

keepalived nginx 主備配置