Keepalived+Nginx 高可用集群(主從模式)
上述采用nginx方式:

image-20210305171529279
會(huì)有問題:
nginx宕機(jī)
當(dāng)nginx宕機(jī)后,所有請(qǐng)求均會(huì)失效。
解決方法:nginx集群實(shí)現(xiàn)高可用
1、什么是nginx高可用

image-20210305171535146
需要兩臺(tái) nginx 服務(wù)器
需要 keepalived軟件
需要虛擬 ip
2、配置高可用準(zhǔn)備工作
需要兩臺(tái)服務(wù)器 192.168.17.129 和 192.168.17.131
在兩臺(tái)服務(wù)器安裝 nginx
在兩臺(tái)服務(wù)器安裝 keepalived
3、在兩臺(tái)服務(wù)器安裝 keepalived
- 使用 yum 命令進(jìn)行安裝
yum install keepalived --y
- 安裝之后,在 etc 里面生成目錄 keepalived,有文件 keepalived.conf
4、完成高可用配置(主從配置)
- 修改/etc/keepalived/keepalivec.conf 配置文件
global_defs {
notification_email {#指定keepalived在發(fā)生切換時(shí)需要發(fā)送email到的對(duì)象,一行一個(gè)
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定發(fā)件人
smtp_server 192.168.17.129 #指定smtp服務(wù)器地址
smtp_connect_timeout 30#指定smtp連接超時(shí)時(shí)間
router_id LVS_DEVEL #運(yùn)行keepalived機(jī)器的一個(gè)標(biāo)識(shí) (ifconfig查看)
}
vrrp_script chk_http_port { #檢測腳本
script "/usr/local/src/nginx_check.sh"
interval 2 #(檢測腳本執(zhí)行的間隔)
weight 2 #權(quán)重
}
vrrp_instance VI_1 {
state BACKUP # 備份服務(wù)器上將 MASTER 改為 BACKUP
interface ens33 //服務(wù)器網(wǎng)卡
virtual_router_id 51 # 主、備機(jī)的 virtual_router_id 必須相同
priority 90 # 主、備機(jī)取不同的優(yōu)先級(jí),主機(jī)值較大,備份機(jī)值較小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # 虛擬ip
192.168.17.50 // VRRP H 虛擬地址
}
}
- 在/usr/local/src 添加檢測腳本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
- 把兩臺(tái)服務(wù)器上 nginx 和 keepalived 啟動(dòng)
啟動(dòng) nginx:
./nginx
啟動(dòng) keepalived:
systemctl start keepalived.service
5、最終測試
- 在瀏覽器地址欄輸入虛擬 ip 地址 192.168.17.50

image-20210305171555574
- 把主服務(wù)器(192.168.17.129)nginx 和 keepalived 停止,再輸入 192.168.17.50

image-20210305171601837
總結(jié):通過 keepalived軟件對(duì)外暴露虛擬ip,對(duì)內(nèi)做代理綁定nginx服務(wù)器,nginx服務(wù)器做轉(zhuǎn)發(fā)。
下篇更新第8章 nginx 原理與優(yōu)化參數(shù)配置
感興趣的話點(diǎn)點(diǎn)關(guān)注,我們一起成長進(jìn)步。