Postgresql
pgbouncer 和 ssl 連接
我有三台伺服器,其中兩台執行 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。