1. 程式人生 > 實用技巧 >四 Keepalived配置Nginx自動重啟,實現7x24不間斷服務

四 Keepalived配置Nginx自動重啟,實現7x24不間斷服務

1. 增加Nginx重啟檢測指令碼

vim /etc/keepalived/check_nginx_alive_or_not.sh

程式碼如下

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
# 判斷nginx是否宕機,如果宕機了,嘗試重啟
if [ $A -eq 0 ];then
      /usr/local/nginx/sbin/nginx
      # 等待一小會再次檢查nginx,如果沒有啟動成功,則停止keepalived,使其啟動備用機
      sleep 3
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
            killall keepalived
      fi
fi

增加執行許可權

chmod +x /etc/keepalived/check_nginx_alive_or_not.sh

2. 配置keepalived監聽nginx指令碼

vrrp_script check_nginx_alive {
  script "/etc/keepalived/check_nginx_alive_or_not.sh"
  interval 2 # 每隔兩秒執行上一行指令碼
  weight 10 # 如果指令碼執行失敗,則升級權重+10
}

3. 在 vrrp_instance 中新增監控的指令碼

track_script {
    check_nginx_alive # 追蹤 nginx 指令碼
}

4. 重啟Keepalived使得配置檔案生效

systemctl restart keepalived

下面是 MASTER Keepalived配置

! Configuration File for keepalived

global_defs {
   # 路由id: 當前安裝keepalived節點主機的識別符號,全域性唯一
   router_id LVS_DEVEL_128
}

vrrp_script check_nginx_alive {
  script "/etc/keepalived/check_nginx_alive_or_not.sh"
  interval 2 # 每隔兩秒執行上一行指令碼
  weight 10 # 如果指令碼執行失敗,則升級權重+10
}

# 計算機節點
vrrp_instance VI_1 {
    # 表示的狀態,當前的128位nginx的主機點,MASTER/BACKUP
    state MASTER
    # 當前例項繫結的網絡卡
    interface ens33
    # 保證主備節點一致 
    virtual_router_id 51
    # 優先順序/權重,誰的優先順序高,在MASTER掛掉以後,就成為MASTER
    priority 100
    # 主備之間同步檢查的時間間隔,預設1s
    advert_int 1
    # 認證密碼,防止非法節點的進入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虛擬ip
    virtual_ipaddress {
        192.168.174.121
    }

    track_script {
        check_nginx_alive # 追蹤 nginx 指令碼
    }
}