Nginx實現高可用

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頁面,說明配置成功。

發佈了68 篇原創文章 · 獲贊 36 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章