一、引言
在之前幾篇文章中,都是介紹了一臺Nginx做反向代理服務器,結構圖如下。
但有沒有想過,這種架構圖,萬一Nginx代理服務器掛掉了怎麼辦?後面的服務就都沒有辦法訪問了,這是一個嚴重的問題。那怎麼解決這個文件呢?這就是下面要說的Nginx的高可用集羣,也可以叫雙機熱備。
在學習之前,如果沒有 Linux 和 Nginx 環境,或者想看一下反向代理、負載均衡、動靜分離如何配置,可以參考下面文章。
二、Nginx 高可用集羣
高可用集羣的架構圖
下面使用兩臺Nginx做反向代理服務器,當其中一臺Nginx宕機之後,仍能用另一臺來工作,兩臺Nginx之間用keeplived來監測心跳。
三、如何配置
1、需要的環境
兩臺 Linux 並各自安裝 Nginx 和 keepalived
2、配置高可用的準備工作
(1)需要兩臺服務器 192.168.17.129 、192.168.17.131
(2)在兩臺服務器安裝 Nginx(可以參考前面文章)
(3)在兩臺服務器安裝 keepalived
3、兩臺服務器都安裝 keepalived
(1)、使用 yum 命令進行安裝
yum install keepalived –y
(2)、keepalived 安裝之後,其配置文件目錄如下:
/etc/keepalived/keepalivec.conf
4、完成高可用配置(主從配置)
(1)修改/etc/keepalived/keepalivec.conf 配置文件
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.17.129
smtp_connect_timeout 30
# 通過它,可以訪問到主機,在hosts文件中,要做映射關係,類似於 127.0.0.1 LVS_DEVEL
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 執行腳本所在的位置
interval 2 #檢測腳本執行的間隔,單位秒,每個2秒執行一次腳本
weight 2
}
vrrp_instance VI_1 {
state MASTER # 備份服務器上將 MASTER 改爲 BACKUP
interface ens33 # 綁定的網卡
virtual_router_id 51 # 主、備機的 virtual_router_id 必須相同
priority 90 # 主、備機取不同的優先級,主機值較大,備份機值較小
advert_int 1 #每隔一秒發送一次心跳,確保從服務器是否還活着
authentication { # 心跳檢測需要的密碼
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 # VRRP H 虛擬地址
}
}
(2)在/usr/local/src 添加檢測腳本,檢查Nginx是否還活着
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #Nginx啓動命令的位置
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
(3)把兩臺服務器上 nginx 和 keepalived 啓動
啓動 nginx: ./nginx
啓動 keepalived: systemctl start keepalived.service
可以使用ipconfig,查看虛擬Ip的綁定
5、最終測試
(1)在瀏覽器地址欄輸入 虛擬 ip 地址 192.168.17.50
(2)把主服務器上的(192.168.17.129)Nginx 和 keepalived 停止,再輸入 192.168.17.50,依舊可以訪問Nginx。