PGBouncer — программа, управляющая пулом соединений PostgreSQL. Любое конечное приложение может подключиться к PGBouncer, как если бы это был непосредственно сервер PostgreSQL. PGBouncer создаст подключение к реальному серверу, либо задействует одно из ранее установленных подключений.
Назначение PGBouncer — минимизировать издержки, связанные с установлением новых подключений к PostgreSQL. Вы также можете ознакомиться с руководством в официальной документации PGBouncer.
Установка состоит из пяти этапов:
- Установка PGBouncer.
- Настройка PGBouncer.
- Добавление пользователей.
- Задание LimitNOFILE в файле pgbouncer.service.
- Подключение к PGBouncer.
Шаг 1: Установка PGBouncer
Установите PGBouncer на узел с PostgreSQL, используя следующую команду:
sudo apt-get install pgbouncer -y
Шаг 2: Настройка PGBouncer
- Переместите конфигурационный файл по умолчанию:
sudo mv /etc/pgbouncer/pgbouncer.ini{,.original}
- Создайте и откройте для редактирования новый конфигурационный файл:
sudo nano /etc/pgbouncer/pgbouncer.ini
- Добавьте пример конфигураций в файл:
[databases]
postgres = host=127.0.0.1 port=5432 dbname=elma365
* = host=127.0.0.1 port=5432
[pgbouncer]
logfile = /var/log/postgresql/pgbouncer.log
pidfile = /var/run/postgresql/pgbouncer.pid
listen_addr = *
listen_port = 6432
unix_socket_dir = /var/run/postgresql
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
admin_users = postgres
ignore_startup_parameters = extra_float_digits,geqo
pool_mode = session
server_reset_query = DISCARD ALL
max_client_conn = 10000
default_pool_size = 800
reserve_pool_size = 150
reserve_pool_timeout = 1
max_db_connections = 1000
pkt_buf = 8192
listen_backlog = 4096
log_connections = 0
log_disconnections = 0
где:
listen_addr
— список адресов через запятую, где прослушивать соединения TCP. Если вы установите*
, будут прослушивать все адреса;listen_port
— порт для прослушивания, по умолчанию установлено6432
;pool_mode
— режим работы;auth_type
— режим аутентификации пользователей;max_client_conn
— максимально допустимое количество клиентских подключений;default_pool_size
— размер пула открытых подключений к базам данных;reserve_pool_size
— размер резервного пула открытых подключений к базам данных;max_db_connections
— максимально допустимое количество открытых подключений к базам данных;[databases]
— определяет имена баз данных, к которым могут подключаться клиенты PgBouncer. Указывает, куда будут маршрутизироваться эти подключения.
Настройка включения TLS/SSL в PGBouncer
Для включения поддержки TLS/SSL в PGBouncer дабавьте в файл конфигурации
[databases] Подробнее о настройке TLS/SSL в PGBouncer читайте в официальной документации PGBouncer. |
Шаг 3: Добавление пользователей
Добавьте в файл /etc/pgbouncer/userlist.txt
имена пользователей и пароли, с которыми PGBouncer подключается к базе. Для этого:
- Создайте файл
userlist.txt
, выполнив команду:
sudo nano /etc/pgbouncer/userlist.txt
- Добавьте в файл
userlist.txt
пользователя и пароль для подключения к PostgreSQL. Пользователь elma365 был ранее создан при развёртывании PostgreSQL. Подробнее об этом читайте в статьях «PostgreSQL» и «Кластер PostgreSQL».
"elma365" "SecretPassword"
Шаг 4: Задание LimitNOFILE в файле pgbouncer.service
Добавьте в файл сервиса PGBouncer в секцию Service параметр LimitNOFILE
.
- Откройте файл
/lib/systemd/system/pgbouncer.service
, выполнив команду:
sudo nano /lib/systemd/system/pgbouncer.service
- Задайте лимит на открытие файлов
LimitNOFILE
равным15000
.
Пример добавления LimitNOFILE в pgbouncer.service
[Unit] |
- Перезапустите PGBouncer, выполнив команду:
sudo systemctl daemon-reload
sudo systemctl restart pgbouncer
Шаг 5: Подключение к PGBouncer
Строка подключения к PGBouncer:
postgresql://elma365:SecretPassword@<postgresql-server-address>:6432/elma365?sslmode=disable
Строка подключения к PGBouncer с TLS/SSL:
postgresql://elma365:SecretPassword@<postgresql-server-address>:6432/elma365?sslmode=require