Nginx的高可用指的是在一臺Nginx宕機的情況下有其他Nginx去處理請求。
這裏準備兩臺centos虛擬機測試,兩臺虛擬機上都要安裝Nginx和keepalived.
安裝Nginx:
//安裝插件
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
//進入下面目錄安裝
cd /usr/local
//下載Nginx壓縮包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
//解壓
tar -xvf nginx-1.13.7.tar.gz
//進入解壓後的文件夾
cd /usr/local/nginx-1.13.7
//執行命令
./configure
//執行命令
make && make install
安裝keepalived:
//任意目錄執行命令
yum install keepalived -y
//安裝完成後在/etc目錄下會有一個keepalived文件夾,文件夾裏面有一個keepalived.conf文件。
編輯兩個虛擬機中的keepalived.conf 文件
替換內容爲
第一個
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.43.23 # 虛擬機的IP
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 腳本路徑
interval 2 #(檢測腳本執行的間隔)
weight 2
}
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 虛擬地址
}
}
第二個
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.43.243
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 腳本路徑
interval 2 #(檢測腳本執行的間隔)
weight 2
}
vrrp_instance VI_1 {
state BACKUP # 備份服務器上將 MASTER 改爲 BACKUP
interface ens33 // 網卡 通過ifconfig命令獲得
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 虛擬地址
}
}
把腳本放到配置文件中所填寫的路徑中
腳本內容
#!/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
分別啓動兩臺虛擬機中的keepalived和Nginx
systemctl start keepalived.service
cd /usr/local/nginx/sbin
./nginx
配置完成
測試訪問,我們只需要訪問配置文件中配置的那個虛擬IP就可以
停止第一臺虛擬機的keepalived和nginx
systemctl stop keepalived.service
cd /usr/local/nginx/sbin
./nginx -s stop
刷新頁面 仍然可以顯示welcome to Nginx頁面,說明配置成功。