【问题标题】:pgpool-II Session to Watchdog Delegate Ip Terminated When Either Primary or Standby Node Failed当主节点或备用节点发生故障时,pgpool-II 与看门狗委托 IP 的会话终止
【发布时间】:2020-05-28 07:54:57
【问题描述】:

我正在尝试设置两个节点(主节点和备用节点)的 postgres 集群。为了激活自动故障转移,我使用了 pgpool-II。

我关注了以下文章:https://www.pgpool.net/docs/41/en/html/example-cluster.html 我所做的唯一不同是安装 postgresql 版本 12 而不是版本 11。

知道我正在尝试在 VMware 上使用两个 centos7 映像。我遇到了以下问题:

当我在两个节点上运行 systemctl status pgpool.service 时,它​​返回了成功。 我也可以使用看门狗代理 IP 访问 postgresql。

但是什么测试故障转移,一切都出错了。

场景 1:

  1. 我使用看门狗委托 Ip 访问了我的数据库。

  2. 我断开了备用服务器。

结果:我与 postgresql 的会话继续工作了不到一分钟,然后就失败了。并且我无法再次连接,直到我重新连接备用节点并重新启动 pgpool 服务。

场景 2:

  1. 我使用看门狗委托 Ip 访问了我的数据库。

  2. 我断开主服务器。

结果:我的会话直接停止了。并且备用服务器没有提升为主服务器。

我注意到一些事情(可能与上述问题有关):当我尝试运行以下命令时 psql 192.168.220.146 -p 9999 -U postgres -c "show pool_nodes"

它无法工作并返回以下内容:

psql:错误:无法连接到服务器:无法连接到服务器:没有这样的文件或目录 服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.9999”上的连接

但是,如果我运行: psql 192.168.220.160 -p 5432 -U postgres 它工作正常,我可以访问 postgres shell。

我的 pool_hba 文件:

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all         all         ::1/128               trust

host    all         pgpool           0.0.0.0/0                   scram-sha-256
host    all         postgres         0.0.0.0/0                   scram-sha-256

任何帮助将不胜感激。

【问题讨论】:

  • 你能分享一下你的 pool_hba.conf 吗?
  • @richyen 我编辑了我的帖子,我已经修复了 pool_hba.conf 问题,因为我使用了错误的 IP 而不是 (0.0.0.0/0),现在旧错误消失了,但我得到另一个! psql:错误:无法连接到服务器:无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受Unix域套接字“/var/run/postgresql/.s.PGSQL.9999”上的连接跨度>
  • 你能确认你的listen_addresses对于Postgres和pgpool都设置为'*'吗?
  • 是的,两者都设置为'*'
  • 我有一个非常相似的问题。 (stackoverflow.com/questions/61739146/…) 你找到解决办法了吗?

标签: postgresql high-availability failover pgpool failovercluster


【解决方案1】:

我关注了以下文章:https://www.pgpool.net/docs/41/en/html/example-cluster.html,唯一不同的是我安装了 postgresql 版本 11。

我没有 ping delegate_IP = '192.168.1.233'。我可以帮你吗?

谢谢。

【讨论】:

  • 你的问题到底是什么?
【解决方案2】:

您没有为 psql 提供 -h 参数来指定 IP 地址。因此,psql 正在尝试连接到 UNIX 域套接字并将命令中的 IP 地址视为数据库名称。

尝试在 IP 地址前加上 -h

psql -h 192.168.220.146 -p 9999 -U postgres -c "show pool_nodes"

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 2016-06-22
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多