Nginx結(jié)合keepalived實(shí)現(xiàn)雙機(jī)熱備方案
前言
在生產(chǎn)環(huán)境上很多時(shí)候是以 Nginx 做反向代理對(duì)外提供服務(wù),但是一天Nginx難免遇見(jiàn)故障,如:服務(wù)器宕機(jī)。當(dāng) Nginx 宕機(jī)那么 所有對(duì)外提供的接口都將導(dǎo)致無(wú)法訪問(wèn)。雖然我們無(wú)法保證服務(wù)器百分之百可用,但是也得想辦法避免這種悲劇,今天我們使用 keepalived 來(lái)實(shí)現(xiàn) Nginx 的高可用。
一、雙機(jī)熱備方案是什么?
這種方案是國(guó)內(nèi)企業(yè)中最為普遍的一種高可用方案,雙機(jī)熱備其實(shí) 就是指一臺(tái)服務(wù)器在提供服務(wù),另一臺(tái)為某服務(wù)的備用狀態(tài),當(dāng)一 臺(tái)服務(wù)器不可用另外一臺(tái)就會(huì)頂替上去。 本文我們通過(guò)keepalived來(lái)實(shí)現(xiàn)雙機(jī)熱備。keepalived是基于VRRP協(xié)議實(shí)現(xiàn)的保證集群高可用的一個(gè)服務(wù)軟 件,主要功能是實(shí)現(xiàn)真機(jī)的故障隔離和負(fù)載均衡器間的失敗切換, 防止單點(diǎn)故障。
二、使用步驟
1.環(huán)境準(zhǔn)備
準(zhǔn)備兩臺(tái)Nginx主機(jī),主Nginx的ip為192.168.66.100,備N(xiāo)ginx的服務(wù)器ip為192.168.66.101.還有一個(gè)Lvs虛擬VIP(這個(gè)不需要特別準(zhǔn)備,在配置文件寫(xiě)上就可,但主備N(xiāo)ginx服務(wù)器需要特別準(zhǔn)備),Lvs虛擬Vip為192.168.66.99.
2.具體操作
在兩臺(tái)虛擬機(jī)上分別執(zhí)行以下命令,安裝keepalived
yum install -y keepalived
現(xiàn)在對(duì)主Nginx進(jìn)行操作,修改keepalived.conf文件,直接把文件中原有的內(nèi)容刪除,粘貼并修改以下內(nèi)容。其中主備N(xiāo)ginx的virtual_router_id必須一樣,可以直接用代碼里的,不用修改,mcast_src_ip必須為Nginx宿主機(jī)的ip地址(如主Nginx的為192.168.66.100),virtual_ipaddress為L(zhǎng)vs虛擬Vip192.168.66.99
! Configuration File for keepalived vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" #運(yùn)行腳本,腳本內(nèi)容下面有,就是起到一個(gè)nginx宕機(jī)以后,自動(dòng)開(kāi)啟服務(wù) interval 2 #檢測(cè)時(shí)間間隔 weight -20 #如果條件成立的話,則權(quán)重 -20 } # 定義虛擬路由,VI_1 為虛擬路由的標(biāo)示符,自己定義名稱 vrrp_instance VI_1 { state MASTER #來(lái)決定主從 interface ens33 # 綁定虛擬 IP 的網(wǎng)絡(luò)接口,根據(jù)自己的機(jī)器填寫(xiě) virtual_router_id 121 # 虛擬路由的 ID 號(hào), 兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣 mcast_src_ip 192.168.66.100 #填寫(xiě)本機(jī)ip priority 100 # 節(jié)點(diǎn)優(yōu)先級(jí),主要比從節(jié)點(diǎn)優(yōu)先級(jí)高 nopreempt # 優(yōu)先級(jí)高的設(shè)置 nopreempt 解決異常恢復(fù)后再次搶占的問(wèn)題 advert_int 1 # 組播信息發(fā)送間隔,兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣,默認(rèn) 1s authentication { auth_type PASS auth_pass 1111 } # 將 track_script 塊加入 instance 配置塊 track_script { chk_nginx #執(zhí)行 Nginx 監(jiān)控的服務(wù) } virtual_ipaddress { 192.168.212.110 # 虛擬ip,也就是解決寫(xiě)死程序的ip怎么能切換的ip,也可擴(kuò)展,用途廣泛??膳渲枚鄠€(gè)。 } }
現(xiàn)在對(duì)從Nginx進(jìn)行操作,修改keepalived.conf文件,直接把文件中原有的內(nèi)容刪除,粘貼并修改以下內(nèi)容。其中主備N(xiāo)ginx的virtual_router_id必須一樣,可以直接用代碼里的,不用修改,mcast_src_ip必須為Nginx宿主機(jī)的ip地址(如主Nginx的為192.168.66.101),virtual_ipaddress為L(zhǎng)vs虛擬Vip192.168.66.99
! Configuration File for keepalived vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" #運(yùn)行腳本,腳本內(nèi)容下面有,就是起到一個(gè)nginx宕機(jī)以后,自動(dòng)開(kāi)啟服務(wù) interval 2 #檢測(cè)時(shí)間間隔 weight -20 #如果條件成立的話,則權(quán)重 -20 } # 定義虛擬路由,VI_1 為虛擬路由的標(biāo)示符,自己定義名稱 vrrp_instance VI_1 { state BACKUP #來(lái)決定主從 interface ens33 # 綁定虛擬 IP 的網(wǎng)絡(luò)接口,根據(jù)自己的機(jī)器填寫(xiě) virtual_router_id 121 # 虛擬路由的 ID 號(hào), 兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣 mcast_src_ip 192.168.66.100 #填寫(xiě)本機(jī)ip priority 100 # 節(jié)點(diǎn)優(yōu)先級(jí),主要比從節(jié)點(diǎn)優(yōu)先級(jí)高 nopreempt # 優(yōu)先級(jí)高的設(shè)置 nopreempt 解決異常恢復(fù)后再次搶占的問(wèn)題 advert_int 1 # 組播信息發(fā)送間隔,兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣,默認(rèn) 1s authentication { auth_type PASS auth_pass 1111 } # 將 track_script 塊加入 instance 配置塊 track_script { chk_nginx #執(zhí)行 Nginx 監(jiān)控的服務(wù) } virtual_ipaddress { 192.168.66.99 # 虛擬ip,也就是解決寫(xiě)死程序的ip怎么能切換的ip,也可擴(kuò)展,用途廣泛??膳渲枚鄠€(gè)。 } }
Nginx+keepalived實(shí)現(xiàn)高可用
寫(xiě)入nginx_check.sh腳本 /etc/keepalived/nginx_check.sh.輸入命令
vim /etc/keepalived/nginx_check.sh
#!/bin/bash A=`ps -C nginx –no-header |wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx sleep 2 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi
cd /etc/keepalived
chmod 777 nginx_check.sh
- 運(yùn)行keepalived和Nginx
這里給出運(yùn)行和停止keepalived的命令,Nginx大家自行運(yùn)行
service keepalived start #啟動(dòng)keepalived service keepalived stop #停止keepalived
如果在啟動(dòng)keepalived的時(shí)候報(bào)錯(cuò):
當(dāng)你在瀏覽器輸入192.168.66.99的時(shí)候,打開(kāi)的是nginx的頁(yè)面或者服務(wù),就說(shuō)明雙機(jī)熱備就成功了
總結(jié)
到此這篇關(guān)于Nginx結(jié)合keepalived實(shí)現(xiàn)雙機(jī)熱備方案的文章就介紹到這了,更多相關(guān)Nginx keepalived雙機(jī)熱備內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nginx+keepalived雙機(jī)熱備技術(shù)實(shí)踐
- 生產(chǎn)環(huán)境部署Nginx服務(wù)器雙機(jī)熱備部署keepalived的步驟(多種模式教程)
- Nginx雙機(jī)熱備的實(shí)現(xiàn)步驟
- Nginx+Keepalived實(shí)現(xiàn)雙機(jī)熱備
- keepalived雙機(jī)熱備nginx的配置方法
- Nginx+Tomcat負(fù)載均衡群集全過(guò)程
- Nginx部署負(fù)載均衡服務(wù)的步驟全解析
- nginx負(fù)載均衡配置方式
- nginx負(fù)載均衡及詳細(xì)配置方法
- nginx實(shí)現(xiàn)負(fù)載均衡與實(shí)例解讀
- Nginx實(shí)現(xiàn)負(fù)載均衡的配置步驟
- nginx tcp負(fù)載均衡的具體實(shí)現(xiàn)
- keepalived+nginx+httpd實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡
相關(guān)文章
nginx部署https網(wǎng)站的實(shí)現(xiàn)步驟(親測(cè))
本文詳細(xì)介紹了使用Nginx在保持與http服務(wù)兼容的情況下部署HTTPS,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02nginx鏡像構(gòu)建的知識(shí)點(diǎn)及方法步驟詳解
這篇文章主要為大家介紹了nginx鏡像構(gòu)建的知識(shí)點(diǎn)詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08nginx 負(fù)載均衡 多站點(diǎn)共享Session
這里我們就 演練一下 以數(shù)據(jù)庫(kù)的形來(lái)存儲(chǔ)Session,來(lái)實(shí)現(xiàn)多站點(diǎn)共享Session2012-11-11nginx配置ssl證書(shū)實(shí)現(xiàn)https訪問(wèn)的示例
這篇文章主要介紹了nginx配置ssl證書(shū)實(shí)現(xiàn)https訪問(wèn)的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Nginx前端頁(yè)面刷新后出現(xiàn)404的原因與解決方案
這篇文章主要來(lái)為大家詳細(xì)介紹一下Nginx前端頁(yè)面刷新后出現(xiàn)404 Not Found的原因與對(duì)應(yīng)的解決方案,有需要的小伙伴可以根據(jù)情況參考一下2025-03-03nginx使用sticky基于cookie的會(huì)話保持方式
這篇文章主要介紹了nginx使用sticky基于cookie的會(huì)話保持方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12解決nginx服務(wù)器上發(fā)布的新版本代碼總需要清除瀏覽器緩存問(wèn)題
這篇文章主要介紹了解決nginx服務(wù)器上發(fā)布的新版本代碼總需要清除瀏覽器緩存問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01教你如何解決Nginx禁止ip加端口訪問(wèn)的問(wèn)題
這篇文章主要介紹了Nginx禁止ip加端口訪問(wèn)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02Nginx出現(xiàn)504 Gateway Time-out的解決方法
nginx訪問(wèn)出現(xiàn)504 Gateway Time-out,一般是由于程序執(zhí)行時(shí)間過(guò)長(zhǎng)導(dǎo)致響應(yīng)超時(shí),本文就來(lái)介紹一下解決方法,感興趣的可以了解一下2023-10-10Nginx部署JavaWeb項(xiàng)目全過(guò)程
這篇文章主要介紹了Nginx部署JavaWeb項(xiàng)目全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01