You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置pgBouncer监听多个端口?PostgreSQL端口适配需求

如何让pgBouncer同时监听5432和6432端口

没问题!pgBouncer本身就支持同时监听多个端口,而且配置非常直接,另外我也会帮你梳理一下IPTables转发的正确配置,解决你之前尝试没成功的问题。

方案一:pgBouncer原生多端口配置(推荐)

pgBouncer的配置文件(通常是/etc/pgbouncer/pgbouncer.ini)支持直接指定多个监听端口,步骤如下:

  1. 打开pgBouncer配置文件,找到listen_port配置项,将其修改为包含两个端口的列表,用逗号分隔:

    listen_port = 5432,6432
    

    如果需要绑定特定IP地址(比如只允许本地访问或者特定网段),可以同时配置listen_addr:

    listen_addr = 0.0.0.0  # 允许所有IP访问,也可以指定具体IP如127.0.0.1
    listen_port = 5432,6432
    
  2. 保存配置文件后,重启pgBouncer服务(注意:端口修改需要重启,仅reload配置不会生效):

    # 基于systemd的系统
    sudo systemctl restart pgbouncer
    # 或者用pgBouncer自身的管理命令(如果已配置)
    pgbouncer -d /etc/pgbouncer/pgbouncer.ini -R
    
  3. 验证端口监听情况,用ss或netstat命令:

    ss -tulpn | grep pgbouncer
    

    输出应该会显示pgBouncer同时监听5432和6432两个端口。

方案二:IPTables端口转发(临时过渡方案)

如果因为某些原因暂时无法修改pgBouncer配置,IPTables转发也是可行的,你之前没成功可能是缺少了本地流量转发的规则。以下是正确的配置步骤:

假设当前pgBouncer监听6432端口,需要将5432端口的流量转发到6432:

  1. 添加PREROUTING规则,转发外部来的5432流量到6432:

    sudo iptables -t nat -A PREROUTING -p tcp --dport 5432 -j DNAT --to-destination :6432
    
  2. 添加OUTPUT规则,转发本地进程访问5432的流量到6432(这一步很重要,因为PREROUTING不处理本地发起的连接):

    sudo iptables -t nat -A OUTPUT -p tcp --dport 5432 -j DNAT --to-destination :6432
    
  3. 允许5432端口的入站流量:

    sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
    
  4. 保存IPTables规则,确保重启后不会丢失:

    # Debian/Ubuntu系统
    sudo netfilter-persistent save
    # RHEL/CentOS系统
    sudo iptables-save > /etc/sysconfig/iptables
    

方案对比

  • 原生多端口配置:更直接、易维护,不需要依赖额外的防火墙规则,是首选方案。只要你的pgBouncer版本不是特别老旧(v1.7及以上都支持),都可以用这个方法。
  • IPTables转发:适合临时过渡场景,比如需要快速生效但暂时不想重启pgBouncer服务,不过长期来看不如原生配置清晰。

内容的提问来源于stack exchange,提问作者user1517922

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:41:13