用于Postgresql 9.6的pgpool HA + repmgr

时间:2017-12-04 14:28:34

标签: postgresql pgpool repmgr

我试图在我的postgresql环境(2个postgresql服务器+ 1个pgpool)中对pgpool进行压缩以执行HA,而repmgr负责复制。

我在日志中收到了下一条消息:

017-12-03 19:27:07: pid 19033: DEBUG:  pool_flush_it: flush size: 0
2017-12-03 19:27:07: pid 19033: DEBUG:  pool_read: read 103 bytes from     backend 1
2017-12-03 19:27:07: pid 19033: ERROR:  failed to authenticate
2017-12-03 19:27:07: pid 19033: DETAIL:  password authentication failed for user "nobody"
2017-12-03 19:27:07: pid 19033: DEBUG:  find_primary_node: no primary node found
2017-12-03 19:27:08: pid 19033: LOG:  find_primary_node: checking backend no 0
2017-12-03 19:27:08: pid 19033: DEBUG:  SSL is requested but SSL support is     not available 
2017-12-03 19:34:27: pid 22132: ERROR:  unable to read data from DB node 1
2017-12-03 19:34:27: pid 22132: DETAIL:  EOF encountered with backend
2017-12-03 19:28:27: pid 19033: DEBUG:  find_primary_node: no primary node found

pool_hba.conf:

TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         all                               trust
host    all         all      127.0.0.1/32             trust
host    all         all      ::1/128                  trust

在postgresql pg_hba.conf中我启用了pgpool服务器的连接:

####pgpool####
host   all all 172.22.13.170/32 trust

1.问题是什么?

2.如果repmgr负责复制,我应该将参数backend_flag设置为' DISALLOW_TO_FAILOVER'?

感谢。

1 个答案:

答案 0 :(得分:0)

我只是要了解repmgr和pgpool,但我认为这里存在多个问题:

1)您的pgpool.conf具有一些默认设置,可以进行实时检查,并且该用户的用户名是“ nobody”,因此要使其正常工作,您需要创建一个具有该名称的pgsql用户,以便pgpool可以查询所有主机查找当前的母版。

2)pgpool执行脚本来更改哪个是主服务器等,并且该脚本通常只在故障转移时运行repmgr命令来提升新的主服务器,因此我认为不需要DISALLOW_TO_FAILOVER。

如果repmgr将进行故障转移,那么您的问题1将使pgpool仍然找到哪个新的主服务器,但是在那种情况下,我将把repmgr配置为不自动进行故障转移(因为他们可以为谁应该做什么而斗争。)