關(guān)于使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用問(wèn)題
1、概述
之前我們使用Keepalived實(shí)現(xiàn)了Nginx服務(wù)的雙機(jī)主備高可用,但是有幾個(gè)問(wèn)題沒(méi)有解決,今天一起探討一下。
1)在雙機(jī)主備機(jī)制中,Keepalived服務(wù)如果宕了,會(huì)自動(dòng)啟用備機(jī)進(jìn)行服務(wù),但Nginx服務(wù)如果負(fù)載過(guò)大宕了,虛擬ip是不會(huì)指向備機(jī)的。
2)雙機(jī)主備的特點(diǎn)是,只有1臺(tái)機(jī)器在提供服務(wù),備機(jī)在主機(jī)的Keepalived服務(wù)宕掉后才會(huì)提供服務(wù),大大的造成了資源的浪費(fèi)。
3)目前比較流行租用云服務(wù)器去運(yùn)營(yíng)公司的產(chǎn)品,那云服務(wù)器支不支持虛擬IP呢?
今天我們就上述的三個(gè)問(wèn)題來(lái)講解一下。
2、使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟
2.1 借助Shell腳本,完成Nginx的重啟
Keepalived不能直接啟動(dòng)Nginx,但可以執(zhí)行shell腳本,因此這里我們需要借助Shell腳本啟動(dòng)Nginx。
在 /etc/keepalived 目錄下,新建一個(gè)腳本 check_nginx.sh,以下是腳本的具體內(nèi)容:
#!/bin/bash # 執(zhí)行查看Nginx進(jìn)程的命令,并放在變量A中 A=`ps -C nginx --no-header | wc -l` # 判斷是否宕機(jī),如果宕機(jī)嘗試重啟,如果重啟不成功,則停止Keepalived if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx sleep 3 if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then killall keepalived fi fi
腳本來(lái)源于網(wǎng)絡(luò)
2.2 為腳本賦予運(yùn)行權(quán)限
# chmod +x /etc/keepalived/check_nginx.sh
2.3 在Keepalived配置文件中增加配置
打開Keepalived配置文件,# vi /etc/keepalived/keepalived.conf
修改配置文件,增加vrrp_script 和track_script的配置,配置如下:
global_defs { # 全局唯一的主機(jī)標(biāo)識(shí) router_id server_a } vrrp_script check_nginx { script "/etc/keepalived/check_nginx.sh" interval 3 # 每隔3秒運(yùn)行一次Shell腳本 weight 10 # 腳本運(yùn)行成功,權(quán)重加10 } vrrp_instance VI_1 { # 標(biāo)識(shí)是主節(jié)點(diǎn)還是備用節(jié)點(diǎn),值為 MASTER 或 BACKUP state MASTER # 綁定的網(wǎng)卡 interface ens33 # 虛擬路由id,保證主備節(jié)點(diǎn)是一致的 virtual_router_id 51 # 權(quán)重 priority 100 # 同步檢查時(shí)間,間隔默認(rèn)1秒 advert_int 1 # 認(rèn)證授權(quán)的密碼,所有主備需要一樣 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } # 虛擬IP virtual_ipaddress { 192.168.1.88 } }
2.4 重啟Keepalived服務(wù)
重啟后,發(fā)現(xiàn),Nginx停掉后,很快會(huì)自動(dòng)啟動(dòng)。
3、雙主熱備的搭建
3.1 雙主熱備概述
由于雙機(jī)主備機(jī)制,每次只會(huì)由一臺(tái)服務(wù)器對(duì)外提供服務(wù),且主備機(jī)的配置是相同的,因此極大地造成了資源的浪費(fèi)。
雙主熱備則解決了這個(gè)問(wèn)題,雙主熱備的原理是兩臺(tái)服務(wù)器利用Keepalived互為主備,因此需要兩個(gè)虛擬IP,再利用DNS輪詢的配置,讓一個(gè)域名按輪詢的方式分別路由到兩個(gè)虛擬IP上,最終達(dá)到高可用的目的。
3.2 場(chǎng)景說(shuō)明
虛擬IP1:192.168.1.88
虛擬IP2:192.168.1.66
A服務(wù)器IP(主):192.168.1.144
B服務(wù)器IP(備):192.168.1.22
3.3 修改A服務(wù)器配置
配置如下:
! Configuration File for keepalived global_defs { # 全局唯一的主機(jī)標(biāo)識(shí) router_id server_a } vrrp_instance VI_1 { # 標(biāo)識(shí)是主節(jié)點(diǎn)還是備用節(jié)點(diǎn),值為 MASTER 或 BACKUP state MASTER # 綁定的網(wǎng)卡 interface ens33 # 虛擬路由id,保證主備節(jié)點(diǎn)是一致的 virtual_router_id 51 # 權(quán)重 priority 100 # 同步檢查時(shí)間,間隔默認(rèn)1秒 advert_int 1 # 認(rèn)證授權(quán)的密碼,所有主備需要一樣 authentication { auth_type PASS auth_pass 1111 } # 虛擬IP virtual_ipaddress { 192.168.1.88 } } vrrp_instance VI_2 { # 標(biāo)識(shí)是主節(jié)點(diǎn)還是備用節(jié)點(diǎn),值為 MASTER 或 BACKUP state BACKUP # 綁定的網(wǎng)卡 interface ens33 # 虛擬路由id,保證主備節(jié)點(diǎn)是一致的 virtual_router_id 52 # 權(quán)重 priority 80 # 同步檢查時(shí)間,間隔默認(rèn)1秒 advert_int 1 # 認(rèn)證授權(quán)的密碼,所有主備需要一樣 authentication { auth_type PASS auth_pass 1111 } # 虛擬IP virtual_ipaddress { 192.168.1.66 } }
3.4 修改B服務(wù)器配置
配置如下:
! Configuration File for keepalived global_defs { router_id server_b } vrrp_instance VI_1 { # 設(shè)置為備機(jī) state BACKUP interface ens33 virtual_router_id 51 # 權(quán)重設(shè)置的要比主機(jī)低 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } # 虛擬IP需要主備設(shè)置成一樣 virtual_ipaddress { 192.168.1.88 } } vrrp_instance VI_2 { # 設(shè)置為主機(jī) state MASTER interface ens33 virtual_router_id 52 # 權(quán)重設(shè)置的要比主機(jī)低 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } # 虛擬IP需要主備設(shè)置成一樣 virtual_ipaddress { 192.168.1.66 } }
3.5 重啟兩臺(tái)服務(wù)器的Keepalived
重啟Keepalived即可。
3.6 設(shè)置DNS輪詢
聯(lián)系網(wǎng)絡(luò)運(yùn)營(yíng)商解決。
4、云服務(wù)器的負(fù)載均衡
現(xiàn)在,很多公司都會(huì)選擇租用云服務(wù)器運(yùn)行自己的產(chǎn)品,因?yàn)楦鼊澦?、更穩(wěn)定,有專業(yè)人員負(fù)責(zé)運(yùn)維。
但使用了云服務(wù)器,就要受云服務(wù)運(yùn)營(yíng)商的限制。
就拿虛擬IP這個(gè)事兒來(lái)說(shuō),一些云服務(wù)運(yùn)營(yíng)商就是不支持的。
如果不支持虛擬IP,則Keepalived這個(gè)方案就只能放棄了。
但即使Keepalived用不了,Nginx的高可用還是有解決方案的,很多云服務(wù)商都已經(jīng)推出了自己的負(fù)載均衡服務(wù)(例如:阿里云的負(fù)載均衡 SLB 和 騰訊云的負(fù)載均衡 CLB)。我們直接租用就好了,不需要我們自己去配置。
5、綜述
今天大概聊了一下KeepAlived自動(dòng)重啟Nginx,Keepalived的雙主熱備高可用的搭建,以及云服務(wù)器負(fù)載均衡的解決方案,希望能對(duì)大家有所幫助。
到此這篇關(guān)于使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用的文章就介紹到這了,更多相關(guān)Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn)
本文主要介紹了Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07angular6+springboot實(shí)現(xiàn)前后分離nginx配置
這篇文章主要介紹了angular6+springboot實(shí)現(xiàn)前后分離nginx配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06Nginx出現(xiàn)403錯(cuò)誤,應(yīng)該如何解決
這篇文章主要介紹了Nginx出現(xiàn)403錯(cuò)誤,應(yīng)該如何解決?具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03基于Xen的VPS ubuntu+nginx+php安裝教程
跟蹤vps已經(jīng)很久了,但是因?yàn)樾枰厥舛丝陂_服務(wù),所以符合條件的多為Xen平臺(tái)的vps。眾多比較之后選擇了vpslink在西雅圖機(jī)房,速度還不錯(cuò)。2010-07-07nginx配置完rewrite瀏覽器提示將您重定向的次數(shù)過(guò)多的解決方法
本文主要介紹了nginx配置完rewrite瀏覽器提示將您重定向的次數(shù)過(guò)多的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07負(fù)載均衡的基本知識(shí)以及使用nginx進(jìn)行負(fù)載均衡的簡(jiǎn)單例子
今天小編就為大家分享一篇關(guān)于負(fù)載均衡的基本知識(shí)以及使用nginx進(jìn)行負(fù)載均衡的簡(jiǎn)單例子,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12