keepalived 小例子

在上節 nginx負載均衡 後,本次添加了 keepalived 的使用例子。

準備工作:

兩臺虛擬機:centos7_1(192.168.1.201)、centos7_2(192.168.1.186)

兩臺虛擬機都裝有 nginx 和 三個 tomcat(負載均衡)

 

配置 201 的 keepalived,路徑:/etc/keepalived/keepalived.conf,配置比較簡單,都是從其他地方抄的

global_defs {
   router_id proxy1 
}
vrrp_script chk_nginx {
  script "/etc/keepalived/nginx_check.sh"
  interval 2    #健康檢查週期
  weight -2     #優先級變化幅度
  fall 2         #判定服務異常的檢查次數
  rise 1         #判定服務正常的檢查次數
}
vrrp_instance VI_1 {
    state MASTER 
    interface ens33
    virtual_router_id 51
    priority 100
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.205
    }
    track_script {
        chk_nginx
    }
}

檢查腳本 /etc/keepalived/nginx_check.sh,注意 nginx 路徑

#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
    /mine/nginx/sbin/nginx #嘗試重新啓動nginx
    sleep 2  #睡眠2秒
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        killall keepalived #啓動失敗,將keepalived服務殺死。將vip漂移到其它備份節點
    fi
fi

配置 186 的 keepalived.conf,路徑:/etc/keepalived/keepalived.conf,腳本和上面是一樣的

global_defs {
   router_id proxy2
}
vrrp_script chk_nginx {
  script "/etc/keepalived/nginx_check.sh"
  interval 2
  weight -2 
  fall 2
  rise 1
}
vrrp_instance VI_1 {
    state BACKUP 
    interface ens33
    virtual_router_id 51
    priority 99
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.205
    }
    track_script {
        chk_nginx
    }
}

然後,啓動兩個 keepalived

啓動後就可以訪問 虛擬 ip 192.168.1.205 了

201 關閉 keepalived 後,就由 186 提供服務,自動切換

重新啓動 201 的 keepalived,就又變成 201 提供服務,原因是重新啓動後 priority 100,比 186 的 priority 大,201 自動變成 master

兩邊都 killall keepalived 後,虛擬 ip 就無法再訪問了(但 201 和 186 還是能訪問的,只是由兩個 keepalived 綁定的 vip 205 無法訪問)

中間遇到的問題:

備用機 186 的 keepalived 一啓動就自動變成 master

原因:centos7 的防火牆問題,解決方法:關閉 201 的防火牆就可以了, systemctl stop firewalld,其他方法未知

 

參考:

https://blog.51cto.com/xiexinmiao/1650888

https://blog.51cto.com/h11345/1570786

https://blog.51cto.com/superpcm/2095395

https://www.cnblogs.com/kevingrace/p/6138185.html

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