zabbix_server01:keepalived.conf文件范例:
! Configuration File for keepalived
global_defs { #全局配置
router_id znode1 #标识keepalived服务器的字符串,实现高可用时需要使用它标识节点,节点唯一
}
vrrp_script zabbix_check
{ #定义自动检查脚本
script "/etc/keepalived/zabbix_check.sh" #脚本路径
interval 2 #每两秒执行一次
weight -15 #当检查失败后,优先级 -15
fall 2 #连续失败两次为失败
rise 2 #连续成功两次为成功
}
vrrp_instance zabbix_server { #定义vrrp实例。一个配置文件中可以实现多实例。但不同主机上互为master<-->backup的实例名需相同
state MASTER #定义为master
interface ens192 #VIP绑定的网卡, 即接收或发送心跳通告的接口,即HA监测接口
virtual_router_id 88 #虚拟路由标识(VRID),同一实例该数值必须相同,即master和backup中该值相同#同一网卡上的不同vrrp实例,该值必须不能相同。取值范围0-255
priority 100 #优先级, 优先级最高的为master
advert_int 1 #心跳信息发送和接收时间间隔,单位为秒
authentication { #认证方式,同一实例中这个配置必须完全一样才可通过认证。只建议使用PASS认证
auth_type PASS
auth_pass test.com #最多支持8字符,超过8字符将只取前8字符
}
virtual_ipaddress { #设置的VIP。只有master节点才会设置。master出现故障后,VIP会故障转移到backup。
10.2.1.59
}
track_script {
zabbix_check #调用脚本检测
}
}
********************
编写脚本:
大意是查看zabbix_server01是否存活,若不存活,则关闭keepalived,切换到server02端
#!/bin/bash
# check zabbix_server01 is alived
# author by chuan
STATUS_1=`ps -C zabbix_server --no-header | wc -l`
if [ $STATUS_1 -eq 0 ];then
systemctl stop keepalived
fi
******************
zabbix_server02:keepalived.conf文件范例:
global_defs {
router_id znode2 #标识keepalived服务器的字符串,实现高可用时需要使用它标识节点,节点唯一
}
vrrp_script check_zabbix_server {
script "/etc/keepalived/check_zabbix_server.sh"
interval 2
weight -15
fall 2
rise 2
}
vrrp_instance zabbix_server {
state BACKUP
interface ens192
virtual_router_id 88 #虚拟路由标识(VRID),同一实例该数值必须相同,即与master一致
priority 90 #优先级为90,当master正常运行时,优先级为100,当master上的zabbix挂了,脚本检查不通过,优先级会减去15,变为85,此时backup优先级高于master,VIP会漂移到backup上
advert_int 1
authentication {
auth_type PASS
auth_pass test.com
}
virtual_ipaddress {
10.2.1.59
}
track_script {
check_zabbix_server
}
}
**********
脚本
#check zabbix_server is alived
# author by chuan
STATUS_1=`ps -C zabbix_server --no-header | wc -l`
if [ $STATUS_1 -eq 39 ];then
systemctl restart zabbix_server
fi
注释:39为zabbix_server进程号;根据实际情况查看