Nginx結(jié)合keepalived實(shí)現(xiàn)雙機(jī)熱備方案
前言
在生產(chǎn)環(huán)境上很多時(shí)候是以 Nginx 做反向代理對(duì)外提供服務(wù),但是一天Nginx難免遇見故障,如:服務(wù)器宕機(jī)。當(dāng) Nginx 宕機(jī)那么 所有對(duì)外提供的接口都將導(dǎo)致無法訪問。雖然我們無法保證服務(wù)器百分之百可用,但是也得想辦法避免這種悲劇,今天我們使用 keepalived 來實(shí)現(xiàn) Nginx 的高可用。
一、雙機(jī)熱備方案是什么?
這種方案是國內(nèi)企業(yè)中最為普遍的一種高可用方案,雙機(jī)熱備其實(shí) 就是指一臺(tái)服務(wù)器在提供服務(wù),另一臺(tái)為某服務(wù)的備用狀態(tài),當(dāng)一 臺(tái)服務(wù)器不可用另外一臺(tái)就會(huì)頂替上去。 本文我們通過keepalived來實(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,備Nginx的服務(wù)器ip為192.168.66.101.還有一個(gè)Lvs虛擬VIP(這個(gè)不需要特別準(zhǔn)備,在配置文件寫上就可,但主備Nginx服務(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)容。其中主備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)容下面有,就是起到一個(gè)nginx宕機(jī)以后,自動(dòng)開啟服務(wù) interval 2 #檢測(cè)時(shí)間間隔 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 號(hào), 兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣 mcast_src_ip 192.168.66.100 #填寫本機(jī)ip priority 100 # 節(jié)點(diǎn)優(yōu)先級(jí),主要比從節(jié)點(diǎn)優(yōu)先級(jí)高 nopreempt # 優(yōu)先級(jí)高的設(shè)置 nopreempt 解決異?;謴?fù)后再次搶占的問題 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,也就是解決寫死程序的ip怎么能切換的ip,也可擴(kuò)展,用途廣泛??膳渲枚鄠€(gè)。 } }
現(xiàn)在對(duì)從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)容下面有,就是起到一個(gè)nginx宕機(jī)以后,自動(dòng)開啟服務(wù) interval 2 #檢測(cè)時(shí)間間隔 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 號(hào), 兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣 mcast_src_ip 192.168.66.100 #填寫本機(jī)ip priority 100 # 節(jié)點(diǎn)優(yōu)先級(jí),主要比從節(jié)點(diǎn)優(yōu)先級(jí)高 nopreempt # 優(yōu)先級(jí)高的設(shè)置 nopreempt 解決異?;謴?fù)后再次搶占的問題 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,也就是解決寫死程序的ip怎么能切換的ip,也可擴(kuò)展,用途廣泛??膳渲枚鄠€(gè)。 } }
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 #啟動(dòng)keepalived service keepalived stop #停止keepalived
如果在啟動(dòng)keepalived的時(shí)候報(bào)錯(cuò):
當(dāng)你在瀏覽器輸入192.168.66.99的時(shí)候,打開的是nginx的頁面或者服務(wù),就說明雙機(jī)熱備就成功了
總結(jié)
到此這篇關(guān)于Nginx結(jié)合keepalived實(shí)現(xiàn)雙機(jī)熱備方案的文章就介紹到這了,更多相關(guān)Nginx keepalived雙機(jī)熱備內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- nginx keepalive的具體使用
- nginx+keepalived 高可用主從配置詳解
- nginx中keepalive配置詳解
- 生產(chǎn)環(huán)境部署Nginx服務(wù)器雙機(jī)熱備部署keepalived的步驟(多種模式教程)
- Nginx+Keepalived實(shí)現(xiàn)雙機(jī)主備的方法
- keepalived+nginx高可用實(shí)現(xiàn)方法示例
- Nginx+Keepalived實(shí)現(xiàn)雙機(jī)熱備
- nginx配置keepalive長連接的實(shí)現(xiàn)方法
- nginx結(jié)合keepalived實(shí)現(xiàn)高可用的完整步驟
- Nginx連接保持超時(shí)(keepalive_timeout)配置小結(jié)
相關(guān)文章
Nginx請(qǐng)求訪問控制實(shí)現(xiàn)方案
Nginx并不直接實(shí)現(xiàn)漏桶算法或令牌桶算法,但這些算法在控制網(wǎng)絡(luò)流量和請(qǐng)求速率方面非常有用,這些算法通常在網(wǎng)絡(luò)編程、API服務(wù)、負(fù)載均衡等領(lǐng)域中使用,以確保系統(tǒng)的穩(wěn)定性和性能,這篇文章給大家介紹Nginx請(qǐng)求訪問控制實(shí)現(xiàn)方案,感興趣的朋友跟隨小編一起看看吧2024-05-05