Keepalived+Nginx高可用案例(抢占式与非抢占式)
生活随笔
收集整理的這篇文章主要介紹了
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高可用案例(抢占式与非抢占式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魔兽世界6.2德拉诺探路者成就怎么做 w
- 下一篇: Nginx配置Websocket