網(wǎng)站首頁 編程語言 正文
本篇主要介紹一下 keepalived + nginx 來實(shí)現(xiàn) 對于nginx的高可用, 還是簡單的主備模式
1.概述
前面有了解keepalived 的主備的基本使用, 但是那種是針對宕機(jī)等情況 停止了keepalived 的進(jìn)程實(shí)現(xiàn)的 vip的漂移,本篇把keepalived 添加校驗(yàn)nginx存活腳本 實(shí)現(xiàn)針對nginx的監(jiān)控, 實(shí)現(xiàn)nginx的高可用
2.準(zhǔn)備工作
準(zhǔn)備2臺機(jī)器 , 把111定義為 keepalived 的 MASTER 節(jié)點(diǎn)
ip | keepalived |
---|---|
172.16.225.111 | MASTER |
172.16.225.110 | BACKUP |
分別在2臺服務(wù)器上配置好nginx 并且修改默認(rèn)的 index.html 添加上 ip 標(biāo)識方便區(qū)分. 如下:
3.配置 keepalived
在keepalived 的配置文件中的 instance 里面配置 track_script 指定 檢查nginx是否存活的腳本
3.1 master (172.16.225.111)
! Configuration File for keepalived global_defs { router_id LB111 } vrrp_script chk_nginx { # 具體的腳本 script "/etc/keepalived/nginx_check.sh" interval 2 # 2s執(zhí)行一次 weight -20 # 失敗一次 則優(yōu)先級 -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 } }
3.2 master (172.16.225.110)
! 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 } }
4.配置 nginx_check.sh
主要是這個(gè)腳本 這個(gè)腳本的內(nèi)容就是?通過ps命令檢查 nginx進(jìn)程是否存活
?,如果不存活 則嘗試啟動(dòng)一次 則檢查 ,如果還是啟動(dòng)不起來 則 把keepalived 關(guān)閉
, 從而讓 keepalived 能檢測到 并且 vip 能夠漂移到其他機(jī)器
#!/bin/bash status=$(ps -C nginx --no-heading|wc -l) if [ "${status}" = "0" ]; then # 嘗試啟動(dòng)一次 systemctl start nginx # 再次檢查ngixn 進(jìn)程 status2=$(ps -C nginx --no-heading|wc -l) if [ "${status2}" = "0" ]; then # 關(guān)閉 keepalived systemctl stop keepalived fi fi
需要在2臺機(jī)器上都配置上這個(gè)腳本
# 給腳本一個(gè) 可執(zhí)行的權(quán)限 chmode +x /etc/keepalived/nginx_check.sh
# 重啟或者啟動(dòng) keepalived systemctl restart keepalived
5.關(guān)閉 selinux
如果重啟后或者啟動(dòng)后 查看日志有如下拋錯(cuò) , 則是 selinux 沒有關(guān)閉
# 臨時(shí)關(guān)閉 setenforce 0 #永久關(guān)閉 sed -i 's/SELINUX=enforcing/\SELINUX=disabled/' /etc/selinux/config
6.模擬測試
2臺機(jī)器 分別啟動(dòng)nginx 和 keepalived 后
訪問 vip 172.16.225.200 這個(gè)vip 目前在 111 master機(jī)器上
在master機(jī)器上 把ngixn關(guān)閉
# 關(guān)閉 nginx ./nginx -s stop
# 此時(shí)查看 keepalived 的狀態(tài)就是 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 已經(jīng)跑到了 backup機(jī)器110上了
總結(jié)
本篇主要介紹了 keepalived + nginx 的基本的主備配置 實(shí)現(xiàn)了 nginx 的高可用,核心點(diǎn)就是配置 nginx_check.sh腳本給keepalived 的執(zhí)行, 這個(gè)nginx_check.sh 腳本內(nèi)如果發(fā)現(xiàn)nginx 不存活 嘗試啟動(dòng) 如果還是不存活 則直接關(guān)閉 keepalived 進(jìn)程
原文鏈接:https://www.cnblogs.com/askajohnny/p/16981112.html
相關(guān)推薦
- 2022-09-07 Android組件化、插件化詳細(xì)講解_Android
- 2022-04-17 sa-token快速添加多鑒權(quán)體系
- 2022-09-19 Docker安裝部署單機(jī)版Rocket及基礎(chǔ)講解_docker
- 2023-08-12 JQ 實(shí)現(xiàn)復(fù)制到剪切板
- 2022-04-25 C語言實(shí)現(xiàn)線索二叉樹的前中后創(chuàng)建和遍歷詳解_C 語言
- 2023-12-06 Request method ‘PUT‘ not supported
- 2022-06-17 C語言深入探究函數(shù)的溯源_C 語言
- 2022-09-24 利用Python編寫簡易的錄制屏幕小工具_(dá)python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支