vrrp_script详解

vrrp_script详解

   小樱     2020年10月29日 09:24     49

1.介绍

Keepalived可以发送vrrp协议进行网络可用性的探测,并且实现自身进程的控制,但是其对背后所控制的业务无法进行检测,所以就需要去配置一些监控的手段,其中vrrp_script模块就能够实现业务状态的监控,当然是需要用户编写检测脚本,vrrp_script只负责去执行脚本,并获得监控的结果,进而判断业务是否正常。当然在vrrp_script模块总,还有其他一些参数进行更精细化的控制。

 

2.参数

vrrp_script nginx_check {        

    script "/usr/local/keepalived/etc/keepalived/nginx_check.sh"  

interval 2                     

}

最常用的就是两个参数

scrip:需要执行脚本的路径,配置绝对路径。

interval:执行脚本的时间间隔,2代表两秒,根据业务进行配置。 这个参数也不是必填的参数,其默认值是1秒。

 

以下是不经常用的参数

timeout :超时时间,过了此时间认为失败,也就是业务失效。

rise n:执行n次,认为成功

fall n:执行n次,认为失败

user <USERNAME> [GROUPNAME]:运行脚本的用户和组。

init_fail:假设脚本初始状态是失败状态。

weight:这个参数也不是一个必填的参数,其默认值是0.

默认权重为0,这意味着监视脚本的任何VRRP实例都会在故障发生后转换到故障状态。所以其如果为0,并不会进行计算权重,只要发生故障,执行失败的次数后,故障转移。

 

3、weight的计算

如果weight不为0的时候,这里有个计算方式,从网上转载过来。

vrrp_script里的script返回值为0时认为检测成功,其它值都会当成检测失败;

weight 为正时,脚本检测成功时此weight会加到priority上,检测失败时不加;

主失败:

主 priority < 从 priority + weight 时会切换。

主成功:

主 priority + weight > 从 priority + weight 时,主依然为主


weight 为负时,脚本检测成功时此weight不影响priority,检测失败时priority – abs(weight)

主失败:

主 priority – abs(weight) < 从priority 时会切换主从

主成功:

主 priority > 从priority 主依然为主

 

下边是一个检测nginx的脚本示例:

#!/bin/bash

con1=`ps -ef | grep nginx | grep -v grep | wc -l`

con2=`netstat -tlnp | grep nginx | wc -l`

if [[ $con1 -eq 0 || $con2 -eq 0 ]]

then

        exit 1

else

        exit 0

fi


weight计算参考:https://www.cnblogs.com/arjenlee/p/9258188.html


其他文章