時間:2022-12-15來源:www.djmaza-info.com作者:電腦系統城
本篇主要介紹一下 keepalived + nginx 來實現 對于nginx的高可用, 還是簡單的主備模式
前面有了解keepalived 的主備的基本使用, 但是那種是針對宕機等情況 停止了keepalived 的進程實現的 vip的漂移,本篇把keepalived 添加校驗nginx存活腳本 實現針對nginx的監控, 實現nginx的高可用
準備2臺機器 , 把111定義為 keepalived 的 MASTER 節點
ip | keepalived |
---|---|
172.16.225.111 | MASTER |
172.16.225.110 | BACKUP |
分別在2臺服務器上配置好nginx 并且修改默認的 index.html 添加上 ip 標識方便區分. 如下:
在keepalived 的配置文件中的 instance 里面配置 track_script 指定 檢查nginx是否存活的腳本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
! Configuration File for keepalived global_defs { router_id LB111 } vrrp_script chk_nginx { # 具體的腳本 script "/etc/keepalived/nginx_check.sh" interval 2 # 2s執行一次 weight -20 # 失敗一次 則優先級 -20 } vrrp_instance VI_1 { state MASTER interface ens160 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.225.200 } # 指定腳本 track_script { chk_nginx } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
! Configuration File for keepalived global_defs { router_id LB111 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_instance VI_1 { state BACKUP interface ens160 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.225.200 } track_scrip { chk_nginx } } |
主要是這個腳本 這個腳本的內容就是 通過ps命令檢查 nginx進程是否存活
,如果不存活 則嘗試啟動一次 則檢查 ,如果還是啟動不起來 則 把keepalived 關閉
, 從而讓 keepalived 能檢測到 并且 vip 能夠漂移到其他機器
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash status=$( ps -C nginx --no-heading| wc -l) if [ "${status}" = "0" ]; then # 嘗試啟動一次 systemctl start nginx # 再次檢查ngixn 進程 status2=$( ps -C nginx --no-heading| wc -l) if [ "${status2}" = "0" ]; then # 關閉 keepalived systemctl stop keepalived fi fi |
需要在2臺機器上都配置上這個腳本
1 2 |
# 給腳本一個 可執行的權限 chmode +x /etc/keepalived/nginx_check .sh |
1 2 |
# 重啟或者啟動 keepalived systemctl restart keepalived |
如果重啟后或者啟動后 查看日志有如下拋錯 , 則是 selinux 沒有關閉
1 2 3 4 5 |
# 臨時關閉 setenforce 0 #永久關閉 sed -i 's/SELINUX=enforcing/\SELINUX=disabled/' /etc/selinux/config |
2臺機器 分別啟動nginx 和 keepalived 后
訪問 vip 172.16.225.200 這個vip 目前在 111 master機器上
在master機器上 把ngixn關閉
1 2 |
# 關閉 nginx . /nginx -s stop |
1 2 3 4 5 6 |
# 此時查看 keepalived 的狀態就是 dead了 systemctl status keepalived ● keepalived.service - LVS and VRRP High Availability Monitor Loaded: loaded ( /usr/lib/systemd/system/keepalived .service; disabled; vendor preset: disabled) Active: inactive (dead) |
再次訪問vip 172.16.225.200 , 可以看到 vip 已經跑到了 backup機器110上了
本篇主要介紹了 keepalived + nginx 的基本的主備配置 實現了 nginx 的高可用,核心點就是配置 nginx_check.sh腳本給keepalived 的執行, 這個nginx_check.sh 腳本內如果發現nginx 不存活 嘗試啟動 如果還是不存活 則直接關閉 keepalived 進程
2022-12-15
ubuntu如何搭建vsftpd服務器2022-12-15
Valheim服務器 Mod修改安裝教程2022-12-10
nginx部署vue項目,給訪問路徑加前綴的實現0 本地ide式開發 1.0 局域網下遠程終端開發 1.1 局域網下遠程ide式開發 1.2 公網下遠程ide式開發 1、購買一個阿里云服務器 2、阿里云服務器終端內 2.1、先開放端口 2.2、接下來配置frp 2.3、設置自啟動 3、內網linux...
2022-12-08