VK WorkSpace On-Premise logo
Помощь
Обновлена 9 ноября 2026 г. в 13:44

Использование внешней базы

Проекты VK WorkSpace использует:

  • postgresql - для миграций и инициализации tenant сервиса;
  • pgbouncer - для доступа микросервисов к базе;

Мы рекомендуем использовать внешнюю базу в связке с внешним pgbouncer.

Чтобы использовать внешнюю базу укажите в env:

POSTGRES_USER="postgres"POSTGRES_PASSWORD="password"POSTGRES_PORT="5432"POSTGRES_HOST="database_service"PGBOUNCER_PORT="6432"PGBOUNCER_HOST="pgbouncer"

PGBouncer из комплекта поставки использует для инициализации покдлючения к базе auth_query:

auth_query = SELECT usename, passwd FROM pg_shadow WHERE usename=\$1

Для этого должны быть права доступа к этой таблице у учетной записи:

POSTGRES_USER="postgres"POSTGRES_PASSWORD="password"

По умолчанию учетная запись используется scram-sha-256, ее можно переопределить дополнительно, передав:

pgbouncer:  environment:    PGBOUNCER_AUTH_TYPE: "scram-sha-256"

Вы можете переопределить полностью все настройки в pgbouncer.ini и userlist.txt, для этого в каталоге с проектом необходимо создать 2 файла ./configs/pgbouncer.ini и ./configs/userlist.txt.

pgbouncer.ini - настройки pgbouncer, например:

#pgbouncer.ini[databases]* = host=database_service port=5432[pgbouncer]listen_addr = 0.0.0.0listen_port = 6432auth_file = /etc/pgbouncer/userlist.txtauth_type = scram-sha-256auth_query = SELECT usename, passwd FROM pg_shadow WHERE usename=$1auth_user = postgrespool_mode = transactionmax_client_conn = 10000default_pool_size = 100min_pool_size = 0ignore_startup_parameters = extra_float_digitsso_reuseport = 1# Log settingsadmin_users = postgres# Connection sanity checks, timeoutsserver_reset_query = DISCARD ALLserver_lifetime = 3600server_idle_timeout = 60

userlist.txt - список пользователей, у которых есть доступ к базе, например

"postgres" "SCRAM-SHA-256$4096:XnvQEUPvdGrMPYNYXOf0fg==$kgehLmaFN0VOaKXOtOuATAxq6PUcBdaOsyWlcc/+lCg=:bFyTEFDUX4zXfmdUZQyBixbbL85jjWWYFMrCZK31QNc="

после в docker compose добавить их для pgbouncer

pgbouncer:  volumes:    - ./configs/pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini    - ./configs/userlist.txt:/etc/pgbouncer/userlist.txt

Технический писатель: Белова Ирина

Была ли статья полезна?