使用keepalived的雙主模型實現nginx反向代理的高可用性

實驗拓撲圖:
使用keepalived的雙主模型實現nginx反向代理的高可用性
實驗環境:
兩臺upstream server用於配置httpd服務,兩臺nginx反向代理服務器,同時將keepalived服務安裝在兩臺反向代理服務器上面,用於實現高可用性
基礎環境的準備:

關閉四臺主機的防火牆及selinux,同時在兩臺upstream server主機上配置httpd服務並準備測試頁面
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config
selinux=disabled
四臺主機做同樣的設置
yum install -y httpd
systemctl start httpd
systemctl enable httpd
vim /var/www/html/index.html
<h1>This httpd-1 Page</h1>
另一臺upstream server主機做同樣配置

在兩臺負載均衡服務器上面安裝nginx服務,在nginx配置文件的http字段中定義upstream,並且在location字段中調用,重新啓動服務

yum install -y nginx    //注意nginx的rpm包是在epel源中提供的
vim  /etc/nginx/nginx.conf    //編輯配置文件
upstream webservs {          //在http字段中定義
                        server 192.168.153.7:80 weight=1;
                        server 192.168.153.8:80 weight=1;
                        }

location  /  {                         //在location中調用定義的upstream名稱     
                        proxy_pass http://webservs/;
                        }
systemctl start nginx
systemctl enable nginx 

使用keepalived的雙主模型實現nginx反向代理的高可用性

備註:nginx根據版本不同有時候就只有一個nginx.conf的主配置文件,有時候除了主配置文件還會存在/etc/nginx/conf.d/default.conf的附加配置文件。如果nginx安裝完成後既有主配置文件又有附加配置文件,此時關於server字段以及location字段需要定義default.conf的附加配置文件中

使用netstat -tnlp查看確保80端口被nginx的master進程監聽
使用keepalived的雙主模型實現nginx反向代理的高可用性
使用客戶端驗證一下nginx的反向代理功能
使用keepalived的雙主模型實現nginx反向代理的高可用性
使用keepalived的雙主模型實現nginx反向代理的高可用性
將配置文件複製到第二個反向代理服務器節點,並進行測試
接下來配置keepalived的高可用性,這裏我們先配置一組主備模式
對於keepalived來說通過判定nginx服務的在線狀態的結果來判斷這個主機是否可以成爲主節點

yum install -y keepalived        //在反向代理服務器上安裝keepalived,並設置開機自啓
systemctl start keepalived
systemctl enable keepalived 
編輯keepalived,設置檢測nginx是否在線的腳本
! Configuration File for keepalived

global_defs {
   notification_email {
     root@locahost
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
        script "/etc/keepalived/chk_file.sh"      //定義腳本
                interval 1                                             //判斷命令返回結果
            weight -10                                           //權重減10    
}

vrrp_instance VI_1 {
    state MASTER                                      //主節點
    interface ens33                                     //VIP配置到哪個接口的別名上
    virtual_router_id 43                               //虛擬路由ID 
    priority 100                                           //設置權重
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass poiu
    }
    virtual_ipaddress {
        192.168.153.200/32 dev ens33 label ens33:0   //設置VIP地址,配置的ens33網卡的第一個別名上
    }
 track_script {
        chk_nginx            //調用腳本
        }
}

配置完畢後重新啓動服務並將配置文件複製到第二個節點上面
同時修改第二個節點上面的配置文件 state 改成BACKUP,priority改成99
創建檢測腳本
在/etc/keepalived目錄下創建chk_file.sh文件
內容爲killall -0 nginx &> /dev/null,並更改文件爲可執行狀態
然後查看主節點的IP地址信息

使用keepalived的雙主模型實現nginx反向代理的高可用性
使用客戶端請求
使用keepalived的雙主模型實現nginx反向代理的高可用性
使用keepalived的雙主模型實現nginx反向代理的高可用性
現在我們手動停止主節點的nginx服務,然後查看備用節點的IP地址信息
使用keepalived的雙主模型實現nginx反向代理的高可用性
此時訪問正常,重新啓動主節點的nginx服務後,VIP被重新爭搶回主節點
接下來配置keepalived的雙主模型實現nginx反向代理的高可用性
在主節點的keepalived的配置文件中添加以下配置信息

vrrp_instance VI_2 {        //instance名稱更改爲2
    state BACKUP            //模式改爲備用
    interface ens33
    virtual_router_id 34     //虛擬路由ID任意更改,不能跟上面的VI_1一樣
    priority 99                   //權重設置爲99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass poiuytre  
    }
    virtual_ipaddress {
        192.168.153.201/32 dev ens33 label ens33:1     //將VIP192.168.153.201配置到ens33網卡的第二個別名上面
    }
track_script {
        chk_nginx
        }
}

將新添加的配置信息複製到備用節點,並作相應的修改state更改成MSASTER,priority改成100
查看兩臺主機的ip地址信息
第一主節點IP信息爲:

使用keepalived的雙主模型實現nginx反向代理的高可用性
第二主節點IP信息爲:
使用keepalived的雙主模型實現nginx反向代理的高可用性
使用客戶端進行訪問驗證第二個主節點是否正常運行
使用keepalived的雙主模型實現nginx反向代理的高可用性
使用keepalived的雙主模型實現nginx反向代理的高可用性
手動停止第一臺高可用服務器的nginx服務,查看第二臺高可用服務器的IP信息用來驗證雙主模型是否成功
使用keepalived的雙主模型實現nginx反向代理的高可用性
此時基於keepalived的雙主模型實現nginx反向代理的高可用性配置完畢,在實際生產環境中可以將兩個VIP地址配置在DNS服務器中,在DNS服務器的配置文件中做兩條A記錄指向,即可實現請求的負載均衡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章