nginx高可用
存在的問題
如果 nginx 宕機了,則請求將實現不了效果
解決方案:高可用
條件:
(1)需要至少兩臺 nginx 服務器
(2)需要 keepalived(監控nginx是否可用)
(3)需要虛擬 ip
高可用使用
準備工作
(1)準備兩臺服務器 192.169.17.129 和 192.168.17.131;
(2)兩臺服務器中都安裝 nginx
(3)兩臺服務器中都安裝 keepalive
安裝:keepalive
yum install keepalived -y
安裝完畢後,查看是否安裝成功:
rpm -q -a keepalived
安裝完畢後再 /etc/ 文件下會生成個 keepalived 文件夾 裏面會有一個 keepalived.conf 配置文件;
完成高可用配置(主從配置)
(1)修改 /etc/keepalived/keepalived.cong 配置文件
#全局配置
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.17.129
smtp_connect_timeout 30
router_id LVS_DEVEL #訪問到主機
}
#腳本配置
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 #(檢測腳本執行的間隔)
weight 2 #權重
}
#虛擬ip配置
vrrp_instance VI_1 {
state MASTER #備份服務器上將 MASTER 改爲 BACKUP
interface ens33 #網卡 通過ifconfig命令查詢
virtual_router_id 51 #主、備機的virtual_router_id必須相同
priority 100 #主、備機取不同的優先級,主機值較大,備份機值較小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 //VRRP H虛擬機地址
}
}
(2)在 /usr/local/src/ 下添加檢測腳本
#!/bin/bash
A=`ps -C nginx -no-header |wc -1`
if [ $A -eq 0 ];then
/server/nginx/sbin/nginx #nginx啓動腳本位置
sleep 2
if [ `ps -C nginx --no-header |wc -1` -eq 0 ];then
killall keepalived
fi
fi
啓動兩臺服務器的 nginx 和 keepalived 測試
啓動 keepalived 命令如下:
systemctl start keepalived.service
(1)在地址欄輸入虛擬IP:192.168.17.50
其中在主服務器中輸入 ip address 可查看如下
(2)關閉主服務器的 nginx 和 keepalived 後再此刷新訪問頁面
此時訪問的是從(副)服務器