Перейти к содержанию

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

TeamStorm использует:

  • 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.0
listen_port = 6432
auth_file = /etc/pgbouncer/userlist.txt
auth_type = scram-sha-256
auth_query = SELECT usename, passwd FROM pg_shadow WHERE usename=$1
auth_user = postgres

pool_mode = transaction
max_client_conn = 10000
default_pool_size = 100
min_pool_size = 0
ignore_startup_parameters = extra_float_digits
so_reuseport = 1

# Log settings
admin_users = postgres

# Connection sanity checks, timeouts
server_reset_query = DISCARD ALL
server_lifetime = 3600
server_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