keepalived+Nginx實(shí)現(xiàn)高可用集群配置
首先準(zhǔn)備兩臺(tái)機(jī)器,每個(gè)機(jī)器都安裝有 keepalived 以及 Nginx,nginx 反向代理兩個(gè) tomcat 實(shí)現(xiàn)負(fù)載均衡,所以每個(gè)機(jī)器上安裝docker 以及 tomcat。
1. 配置 Keepalived
1.1 配置 MASTER
第一步:修改 /etc/hosts 文件, 添加:
127.0.0.1 KEEPALIVED_NGINX_MASTER
第二步:將 KEEPALIVED_NGINX_MASTER 配置到 router_id
第三步:注釋掉 vrrp_strict
第四步 :配置 vrrp_instance 的 interface

所以將 interface ens33
第五步:配置 vrrp_instance 的 state 為 MASTER
第六步:配置 virtual_ipaddress
192.168.214.99
全部配置如下:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id KEEPALIVED_NGINX_MASTER
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.214.99
}
}1.2 配置 BACKUP
第一步:修改 /etc/hosts 文件, 添加:
127.0.0.1 KEEPALIVED_NGINX_BACKUP
第二步:將 KEEPALIVED_NGINX_BACKUP 配置到 router_id
第三步:配置 vrrp_instance 的 state 為 BACKUP
第四步:配置 vrrp_instance 的 statepriority 為 50
其他的配置和 MASTER 保持一致
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id KEEPALIVED_NGINX_BACKUP
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.214.99
}
}2. 測(cè)試 Keepalived
兩臺(tái)機(jī)器的 Nginx 訪問(wèn)頁(yè)面:


通過(guò) Keepalived 虛擬 ip 訪問(wèn):

宕掉 MASTER :

3. 通過(guò) shell 腳本優(yōu)化 keepalived+Nginx 高可用集群
實(shí)際情況中 keepalived 不容易掛掉,而容易掛掉的是nginx。
此時(shí)的問(wèn)題是如果 nginx 掛了,但是 keepavlied 沒(méi)掛,這時(shí)候依然可以訪問(wèn)機(jī)器但是訪問(wèn)不到服務(wù)。
3.1 優(yōu)化步驟
所以通過(guò) keepalived 的 vrrp_script 配置,來(lái)調(diào)用自定義shell腳本。
#!/bin/bash
echo 'xxxxxx'
count_nginx=`ps -ef|grep -w nginx|grep -v grep|wc -l`
echo $count_nginx
if [ $count_nginx -eq 0 ];then
systemctl start nginx.service
sleep 2
if [ `ps -ef|grep -w nginx|grep -v grep|wc -l` -eq 0 ];then
systemctl stop keepalived.service
fi
fi這個(gè) shell 腳本的作用是統(tǒng)計(jì) nginx 進(jìn)程數(shù),假如是 0 個(gè) 說(shuō)明 Nginx 掛掉了,那就啟動(dòng) nginx,等2秒,再統(tǒng)計(jì),假如還是0,說(shuō)明nginx啟動(dòng)失敗,就把宕掉 keepalived 切換備份機(jī)器,假如不是0,說(shuō)明啟動(dòng)成功,那就繼續(xù)運(yùn)行;
第一步:上面 shell 腳本命名 nginx_check.sh 文件,存/shell/目錄下;
第二步:配置 keepalived.conf;
vrrp_script chk_http_port {
script "/shell/nginx_check.sh" #腳本地址
interval 2 #檢測(cè)腳本執(zhí)行的間隔
weight 2 #比重
}第三步:重啟 keepalived
到此這篇關(guān)于keepalived+Nginx實(shí)現(xiàn)高可用集群配置的文章就介紹到這了,更多相關(guān)keepalived Nginx 高可用集群 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx日志輪轉(zhuǎn)與定時(shí)啟動(dòng)腳本的實(shí)現(xiàn)
本文主要介紹了Nginx日志輪轉(zhuǎn)與定時(shí)啟動(dòng)腳本的實(shí)現(xiàn),通過(guò)批處理腳本rotate-logs.bat實(shí)現(xiàn)日志輪轉(zhuǎn),使用start-nginx.bat啟動(dòng)和重啟Nginx服務(wù),借助Windows任務(wù)計(jì)劃程序每日凌晨自動(dòng)執(zhí)行日志輪轉(zhuǎn),確保Nginx服務(wù)正常啟動(dòng),感興趣的可以了解一下2026-04-04
nginx部署前端vue項(xiàng)目完整詳細(xì)指南
在使用Nginx部署前端Vue項(xiàng)目時(shí),需要確保項(xiàng)目的生產(chǎn)環(huán)境版本已經(jīng)打包,并且Nginx已經(jīng)安裝并配置在服務(wù)器上,下面我們來(lái)看看具體步驟吧2025-09-09

