日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Keepalived+Nginx高可用案例(抢占式与非抢占式)

發布時間:2023/11/23 Nginx 135 coder
生活随笔 收集整理的這篇文章主要介紹了 Keepalived+Nginx高可用案例(抢占式与非抢占式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)下載安裝Keepalived源碼包

Keepalived官網源碼包下載地址

在服務器上解壓

tar -xf keepalived-2.2.8.tar.gz

安裝相關前置依賴

yum -y install gcc gcc-c++

使用configure工具進行安裝

./configure --sysconfdir=/etc --prefix=/usr/local/keepalived --sbindir=/usr/sbin --bindir=/usr/bin

--sysconfdir=DIR #指定配置文件位置 
--prefix=DIR #指定安裝路徑
 --sbindir=DIR 指定命令位置,后面不需再配置環境變量

使用make make install進行安裝

make && make install

(2)配置Keepalived在業務中的參數

本次操作為Keepalived單VIP搶占式配置,即兩個虛擬機只有一臺綁定VIP對外提供服務,且在一臺主機失能時VIP將漂移到備機上接收流量,當主機恢復時VIP將再次切換

主機配置
global_defs {
    router_id logincas1 ### router_id為全局定義當前節點的id,一般為唯一
    enable_script_security
    script_user root  ##定義執行腳本的角色
    vrrp_version 2
}
## 定義腳本
vrrp_script chk_nginx {
    script      "/usr/local/nginx-check.sh" ##腳本路徑
    interval    2							##檢測間隔
    timeout     4							##失敗間隔,失敗兩次通信則失敗
    rise        4							##成功四次則成功
    fall        2							##失敗兩次則切換
    weight      -50							##腳本檢測失敗則扣減權重
}
vrrp_instance VI_1 {				##模塊配置
        version 2
        state MASTER				##搶占式的情況下主機需設置為MASTER,備機為BACKUP
        interface eth0				##指定VIP流量的網卡
        virtual_router_id 51			##虛擬路由ID
        priority 100				##優先級,備機應比主機低一些
        advert_int 1				##VRRP心跳包發送間隔
        authentication {			##權限認證
          auth_type PASS			##類型:密碼
          auth_pass 2222			
        }
        virtual_ipaddress {
          172.29.184.220/24			##VIP配置
        }
        track_script {				##腳本定義
          chk_nginx
        }

}

接下來需要補充完善 nginx-check.sh

思路是通過去檢測是否有Nginx進程,檢測到沒有nginx進程時先執行Nginx的重啟操作,一秒之后再次檢測,如果Nginx進程還是不存在則關閉Keepalived,使VIP漂移到另一個節點

#!/bin/bash
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
        systemctl restart nginx
        sleep 1
        if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
           systemctl stop keepalived
        fi
fi

遇到的一些問題

當在腳本里使用ps aux | grep nginx | grep -v grep | wc -l去檢測Nginx進程時發現腳本一直未生效,合理懷疑是Keepalived運行用戶在執行這條命令時存在權限問題(腳本不能配置權限為777,Keepalived會警告并失效)
本次使用的高可用架構為單VIP架構,后續也可以嘗試雙VIP架構,即互為主備機,配置兩個VIP模塊,可以選擇使用一個VIP接收流量,也可以使用兩個VIP來監聽流量,看業務的需求。
在單VIP高可用架構中,如果想要主機恢復后VIP不漂移到主機上,可以將主機的state也設置為BACKUP,但優先級需要比備機高一些,以確保初始狀態VIP是綁定在主機上的

總結

以上是生活随笔為你收集整理的Keepalived+Nginx高可用案例(抢占式与非抢占式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。