nginx1.14.0版本高可用——keepalived雙機熱備

nginx不支持主從,因此咱們須要使用keepalive支持高可用。nginx

keepalived重要知識點shell

在局域網內,每一個主機上各安裝一個keepalived,注意關閉防火牆firewalld,而後設定一個VIP(虛擬IP),主keepalived會得到受權在本身的主機上設置一個虛擬IP提供給應用層使用。ui

一旦此keepalived用shell腳本監測到此機器上的nginx掛掉以後,馬上kill掉本身,同時也註銷VIP。spa

局域網內另外一個keepalived感知(需關閉防火牆才能互相感知)到主keepalived掛掉,會把虛擬IP在本身所在機器上虛擬一個,此操做叫IP漂移。從而達到應用層對某個nginx掛掉無感知。3d

安裝keepalivedcode

yum -y updaterouter

yum -y remove keepalivedserver

yum install keepalived –y
使用yum安裝的會有一個默認配置文件模板
路徑爲/etc/keepalived/keepalived.conf
啓動keepalived服務
systemctl start keepalived  對象

若是是這樣就是啓動成功了:blog

若是是這樣就是啓動失敗,要檢查是不是conf文件沒改正確:

keepalived配置——發送郵件設置

global_defs {
   notification_email {              收件郵箱列表
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1 發件郵箱設置
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

keepalived 配置——獲取網卡名稱

查看本機網卡: IP a

keepalived.conf 配置——VIP配置 (virtual IP)

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/etc/keepalived/chk_nginx.sh"           監測nginx是否存活腳本,若是否,keepalived將kill掉本身
    interval 2
    weight -5
    fall 2
    rise 1
}

vrrp_instance VI_1 {
    state MASTER               字符串標識,能夠隨便寫,好比backup
    interface eno16777736
    virtual_router_id 51
    priority 100     指定keepalived的優先級,最高優先級爲主,能夠設置所在機器的虛擬IP,其它從keepalived則不能。
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.200  指定一個虛擬IP :  VIP,後續作IP漂移。這個IP也是應用訪問的IP
#192.168.10.210 能夠設置多個虛擬IP
   } 
  track_script {
    chk_nginx 此虛擬IP檢測存活對象的腳本,這裏檢測nginx
  }

}

 chk_nginx.sh腳本

A=`ps -C nginx --no-header |wc -l`     檢測nginx存活數,若是是0,則是nginx已經掛掉了 if [ $A -eq 0 ]  ;   then     
echo 'nginx server is died'     
killall keepalived         kill掉本身
fi

keepalived啓動、中止、查看存活狀態命令

systemctl start keepalived.service       啓動

systemctl stop keepalived.service       中止

systemctl status keepalived.service     查看狀態

nginx啓動、中止、查看運行狀態

cd nginx目錄

./sbin/nginx -t   檢查nginx.conf腳本語法是否正常

./sbin/nginx     啓動

./sbin/nginx -s stop     中止      Stop 是快速關閉,無論有沒有正在處理的請求。
./sbin/nginx -s quit     退出       Quit 是一個優雅的關閉方式,Nginx在退出前完成已經接受的鏈接請求。

./sbin/nginx -s reload   重啓

ps -ef|grep nginx       查看運行狀態

ps -C nginx --no-header |wc -l   查看存活數。通常狀況下,2是正常數,由於一個nginx啓動會有兩個nginx進程?
相關文章
相關標籤/搜索