Nginx的HA高可用的搭建的實(shí)現(xiàn)
1. 什么是高可用
高可用(High Availability, HA)是一種系統(tǒng)設(shè)計(jì)策略,旨在確保服務(wù)或應(yīng)用在面對(duì)硬件故障、軟件缺陷或任何其他異常情況時(shí),仍能持續(xù)穩(wěn)定地運(yùn)行。它通過實(shí)現(xiàn)冗余性、故障轉(zhuǎn)移、負(fù)載均衡、數(shù)據(jù)一致性、監(jiān)控自動(dòng)化、預(yù)防性維護(hù)、災(zāi)難恢復(fù)計(jì)劃以及服務(wù)級(jí)別協(xié)議等關(guān)鍵要素,來減少服務(wù)中斷時(shí)間,提升服務(wù)的可靠性和穩(wěn)定性。
2. 高可用的原理 -- keepalived
思考
- Nginx如果宕機(jī),導(dǎo)致客戶無(wú)法訪問到項(xiàng)目。--- 搭建Nginx高可用
- 如果Nginx主節(jié)點(diǎn)宕機(jī),如何才能切換到從節(jié)點(diǎn)。 -- 使用keepalived組件

3. 搭建HA高可用
我這邊用來兩臺(tái)虛擬機(jī)
安裝keepalived
yum install -y keepalived
默認(rèn)安裝在/etc/keepalived下

修改keepalived.conf配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# ip的地址
smtp_ server 192.168.111.188 // 改為自己的ip
smtp_connect_timeout 30
router_id 192.168.111.188 // 改為自己的ip
}
# 執(zhí)行腳本
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 # 每2s執(zhí)行一次該腳本
weight -20 # keepalive宕機(jī) 權(quán)重-20 優(yōu)先級(jí)
}
vrrp_instance VI_1 {
state MASTER # 角色
interface ens33 # 網(wǎng)卡名
virtual_router_id 51 # id 保證主從相同
priority 100 # 優(yōu)先級(jí) 主節(jié)點(diǎn)大于從節(jié)點(diǎn)
advert_int 1
authentication {
auth type PASS
auth pass 1111
}
virtual_ipaddress {
192.168.111.50 # 虛擬ip. 使用逗號(hào)隔開
}
track_script {
chk_http_port # 追蹤nginx腳本
}
}從節(jié)點(diǎn)
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# ip的地址
smtp_ server 192.168.111.189
smtp_connect_timeout 30
router_id 192.168.111.189
}
# 執(zhí)行腳本
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 # 每2s執(zhí)行一次該腳本
weight -20 # keepalive宕機(jī) 權(quán)重-20 優(yōu)先級(jí)
}
vrrp_instance VI_1 {
state BACKUP # 角色
interface ens33 # 網(wǎng)卡名
virtual_router_id 51 # id 保證主從相同
priority 90 # 優(yōu)先級(jí) 主節(jié)點(diǎn)大于從節(jié)點(diǎn)
advert_int 1
authentication {
auth type PASS
auth pass 1111
}
virtual_ipaddress {
192.168.111.50 # 虛擬ip. 使用逗號(hào)隔開
}
track_script {
chk_http_port # 追蹤nginx腳本
}
}nginx_check.sh
#!/bin/bash
# 檢查是否開啟nginx---統(tǒng)計(jì)nginx進(jìn)程的個(gè)數(shù)
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
pkill -9 keepalived
fi注意修改權(quán)限

修改權(quán)限: chmod 777 nginx_check.sh
啟動(dòng)
nginx keepalived systemctl start|stop keepalived
4. 演示
現(xiàn)在是用第一臺(tái)虛擬機(jī)進(jìn)行代理

故意把第一臺(tái)給宕掉,看看會(huì)不會(huì)自動(dòng)切換到第二臺(tái)

到此這篇關(guān)于Nginx的HA高可用的搭建的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx HA高可用搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx實(shí)現(xiàn)灰度發(fā)布的多種策略分享
灰度發(fā)布是一種重要的策略,它允許我們?cè)诓挥绊懰杏脩舻那闆r下逐步推出新功能或更新,本文介紹了Nginx實(shí)現(xiàn)灰度發(fā)布的多種策略,有需要的小伙伴可以了解下2026-04-04
Nginx反向代理重寫URL的實(shí)現(xiàn)方案
nginx服務(wù)器代理前端項(xiàng)目,并且反代后端服務(wù)器,開發(fā)時(shí)使用沒有什么問題,部署后存在同樣請(qǐng)求根地址的情況,但是去調(diào)用后端接口就會(huì)出現(xiàn)報(bào)錯(cuò),最后通過重寫url解決問題,所以本文給大家介紹了Nginx反向代理重寫URL的實(shí)現(xiàn)方案,需要的朋友可以參考下2025-04-04
nginx提示:500 Internal Server Error錯(cuò)誤解決辦法
這篇文章主要介紹了 nginx提示:500 Internal Server Error錯(cuò)誤解決辦法的相關(guān)資料,這里提供了解決該問題的詳細(xì)步驟,希望能幫助到大家,需要的朋友可以參考下2017-08-08
nginx對(duì)http請(qǐng)求處理的各個(gè)階段詳析
這篇文章主要給大家介紹了關(guān)于nginx對(duì)http請(qǐng)求處理的各個(gè)階段分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
mac安裝nginx且配置vue/springboot項(xiàng)目過程(本地/服務(wù)器)
文章涵蓋Mac和Linux安裝Nginx的步驟,包括配置路徑、自啟動(dòng)、端口修改、前端部署及權(quán)限設(shè)置,解決常見問題以確保服務(wù)正常運(yùn)行2025-07-07

