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

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