keepalived利用 VRRP Script 技术,可以调用外部的辅助脚本进行资源监控,并根据监控的结果实现优先 动态调整,从而实现其它应用的高可用性功能。
一、VRRP Script 配置
1、定义脚本
vrrp_script:自定义资源监控脚本,vrrp实例根据脚本返回值,公共定义,可被多个实例调用,定 义在vrrp实例之外的独立配置块,一般放在global_defs设置块之后。
通常此脚本用于监控指定应用的状态。一旦发现应用的状态异常,则触发对MASTER节点的权重减至 低于SLAVE节点,从而实现 VIP 切换到 SLAVE 节点。
vrrp_script <SCRIPT_NAME> {
script <STRING> | <QUOTED-STRING>
OPTIONS
}
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 #设置默认标记为失败状态,监测成功之后再转换为成功状态
}
2、调用脚本
track_script:调用vrrp_script定义的脚本去监控资源,定义在VRRP实例之内,调用事先定义的 vrrp_script
track_script {
SCRIPT_NAME_1
SCRIPT_NAME_2
}
vrrp_instance test {
... ...
track_script {
check_down
}
}
二、Keepalived+Haproxy高可用实现步骤
1、在ka1和ka2先实现haproxy的配置
(1)在ka1和ka2安装haproxy
yum install haproxy -y
(2)在ka1和ka2编辑haproxy.cfg配置文件
vim /etc/haproxy/haproxy.cfg
2、在ka1和ka2启用内核参数
3、在ka1和ka2编写检测脚本
[root@ka1 ~]# vim /etc/keepalived/haproxy.sh
#!/bin/bash
killall -0 haproxy
[root@ka1 ~]# chmod +X /etc/keepalived/haproxy.sh
[root@ka2 ~]# vim /etc/keepalived/haproxy.sh
#!/bin/bash
killall -0 haproxy
[root@ka2 ~]# chmod +X /etc/keepalived/haproxy.sh
killall -0 haproxy主要用于检查haproxy进程是否正在运行,但不会真正终止它。如果haproxy进程正在运行,该命令会返回成功(通常为 0 状态码);如果 haproxy 进程未运行,该命令会返回失败(非 0 状态码)。
4、在ka1和ka2配置keepalived
ka1:
ka2:
3、测试
当ka1和ka2的keepalived服务和haproxy服务都开启时:
当ka1关闭haproxy服务:
当ka2关闭haproxy服务,ka1开启haproxy服务: