nginx keepalived 主從切換

丶小炒肉發表於2016-05-31

 注:  LVS + Keepalived  不知道為什麼出現一個很鬱悶的問題.......

-------------------------------------------------------------------------

原來的拓撲是:

LVS 主 + WEB1              

LVS 從 + WEB2                                                

IP 是3個外網IP    WEB1 123.123.123.121   WEB2 123.123.123.122

                  VIP  123.123.123.123

直接訪問 WEB1 123.123.123.121  正常    

直接訪問 WEB2 123.123.123.122  正常        

訪問VIP 不行    VIP 可以ping通····  

關閉 WEB1 服務      VIP 可以了.... 鬱悶....是否VIP 80 與 WEB1 80埠衝突?

--------------------------------------------------------------------------

 

轉入正題.......

 

拓撲

WEB1 + Keepalived 主     IP 123.123.123.121

WEB2 + Keepalived 從     IP 123.123.123.122

                        VIP 123.123.123.123

 

 

兩臺機都安裝 Keepalived 

下載 wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz

 

tar zxvf keepalived-1.2.1.tar.gz
 
cd keepalived-1.2.1
 
./configure
 
make 
 
make install
 
將keepalived做成啟動腳務:
 
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/  
 
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/  
 
mkdir /etc/keepalived  
 
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/  
 
cp /usr/local/sbin/keepalived /usr/sbin/  
 
【service keepalived start 可啟動,這裡暫時不啟動,等修改完配置檔案以後再啟動】
 
 
Keealived的配置檔案修改..
 
vi /etc/keepalived/keepalived.conf
 
【主 的Keepalived 的配置檔案設定】
--------------------------------------------------------------------------------
vrrp_script chk_http_port { 
                script "/opt/local/nginx/nginx_pid.sh"       監控指令碼
                interval 2                             監控時間
                weight 2                                 
vrrp_instance VI_1 { 
        state MASTER                            主 
        interface eth0                      監控網路卡    
        virtual_router_id 51             這個兩臺伺服器必須一樣 
        priority 101                      權重值 高於 從
        authentication { 
                     auth_type PASS               加密 
                     auth_pass 1111               與從想同 
        } 
        track_script { 
                chk_http_port                      執行監控的服務 
        } 
        virtual_ipaddress { 
             123.123.123.123                          VIP 
        } 

 

------------------------------------------------------------------------

 

 

 【從 的Keepalived 的配置檔案設定】        

 

 

 

--------------------------------------------------------------------------------
vrrp_script chk_http_port { 
                script "/opt/local/nginx/nginx_pid.sh"       監控指令碼
                interval 2                             監控時間
                weight 2                                 
vrrp_instance VI_1 { 
        state BACKUP                            從
        interface eth0                      監控網路卡    
        virtual_router_id 51             這個兩臺伺服器必須一樣 
        priority 100                      權重值 低於 主
        authentication { 
                     auth_type PASS               加密 
                     auth_pass 1111               與從想同 
        } 
        track_script { 
                chk_http_port                      執行監控的服務 
        } 
        virtual_ipaddress { 
             123.123.123.123                          VIP 
        } 

 

------------------------------------------------------------------------

 

 

【編寫Nginx 的監控指令碼】

----------------------------------------------------------------------

 

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ];then

                /opt/local/nginx/sbin/nginx

                sleep 3

                if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

                       killall keepalived

                fi

fi

------------------------------------------------------------------------

 

 

WEB1  WEB2  分別啟動...Nginx  與 Keepalived 測試一下...

# ip add list      檢視 eth0  是否繫結 vip 

關閉 主 Keepalived    檢視是否 從 會 接管 VIP

相關文章