近期在研究实证PG+Keepalived构建高可用集群时,在验证keepalived自动实现主库故障自动切换中,遇到keepalived触发vrrp_script脚本调用一直不正常。即如下图情况所示:
开始怀疑是shell脚本有问题,导致不能正常执行。于是我采取下列步骤处理:
1).简化shell脚本内容,只保留echo显示语句,然后手工执行shell脚本验证是否正常。
2).重新启动keepalived服务和停用pg主库服务,触发监测脚本,结果还是依然不能正常执行。
3).经过这些排查后而且手工执行脚本都正常的,基本上排除是因shell脚本问题这块。
4).于是检查看目前装的keepalived版本,发现版本是如下:
查看keepalived版本,rpm -qa|grep -i keepalived,发现是:
keepalived-1.3.5-16.el7.x86_64
5).该版本比较旧了,而且centos默认是安装它,想起自己是用rpm方式安装的,怀疑可能是版本问题导致不能正常调用执行shell脚本中的内容。
6).重新卸载旧版本,通过源码安装新的keepalived-2.0.18,具体操作可参考官方说明。
7).重新配置keepalived.conf,检测是否运行正常。然后停止pg主库,检查是否已经正常触发调用。结果执行正常且自动实现故障转移。如下图keepalived状态: