【发布时间】:2020-04-30 07:58:26
【问题描述】:
我正在尝试为 Postgresql 流复制集群设置 pgpool 负载平衡器。
我在 Debian 10.2(最新稳定版)上使用来自 Postgresql 存储库 https://apt.postgresql.org/pub/repos/apt/ 的 postgresql-12 和 pgpool2-4.1.0。
我已经使用物理插槽(不是 WAL 传送)设置了带有流复制的 Postgresql 集群,并且一切似乎都运行正常。辅助节点连接复制数据没有任何问题。
然后我在同一台服务器上安装了 pgpool2-4.1.0。我已经根据 pgpool wiki 对 pgpool.conf 进行了适当的修改,并启用了看门狗进程。
当我启动 pgpool 时,在所有三个节点上,我可以看到 watchdog 工作正常,quorum 存在并且 pgpool 选择了一个 master(pgpool 节点),它也从配置中启用了虚拟 IP。
我可以通过 pgpool 连接到 postgres 后端并成功发出读写命令。
问题出现在 pgpool 日志中,从 syslog 中,我得到:
Jan 13 15:10:30 debian10 pgpool[9826]: 2020-01-13 15:10:30: pid 9870: LOG: failed to connect to PostgreSQL server on "pg1:5433", getsockopt() detected error "Connection refused"
Jan 13 15:10:30 debian10 pgpool[9826]: 2020-01-13 15:10:30: pid 9870: LOCATION: pool_connection_pool.c:680
在检查上面提到的 PID 时,我得到了 pgpool healthcheck 进程。一世 pg1、pg2、pg3 是侦听端口 5433 上所有地址的数据库服务器,pg1 是主服务器。 pgpool 监听 5432。
用于健康检查的数据库用户是“pgpool”,我已验证我可以使用该用户从特定子网上的所有主机连接到数据库。
当我禁用运行状况检查时,问题就消失了,但没有达到目的。 有什么想法吗?
【问题讨论】:
标签: postgresql high-availability pgpool