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

Postgres walsender及PGBouncer连接TLS加密状态确认问题

问题解答

关于walsender进程未出现在pg_stat_ssl的原因

  • walsender默认不禁用加密:PostgreSQL的walsender进程会遵循postgresql.conf中的ssl = on配置,只要主库启用SSL,复制连接(walsender)就会自动使用SSL加密,除非在pg_hba.conf中针对复制连接明确设置ssl=off。
  • pg_stat_ssl仅显示活跃连接:该视图只记录当前处于活跃状态的客户端连接对应的进程。如果walsender没有活跃的复制任务(比如备库未发起连接、复制已中断),就不会出现在结果里。可以通过以下SQL关联验证活跃walsender的加密状态:
SELECT s.*, r.* FROM pg_stat_ssl s JOIN pg_stat_replication r ON s.pid = r.pid;

关于PGBouncer连接未出现在pg_stat_ssl的原因

  • pg_stat_ssl的范围限制:该视图仅记录直接连接到PostgreSQL的进程。PGBouncer作为连接池,是以客户端身份连接PostgreSQL的,所以你在PostgreSQL端看到的是PGBouncer到PostgreSQL的后端连接,而非外部客户端到PGBouncer的连接。
  • 验证PGBouncer与PostgreSQL的加密状态:你配置的server_tls_sslmode = require确实用于控制PGBouncer到PostgreSQL的连接加密,从PGBouncer日志中的SSL connection (protocol: TLSv1.3...)可以确认这部分连接已加密。也可以在PostgreSQL端通过以下SQL过滤验证:
SELECT * FROM pg_stat_ssl WHERE application_name = 'pgbouncer';
  • 外部客户端到PGBouncer的加密验证:client_tls_sslmode = require用于控制外部客户端与PGBouncer的连接加密,日志中的login attempt: ... tls=TLSv1.3/TLS_AES_256_GCM_SHA384已证明这部分加密正常。

补充说明

  • 你对PGBouncer SSL配置的理解是正确的:client_tls_*系列参数控制外部客户端与PGBouncer的SSL连接,server_tls_*系列参数控制PGBouncer与PostgreSQL后端的SSL连接。
  • 由于你仅启用TLS加密、未使用证书认证,当前无需配置client_tls_ca_file或server_tls_ca_file,现有配置符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:58:25