Postgresql

pgbouncer 和 ssl 連接

  • August 16, 2016

我有三台伺服器,其中兩台執行 postgres 9.5.3,第三台執行 pgbouncer 1.7.2。

我可以通過 pgbouncer 訪問兩個 postgresql 實例之一,這一切都很完美。其他 postgresql 伺服器,我們稱它為 P1 不在我的控制之下,我必須使用 ssl 連接所以它得到了,因此以下行被添加到這個伺服器 pga_hba.conf

hostssl    all       all             ###.###.###.###/32               md5

我可以使用 psql 從 pgbouncer 伺服器連接到 P1 沒有問題。但是當我通過 pgbouncer 連接到 P1 時,我收到此錯誤消息

psql: ERROR:  no pg_hba.conf entry for host "XXX.XXX.XXX.XXX", user "myuser", database "mydb", SSL off

這是我的 pgbouncer.ini

[databases]
my_database = host=xxx.xxx.xxx.xxxx port=5432 dbname=mydb user=myuser password=mypassword client_encoding='UTF8'

[pgbouncer]
listen_addr = *
listen_port = 5432
auth_type = md5 

auth_file = /etc/pgbouncer/userlist.txt
logfile = /var/log/postgresql/pgbouncer.log
pidfile = /var/run/postgresql/pgbouncer.pid

admin_users = rms_admin 

pool_mode = session

server_reset_query = DISCARD ALL
server_check_query = select 1

default_pool_size = 40

stats_period=300

log_pooler_errors = 1

我已經嘗試在 my_database 的連接字元串上添加sslmode=require並結合ignore_startup_parameters但這導致 pgbouncer 日誌中出現以下錯誤。

ERROR skipping database my_database because of unknown parameter in connstring: sslmode

我怎樣才能讓 pgbouncer 建立一個 ssl 連接?

pgbouncer 和伺服器之間的 TLS 不是通過連接字元串啟用的,而是server_tls_sslmode通過預設禁用的。

它應該設置為至少prefer,並且server_tls_*可能還需要其他一些參數,具體取決於另一端的 TLS 配置。

有關所有詳細資訊,請參閱https://pgbouncer.github.io/config.html#tls-settings

引用自:https://dba.stackexchange.com/questions/146898