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)致客戶無法訪問到項(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)文章
Logrotate如何實(shí)現(xiàn)每小時(shí)切割日志文件
這篇文章主要介紹了Logrotate如何實(shí)現(xiàn)每小時(shí)切割日志文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05nginx 自定義 404、50x 錯(cuò)誤頁面的實(shí)現(xiàn)
本文主要介紹了nginx 自定義 404、50x 錯(cuò)誤頁面的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12Nginx設(shè)置HTTPS監(jiān)聽的具體步驟
這篇文章主要介紹了Nginx設(shè)置HTTPS監(jiān)聽的具體步驟,在 Nginx 上設(shè)置 HTTPS 證書,并將所有 HTTP 請(qǐng)求重定向到 HTTPS,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-12-12使用nginx緩存服務(wù)器上靜態(tài)文件的設(shè)置方法
這篇文章主要介紹了使用nginx緩存服務(wù)器上的靜態(tài)文件,文中給大家提到了nginx緩存的優(yōu)點(diǎn)及設(shè)置方法,通過實(shí)例相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-05-05實(shí)現(xiàn)自動(dòng)定期刪除Nginx日志的方法
這篇文章主要介紹了自動(dòng)定期刪除Nginx日志的方法,Nginx是一個(gè)基于事務(wù)的異步的高速服務(wù)器軟件,需要的朋友可以參考下2015-07-07