Тайм-аут соединения psql с pgbouncer - PullRequest
0 голосов
/ 07 ноября 2018

У меня 3 сервера PostgreSQL v 9.6, работающих на порту 5432 в кластере repmgr - 1 основной и 2 резервных. У меня также есть сервер pgbouncer с запущенным и прослушивающим pgbouncer 1.8.1 портом 6432.

Мы будем использовать pgbouncer для приложений, чтобы прозрачно подключаться к первичному серверу - в случае сбоя файл pgbouncer.database.ini будет автоматически обновлен, чтобы указывать на новый первичный сервер, а затем pgbouncer будет перезапущен.

Моя проблема в том, что я не могу выполнить команду psql с моего сервера PostgreSQL, чтобы иметь возможность выполнять консольные команды pgbouncer (извиняюсь, если моя терминология не совсем верна) - я продолжаю получать тайм-аут:

Как пользователь postgres на основном сервере PostgreSQL:

-bash-4.1$ psql -h <pgbouncer servername> -p 6432 -U pgbouncer -d pgbouncer
psql: could not connect to server: Connection timed out
        Is the server running on host "<pgbouncer servername>" (xxx.xxx.xxx.xxx) and accepting
        TCP/IP connections on port 6432?

Я уточнил у нашего брандмауэра, и он сказал, что серверы находятся в одном и том же vlan, поэтому между ними нет брандмауэра, и они должны иметь возможность свободно общаться друг с другом.

Я установил pgbouncer и затем настроил следующие файлы:

/ и т.д. / pgbouncer / pgbouncer.ini:

[databases]
%include /etc/pgbouncer/pgbouncer.database.ini
[pgbouncer]
logfile = /var/log/pgbouncer/pgbouncer.log
pidfile = /var/run/pgbouncer/pgbouncer.pid
listen_addr = *
listen_port = 6432
client_tls_sslmode = require
client_tls_key_file = /home/pgbouncer/server.key
client_tls_cert_file = /home/pgbouncer/server.crt
client_tls_ca_file = /home/pgbouncer/server_ca.crt
server_tls_sslmode = require
auth_type = md5
auth_file = /etc/pgbouncer/pgb_userlist.txt
admin_users = postgres, pgbouncer
stats_users = stats, postgres, pgbouncer
pool_mode = session
server_reset_query = DISCARD ALL
max_client_conn = 100
default_pool_size = 20
reserve_pool_size = 5
reserve_pool_timeout = 3

/ и т.д. / pgbouncer / pgbouncer.database.ini:

[databases]
postgres = host=<primary servername> dbname=postgres
test_db = host=<primary servername> dbname=test_db auth_user=user_test

/ и т.д. / pgbouncer / pgb_userlist.txt:

"user_test" "md5..."
"postgres" "md5..."

Затем я запустил pgbouncer с этой командой:

pgbouncer -d /etc/pgbouncer/pgbouncer.ini

Файл журнала показывает:

2018-11-07 10:24:23.808 23193 LOG File descriptor limit: 1024 (H:4096), max_client_conn: 100, max fds possible: 430
2018-11-07 10:24:23.811 23195 LOG listening on 0.0.0.0:6432
2018-11-07 10:24:23.811 23195 LOG listening on ::/6432
2018-11-07 10:24:23.811 23195 LOG listening on unix:/tmp/.s.PGSQL.6432
2018-11-07 10:24:23.811 23195 LOG process up: pgbouncer 1.8.1, libevent 2.0.21-stable (epoll), adns: c-ares 1.10.0, tls: OpenSSL 1.0.1e-fips 11 Feb 2013

Если я пытаюсь выполнить команду psql с сервера pgbouncer, я получаю следующую ошибку:

[pgbouncer@<pgbouncer servername> ~]$ psql -p 6432 pgbouncer
-bash: psql: command not found

Я что-то упустил, когда настроил свои серверы? Я настроил свои серверы на основе рекомендаций от коллеги, у которого его серверы настроены таким образом, и у него нет проблем. Но он не может помочь мне заставить меня работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...