Keepalived VRRP-Script抢占延迟VIP单播详解

Posted 林炜玮_51CTO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keepalived VRRP-Script抢占延迟VIP单播详解相关的知识,希望对你有一定的参考价值。

Keepalivedkeepalived利用VRRP Script 技术 调用外部的辅助脚本进行资源监控,并根据监控的结果实现优先动态调整,从而实现其它应用的高可用性功能

VRRP Script 配置

定义脚本

vrrp_script:自定义资源监控脚本,vrrp实例根据脚本返回值,公共定义,可被多个实例调用,定义在vrrp实例之外的独立配置块,一般放在global_defs设置块之后。

vrrp_script <SCRIPT_NAME> 
script <STRING>|<QUOTED-STRING> #此脚本返回值为非0时,会触发下面OPTIONS执行
OPTIONS

通常此脚本用于监控指定应用的状态。一旦发现应用的状态异常,则触发对MASTER节点的权重减至低于SLAVE节点,从而实现 VIP 切换到 SLAVE 节点

调用脚本

track_script:调用vrrp_script定义的脚本去监控资源,定义在VRRP实例之内,调用事先定义的vrrp_script

track_script 
SCRIPT_NAME_1
SCRIPT_NAME_2

定义 VRRP script

vrrp_script <SCRIPT_NAME>  #定义一个检测脚本,在global_defs 之外配置
script <STRING>|<QUOTED-STRING> #shell命令或脚本路径
interval <INTEGER> #间隔时间,单位为秒,默认1秒
timeout <INTEGER> #超时时间
weight <INTEGER:-254..254> #默认为0,如果设置此值为负数,当上面脚本返回值为非0时,会将此值与本节点权重相加可以降低本节点权重,即表示fall. 如果是正数,当脚本返回值为0,会将此值与本节点权重相加可以提高本节点权重,即表示 rise.通常使用负值
fall <INTEGER> #执行脚本连续几次都失败,则转换为失败,建议设为2以上
rise <INTEGER> #执行脚本连续几次都成功,把服务器从失败标记为成功
user USERNAME [GROUPNAME] #执行监测脚本的用户或组
init_fail #设置默认标记为失败状态,监测成功之后再转换为成功状态

调用 VRRP script

vrrp_instance VI_1 

track_script
chk_down

抢占延迟模式 preempt_delay

抢占延迟模式,即优先级高的主机恢复后,不会立即抢回VIP,而是延迟一段时间(默认300s)再抢回VIP

preempt_delay # #指定抢占延迟时间为#s,默认延迟300s
注意:需要各keepalived服务器state为BACKUP,并且不要启用 vrrp_strict

范例:
#ha1主机配置
vrrp_instance VI_1
state BACKUP #都为BACKUP
interface eth0
virtual_router_id 66
priority 100 #优先级高
advert_int 1
preempt_delay 60 #抢占延迟模式,默认延迟300s
#ha2主机配置
vrrp_instance VI_1
state BACKUP #都为BACKUP
interface eth0
virtual_router_id 66
priority 80 #优先级低
advert_int 1

VIP单播配置

默认keepalived主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量

#在所有节点vrrp_instance语句块中设置对方主机的IP,建议设置为专用于对应心跳线网络的地址,而非使用业务网络
unicast_src_ip <IPADDR> #指定发送单播的源IP
unicast_peer
<IPADDR> #指定接收单播的对方目标主机IP
......

以上是关于Keepalived VRRP-Script抢占延迟VIP单播详解的主要内容,如果未能解决你的问题,请参考以下文章

keepalived 非抢占模式

Keepalived非抢占模式配置

keepalived抢占VIP(单播模式解决)

Keepalived的不(非)抢占模式#yyds干货盘点#

Keepalived+Nginx实现高可用(HA)

Keepalived+Nginx实现高可用(HA)