- 问题描述:
在一次部署PostgreSQL12.3流复制+pgpool-ii 4.1.4高可用集群的时候,遇到了很奇怪的vip漂移问题:PostgreSQL主库down掉后,vip不会漂移到备库,但是当我把主库启动后,vip反而漂移到了备库。 - 解决思路:
第一反应就是failover_stream.sh切换脚本有问题,于是手动执行了一下脚本,发现这个脚本只是用来切换PostgreSQL数据库主、备角色的,VIP并没有发生什么变化;期间参考了百度十几种方法和建议,都没有解决这个问题。最终,我在PostgreSQL官网找到了答案,与大家分享。 - 问题排查:
其实这个问题是pgpool-ii 4.1.4配置文件参数导致的,我看了网上很多的部署教程,在配置pgpool的时候都没有注意这个地方,如下:
3.1.vi进入pgpool配置文件pgpool.conf,找到以下部分;
修改如下:
watchdog 发生故障后, 处理的相关配置(宕机, pgpool进程终止)
#- Watchdog consensus settings for failover –
failover_when_quorum_exists = on
failover_require_consensus = on
allow_multiple_failover_requests_from_node = on #默认off关闭
enable_consensus_with_half_votes = on #默认off关闭
网上很多教程,在配置这个模块的参数时都保持默认;其实这个模块是负责pgpool-ii节点仲裁的,watchdog(pgpool-ii节点)本身故障后,其他节点会执行仲裁,选取出一个主节点去请求vip;如果不配置, 主pgpool-i 节点关闭后, 可能不会漂移vip, 出现集群暂时不可访问的问题;
来源:oschina
链接:https://my.oschina.net/u/4397452/blog/4940129