1. 程式人生 > >nginx+keepalived IP飄移(高可用)

nginx+keepalived IP飄移(高可用)

1、安裝keepalived

   yum  install -y keepalived

設定開機自啟動

   systemctl enable keepalived.service 

2、修改配置檔案

(1)主配置檔案

vim  /etc/keepalived/keepalived.conf

global_defs {
   router_id keep_01
}

vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 
5 weight -20 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.144/24 dev eth0 label eth0:1 } track_script { chk_nginx } }

(2)備配置檔案

global_defs {
   router_id keep_02
}
vrrp_script chk_nginx {
    script "killall -0 nginx"
    script "/etc/keepalived/check_nginx.sh"
    interval 5
    weight -20
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 
1111 } virtual_ipaddress { 192.168.1.144/24 dev eth0 label eth0:1 } track_script { chk_nginx } }

(3)主、備 新增Nginx狀態監測指令碼

#!/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
        pkill keepalived
    fi
fi

(4)啟動或者重啟keepalived服務

        systemctl restart keepalived

3、驗證

(1)通過虛擬IP訪問

(2)停掉nginx,指令碼會在兩秒後自動執行監測nginx,然後啟動,如果只停掉主的keepalived服務,就會出現腦裂情況,所以這裡為了不出現這些情況,我停掉主伺服器來驗證

 

(3)如果還不不相信自己做成功,用抓包工具wireshark來驗證