简易的 keepalived 部署文档
参考文档:keepalived搭建zabbix server双机高可用
# 安装
yum install keepalived -y
yum install psmisc -y
# 启动
/usr/sbin/keepalived -D
# 关闭
pgrep keepalived |xargs kill -15
# 启动
systemctl start keepalived.service
# 停止
systemctl stop keepalived.service
在/etc/keepalived
下新增脚本 check.sh
#!/bin/bash
workers=`ps -C 1 --no-header | wc -l`
if [workers -gt 0 ];then
exit 0
else
exit 1
fi
并添加执行权限 chmod +x /etc/keepalived/check.sh
在 zabbix-01
(主)中添加配置文件/etc/keepalived/keepalived.conf
,千万记得根据实际情况修改vip,和网卡名
! Configuration File for keepalived
global_defs {
router_id zabbix-01 #router_id 机器标识,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到。
}
vrrp_script chk_zabbix {
script "/etc/keepalived/chk_zabbix.sh"
interval 2
weight -10
fall 2 #尝试两次都成功才成功
rise 2 #尝试两次都失败才失败
}
vrrp_instance VI_1 { #vrrp实例定义部分
state MASTER #设置lvs的状态,MASTER和BACKUP两种,必须大写
interface eth1 #设置对外服务的接口
virtual_router_id 88 #设置虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示
priority 100 #定义优先级,数字越大优先级越高,在一个vrrp——instance下,master的优先级必须大于backup
nopreempt
advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码
auth_type PASS #主要有PASS和AH两种
auth_pass 2345 #验证密码,同一个vrrp_instance下MASTER和BACKUP密码必须相同
}
virtual_ipaddress { #设置虚拟ip地址,可以设置多个,每行一个
219.157.114.206/24 dev eth1 label eth1:0
}
track_interface {
eth1
}
track_script {
chk_zabbix
}
notify_master "service zabbix-server start" #指定当切换到master时,执行的脚本
notify_backup "service zabbix-server stop" #指定当切换到backup时,执行的脚本
}
在 zabbix-02 (备)中添加配置文件
/etc/keepalived/keepalived.conf`
! Configuration File for keepalived
global_defs {
router_id zabbix-02 #router_id 机器标识,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到。
}
vrrp_script chk_zabbix {
script "/etc/keepalived/chk_zabbix.sh"
interval 2
weight -10
fall 2 #尝试两次都成功才成功
rise 2 #尝试两次都失败才失败
}
vrrp_instance VI_1 { #vrrp实例定义部分
state BACKUP #设置lvs的状态,MASTER和BACKUP两种,必须大写
interface eth1 #设置对外服务的接口
virtual_router_id 88 #设置虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示
priority 95 #定义优先级,数字越大优先级越高,在一个vrrp——instance下,master的优先级必须大于backup
advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码
auth_type PASS #主要有PASS和AH两种
auth_pass 2345 #验证密码,同一个vrrp_instance下MASTER和BACKUP密码必须相同
}
virtual_ipaddress { #设置虚拟ip地址,可以设置多个,每行一个
219.157.114.206/24 dev eth1 label eth1:0
}
track_script {
chk_zabbix
}
notify_master "service zabbix-server start" #指定当切换到master时,执行的脚本
notify_backup "service zabbix-server stop" #指定当切换到backup时,执行的脚本
}
设置日志输出文件
keepalived
默认是没有输出日志的,需要配置一下。
修改keepalived配置文件 /etc/sysconfig/keepalived
,如下
KEEPALIVED_OPTIONS="-D -d -S 0"
修改rsyslog
配置文件 /etc/rsyslog.conf
# keepalived -S 0
local0.* /var/log/keepalived.log
重启服务
systemctl restart rsyslog
systemctl restart keepalived
脚本文件
chk_zabbix.sh
放置于 /etc/keepalived
,注意脚本里vip的网卡名要正确填写。
#!/bin/bash
workers=`ps -C zabbix_server --no-header | wc -l`
is_vip=`ifconfig eth0:0 | grep inet | wc -l`
if [ workers == 0 -ais_vip == 1 ];then
/bin/systemctl restart zabbix-server.service
sleep 1
workers=`ps -C zabbix_server --no-header | wc -l`
if [ workers == 0 -ais_vip == 1 ];then
exit 1
fi
exit 0
else
exit 0
fi
这个脚本保证了,两个节点上,始终只会有一个节点运行zabbix-server。防止zabbix的数据库脑裂。
主要有以下两种情况
- 单台节点宕机(可以关闭keepalived服务模拟,也可以关机)
- 双台节点宕机(不管是哪一台先启)