多个端口上的 pgBouncer?
Posted
技术标签:
【中文标题】多个端口上的 pgBouncer?【英文标题】:pgBouncer on Multiple Ports? 【发布时间】: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"?
任何建议(除了“更新遗留代码库”,这是作为最后的手段保留)?
【问题讨论】:
【参考方案1】:您不能让 pgbouncer 监听多个端口。因此,使用操作系统工具转发端口是正确的方法。我不是iptables
的专家,因此我无法评论您的尝试。
另一种方法是在一个主机上运行多个 pgbouncer 实例。
【讨论】:
【参考方案2】:您的 iptables 在我看来还不错,但不要忘记启用 ip 转发:
sysctl net.ipv4.ip_forward=1
【讨论】:
【参考方案3】:这篇文章很老了,但值得一提的是,在我们的商店中,我们通过为重定向端口创建软链接解决了这个问题。所以在你的情况下:
/tmp/.s.PGSQL.6432 --> /tmp/.s.PGSQL.5432
【讨论】:
以上是关于多个端口上的 pgBouncer?的主要内容,如果未能解决你的问题,请参考以下文章