keepalived?+?nginx?實(shí)現(xiàn)高可用方案
本篇主要介紹一下 keepalived + nginx 來(lái)實(shí)現(xiàn) 對(duì)于nginx的高可用, 還是簡(jiǎn)單的主備模式

1.概述
前面有了解keepalived 的主備的基本使用, 但是那種是針對(duì)宕機(jī)等情況 停止了keepalived 的進(jìn)程實(shí)現(xiàn)的 vip的漂移,本篇把keepalived 添加校驗(yàn)nginx存活腳本 實(shí)現(xiàn)針對(duì)nginx的監(jiān)控, 實(shí)現(xiàn)nginx的高可用
2.準(zhǔn)備工作
準(zhǔn)備2臺(tái)機(jī)器 , 把111定義為 keepalived 的 MASTER 節(jié)點(diǎn)
| ip | keepalived |
|---|---|
| 172.16.225.111 | MASTER |
| 172.16.225.110 | BACKUP |
分別在2臺(tái)服務(wù)器上配置好nginx 并且修改默認(rèn)的 index.html 添加上 ip 標(biāo)識(shí)方便區(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)先級(jí) -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)容就是 通過(guò)ps命令檢查 nginx進(jìn)程是否存活 ,如果不存活 則嘗試啟動(dòng)一次 則檢查 ,如果還是啟動(dòng)不起來(lái) 則 把keepalived 關(guān)閉, 從而讓 keepalived 能檢測(cè)到 并且 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臺(tái)機(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 沒(méi)有關(guān)閉

# 臨時(shí)關(guān)閉 setenforce 0 #永久關(guān)閉 sed -i 's/SELINUX=enforcing/\SELINUX=disabled/' /etc/selinux/config
6.模擬測(cè)試
2臺(tái)機(jī)器 分別啟動(dòng)nginx 和 keepalived 后
訪(fǎng)問(wèn) 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)
再次訪(fǎng)問(wèn)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)程
到此這篇關(guān)于keepalived + nginx 實(shí)現(xiàn)高可用方案的文章就介紹到這了,更多相關(guān)keepalived + nginx 實(shí)現(xiàn)高可用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- keepalived+nginx高可用實(shí)現(xiàn)方法示例
- Keepalived+Nginx+Tomcat 實(shí)現(xiàn)高可用Web集群的示例代碼
- nginx結(jié)合keepalived實(shí)現(xiàn)高可用的完整步驟
- Keepalived實(shí)現(xiàn)Nginx負(fù)載均衡高可用的示例代碼
- keepalived對(duì)nginx進(jìn)行高可用搭建及原理詳解
- Keepalived如何實(shí)現(xiàn)Nginx高可用
- 使用Nginx?+?Keepalived?實(shí)現(xiàn)高可用?Web?負(fù)載均衡筆記(虛擬機(jī))
- Nginx+keepalived實(shí)現(xiàn)七層的負(fù)載均衡的高可用(最新解決方案)
- Nginx高可用Keepalived的具體使用
- Nginx使用Keepalived部署web集群(高可用高性能負(fù)載均衡)實(shí)戰(zhàn)案例
- Keepalived搭建nginx高可用的實(shí)現(xiàn)
相關(guān)文章
Nginx服務(wù)器中配置GeoIP模塊來(lái)攔截指定國(guó)家IP
Nginx中自帶GeoIP模塊可以屏蔽指定IP的請(qǐng)求,只不過(guò)默認(rèn)沒(méi)有被編譯,打開(kāi)以后我們只要再下載一個(gè)IP規(guī)則就行,Nginx服務(wù)器中配置GeoIP模塊來(lái)攔截指定國(guó)家IP2016-06-06
nginx反向代理服務(wù)因配置文件錯(cuò)誤導(dǎo)致訪(fǎng)問(wèn)資源時(shí)出現(xiàn)404
這篇文章主要介紹了nginx反向代理服務(wù)因配置文件錯(cuò)誤導(dǎo)致訪(fǎng)問(wèn)資源時(shí)出現(xiàn)404,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
教你利用Nginx 服務(wù)搭建子域環(huán)境提升二維地圖加載性能的步驟
這篇文章主要介紹了利用 Nginx 服務(wù)搭建子域環(huán)境提升二維地圖加載性能,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-09-09
FastDFS+Nginx如何搭建本地服務(wù)器并實(shí)現(xiàn)遠(yuǎn)程訪(fǎng)問(wèn)
FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪(fǎng)問(wèn)(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題,這篇文章主要介紹了FastDFS+Nginx搭建本地服務(wù)器并實(shí)現(xiàn)遠(yuǎn)程訪(fǎng)問(wèn),需要的朋友可以參考下2023-11-11
基于nginx的靜態(tài)網(wǎng)頁(yè)部署的實(shí)現(xiàn)
這篇文章主要介紹了基于nginx的靜態(tài)網(wǎng)頁(yè)部署的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
詳解Nginx 靜態(tài)文件服務(wù)配置及優(yōu)化
這篇文章主要介紹了Nginx 靜態(tài)文件服務(wù)配置及優(yōu)化,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
Nginx實(shí)現(xiàn)分端口部署兩個(gè)或多個(gè)項(xiàng)目的教程
這篇文章主要為大家詳細(xì)介紹了Nginx實(shí)現(xiàn)分端口部署兩個(gè)或多個(gè)項(xiàng)目的相關(guān)教程,其中包含了反向代理配置,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10

