Nginx結(jié)合keepalived實(shí)現(xiàn)雙機(jī)熱備方案
前言
在生產(chǎn)環(huán)境上很多時候是以 Nginx 做反向代理對外提供服務(wù),但是一天Nginx難免遇見故障,如:服務(wù)器宕機(jī)。當(dāng) Nginx 宕機(jī)那么 所有對外提供的接口都將導(dǎo)致無法訪問。雖然我們無法保證服務(wù)器百分之百可用,但是也得想辦法避免這種悲劇,今天我們使用 keepalived 來實(shí)現(xiàn) Nginx 的高可用。
一、雙機(jī)熱備方案是什么?
這種方案是國內(nèi)企業(yè)中最為普遍的一種高可用方案,雙機(jī)熱備其實(shí) 就是指一臺服務(wù)器在提供服務(wù),另一臺為某服務(wù)的備用狀態(tài),當(dāng)一 臺服務(wù)器不可用另外一臺就會頂替上去。 本文我們通過keepalived來實(shí)現(xiàn)雙機(jī)熱備。keepalived是基于VRRP協(xié)議實(shí)現(xiàn)的保證集群高可用的一個服務(wù)軟 件,主要功能是實(shí)現(xiàn)真機(jī)的故障隔離和負(fù)載均衡器間的失敗切換, 防止單點(diǎn)故障。
二、使用步驟
1.環(huán)境準(zhǔn)備
準(zhǔn)備兩臺Nginx主機(jī),主Nginx的ip為192.168.66.100,備Nginx的服務(wù)器ip為192.168.66.101.還有一個Lvs虛擬VIP(這個不需要特別準(zhǔn)備,在配置文件寫上就可,但主備Nginx服務(wù)器需要特別準(zhǔn)備),Lvs虛擬Vip為192.168.66.99.
2.具體操作
在兩臺虛擬機(jī)上分別執(zhí)行以下命令,安裝keepalived
yum install -y keepalived
現(xiàn)在對主Nginx進(jìn)行操作,修改keepalived.conf文件,直接把文件中原有的內(nèi)容刪除,粘貼并修改以下內(nèi)容。其中主備Nginx的virtual_router_id必須一樣,可以直接用代碼里的,不用修改,mcast_src_ip必須為Nginx宿主機(jī)的ip地址(如主Nginx的為192.168.66.100),virtual_ipaddress為Lvs虛擬Vip192.168.66.99
! Configuration File for keepalived vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" #運(yùn)行腳本,腳本內(nèi)容下面有,就是起到一個nginx宕機(jī)以后,自動開啟服務(wù) interval 2 #檢測時間間隔 weight -20 #如果條件成立的話,則權(quán)重 -20 } # 定義虛擬路由,VI_1 為虛擬路由的標(biāo)示符,自己定義名稱 vrrp_instance VI_1 { state MASTER #來決定主從 interface ens33 # 綁定虛擬 IP 的網(wǎng)絡(luò)接口,根據(jù)自己的機(jī)器填寫 virtual_router_id 121 # 虛擬路由的 ID 號, 兩個節(jié)點(diǎn)設(shè)置必須一樣 mcast_src_ip 192.168.66.100 #填寫本機(jī)ip priority 100 # 節(jié)點(diǎn)優(yōu)先級,主要比從節(jié)點(diǎn)優(yōu)先級高 nopreempt # 優(yōu)先級高的設(shè)置 nopreempt 解決異?;謴?fù)后再次搶占的問題 advert_int 1 # 組播信息發(fā)送間隔,兩個節(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,也就是解決寫死程序的ip怎么能切換的ip,也可擴(kuò)展,用途廣泛??膳渲枚鄠€。 } }
現(xiàn)在對從Nginx進(jìn)行操作,修改keepalived.conf文件,直接把文件中原有的內(nèi)容刪除,粘貼并修改以下內(nèi)容。其中主備Nginx的virtual_router_id必須一樣,可以直接用代碼里的,不用修改,mcast_src_ip必須為Nginx宿主機(jī)的ip地址(如主Nginx的為192.168.66.101),virtual_ipaddress為Lvs虛擬Vip192.168.66.99
! Configuration File for keepalived vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" #運(yùn)行腳本,腳本內(nèi)容下面有,就是起到一個nginx宕機(jī)以后,自動開啟服務(wù) interval 2 #檢測時間間隔 weight -20 #如果條件成立的話,則權(quán)重 -20 } # 定義虛擬路由,VI_1 為虛擬路由的標(biāo)示符,自己定義名稱 vrrp_instance VI_1 { state BACKUP #來決定主從 interface ens33 # 綁定虛擬 IP 的網(wǎng)絡(luò)接口,根據(jù)自己的機(jī)器填寫 virtual_router_id 121 # 虛擬路由的 ID 號, 兩個節(jié)點(diǎn)設(shè)置必須一樣 mcast_src_ip 192.168.66.100 #填寫本機(jī)ip priority 100 # 節(jié)點(diǎn)優(yōu)先級,主要比從節(jié)點(diǎn)優(yōu)先級高 nopreempt # 優(yōu)先級高的設(shè)置 nopreempt 解決異?;謴?fù)后再次搶占的問題 advert_int 1 # 組播信息發(fā)送間隔,兩個節(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,也就是解決寫死程序的ip怎么能切換的ip,也可擴(kuò)展,用途廣泛??膳渲枚鄠€。 } }
Nginx+keepalived實(shí)現(xiàn)高可用
寫入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 #啟動keepalived service keepalived stop #停止keepalived
如果在啟動keepalived的時候報錯:
當(dāng)你在瀏覽器輸入192.168.66.99的時候,打開的是nginx的頁面或者服務(wù),就說明雙機(jī)熱備就成功了
總結(jié)
到此這篇關(guān)于Nginx結(jié)合keepalived實(shí)現(xiàn)雙機(jī)熱備方案的文章就介紹到這了,更多相關(guān)Nginx keepalived雙機(jī)熱備內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié)
configmap可以通過ENV環(huán)境變量和文件兩種方式掛載到容器中,修改configmap后容器中對應(yīng)的ENV環(huán)境變量不會更新,將配置文件nginx.conf以configmap文件的方式掛載到容器中,本文介紹ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié),感興趣的朋友一起看看吧2024-03-03Nginx?HttpHeader增加幾個關(guān)鍵的安全選項(xiàng)問題小結(jié)
本文給大家介紹Nginx?HttpHeader增加幾個關(guān)鍵的安全選項(xiàng)問題小結(jié),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-12-12讓VIM支持Nginx .conf文件語法高亮顯示功能的方法
這篇文章主要給大家介紹了關(guān)于讓VIM支持Nginx .conf文件語法高亮顯示功能的方法,文中分別介紹了手動修改和自動化腳本兩種方法的實(shí)現(xiàn),都給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07修改nginx服務(wù)器類型實(shí)現(xiàn)簡單偽裝(隱藏nginx類型與版本等)
這篇文章主要介紹了修改nginx服務(wù)器類型實(shí)現(xiàn)簡單偽裝(隱藏nginx類型與版本等),需要的朋友可以參考下2016-03-03Nginx中配置HTTP/2協(xié)議的詳細(xì)指南
HTTP/2 是 HTTP 協(xié)議的下一代版本,旨在提高性能、減少延遲并優(yōu)化現(xiàn)代網(wǎng)絡(luò)環(huán)境中的通信效率,本文將為大家介紹Nginx配置HTTP/2協(xié)議想詳細(xì)步驟,需要的可以參考下2025-04-04nginx重定向解決(rewrite or internal redirection&nb
本文主要介紹了nginx重定向解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11