【问题标题】:pgBouncer on Multiple Ports?多个端口上的 pgBouncer?
【发布时间】:2018-09-07 14:05:48
【问题描述】:

我在 5432 上运行 Postgres 数据库,在 6432 上运行 pgBouncer。

我所有的脚本都指向 6432,但我们有一个指向 5432 的大型遗留代码库,我们也希望拥有用户 pgBouncer。

我们想出的最佳方法是在 4432 上运行 Postgres,在 5432 和 6432 上运行 pgBouncer。不幸的是,我们只能找到一种方法让 pbBouncer 在一个端口上侦听。

是否可以让 pgBouncer 监听两个端口?

我们也尝试过使用 IPTables 将 6432 透明转发到 5432,但没有成功:

sudo iptables -t nat -I PREROUTING -p tcp --dport 6432 -j REDIRECT --to-ports 5432
sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport 6432 -j REDIRECT --to-ports 5432

还是报这个错:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.6432"?

任何建议(除了“更新遗留代码库”,这是作为最后的手段保留)?

【问题讨论】:

    标签: linux postgresql port iptables pgbouncer


    【解决方案1】:

    您不能让 pgbouncer 监听多个端口。因此,使用操作系统工具转发端口是正确的方法。我不是iptables 的专家,因此我无法评论您的尝试。

    另一种方法是在一个主机上运行多个 pgbouncer 实例。

    【讨论】:

      【解决方案2】:

      您的 iptables 在我看来还不错,但不要忘记启用 ip 转发:

      sysctl net.ipv4.ip_forward=1
      

      【讨论】:

        【解决方案3】:

        这篇文章很老了,但值得一提的是,在我们的商店中,我们通过为重定向端口创建软链接解决了这个问题。所以在你的情况下:

        /tmp/.s.PGSQL.6432 --> /tmp/.s.PGSQL.5432
        

        【讨论】:

          猜你喜欢
          • 2013-01-18
          • 1970-01-01
          • 1970-01-01
          • 2013-08-06
          • 2011-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-22
          相关资源
          最近更新 更多