Установка#
Установка компонента Pangolin Pooler на этапе развертывания продукта СУБД Pangolin может происходить:
автоматизированным способом с помощью Ansible-скриптов;
вручную по инструкции пошаговой установки.
При эксплуатации СУБД Pangolin, установка происходит с помощью поставляемого deb/rpm-пакета компонента.
Особенности поставки и установки#
Компонент поставляется deb/rpm-пакетом в формате
pangolin-pooler-{version_component}-{OS}.x86_64.rpm;Исполняемый файл компонента находится по пути:
/opt/pangolin-pooler/bin/pangolin-pooler;Может быть установлена только одна версия Pangolin Pooler;
Нумерация версии компонента начата с 1.1.0 после переименования с PgBouncer на Pangolin Pooler.
Последовательность выполнения#
Шаг 1. Установка пакета pangolin-pooler#
Выполните установку компонента Pangolin Pooler:
sudo dnf install pangolin-pooler-{version_component}-{OS}.x86_64.rpm
sudo apt install pangolin-pooler-{version_component}-{OS}_amd64.deb
sudo apt-get install pangolin-pooler-{version_component}-{OS}.x86_64.rpm
Пример заполненной команды:
sudo apt-get install pangolin-pooler-1.1.0-altlinux10.x86_64.rpm
Шаг 2. Конфигурирование Pangolin Pooler#
Отредактируйте файл pangolin-pooler.ini:
sudo -iu postgres
vi /etc/pangolin-pooler/pangolin-pooler.ini
Если файл со стандартным конфигурационным файлом не создался во время установки, в качестве суперпользователя создайте его самостоятельно и отредактируйте:
sudo -iu postgres
sudo mkdir -p /etc/pangolin-pooler
sudo chown postgres:postgres /etc/pangolin-pooler
sudo chmod 0700 /etc/pangolin-pooler
# вставить конфигурационные параметры (см. пример файла pangolin-pooler.ini)
sudo vi /etc/pangolin-pooler/pangolin-pooler.ini
sudo chown postgres:postgres /etc/pangolin-pooler/pangolin-pooler.ini
sudo chmod 0600 /etc/pangolin-pooler/pangolin-pooler.ini
Пример файла pangolin-pooler.ini
[databases]
* = host=<ip адрес хоста> port=5432
[pgbouncer]
listen_port = 6544
listen_addr = *
auth_type = scram-sha-256
auth_file = /etc/pangolin-pooler/userlist.txt
logfile = /pangolinlogs/pangolin-pooler/pangolin-pooler.log
pidfile = /var/run/user/984/pangolin-pooler/pangolin-pooler.pid
admin_users = pgbouncer
max_client_conn = 400
pool_mode = transaction
min_pool_size = 0
default_pool_size = 105
max_db_connections = 105
max_user_connections = 105
ignore_startup_parameters = extra_float_digits
unix_socket_dir =
ndc_suspending_timeout = 0
client_tls_crl_path = /pg_ssl/crl
server_tls_crl_path = /pg_ssl/crl
client_tls_crl_file = /pg_ssl/crl/intermediate.crl
server_tls_crl_file = /pg_ssl/crl/intermediate.crl
# TLS settings
server_tls_protocols = secure
server_tls_ciphers = secure
server_tls_sslmode = verify-full
client_tls_protocols = secure
client_tls_ciphers = secure
client_tls_sslmode = prefer
server_tls_pkcs12_config_path = /pg_ssl/intermediate/pgbouncer.p12.cfg
client_tls_pkcs12_config_path = /pg_ssl/intermediate/server.p12.cfg
Шаг 3. Конфигурирование userlist.txt#
Измените файл
userlist.txt(путь до файла/etc/pangolin-pooler/userlist.txt) при помощи текстового редактора, добавив следующие строки:"<user>" "<password>"Пример файла
userlist.txt:"user" "qwerty"Или в засекреченном виде:
"user" "md5175c641eaed0b6c05ae8444b73d789f0"Измените права и владельца файла:
sudo chown postgres:postgres /etc/pangolin-pooler/userlist.txt sudo chmod 0600 /etc/pangolin-pooler/userlist.txt
Шаг 4. Настройка ротации журналов#
Выполните конфигурирование ротации журналов. Содержимое файла
pangolin-poolerперенесите из аналогичного файла на мастере:sudo -iu postgres sudo cp /opt/pangolin-pooler/share/doc/logrotate/pangolin-pooler /etc/logrotate.d/pangolin-pooler sudo vi /etc/logrotate.d/pangolin-poolerПример файла
pangolin-pooler:/pangolinlogs/pangolin-pooler/pangolin-pooler.log { rotate 10 su postgres postgres missingok sharedscripts notifempty compress daily create 0600 postgres postgres postrotate /bin/kill -HUP `cat /var/run/user/984/pangolin-pooler/pangolin-pooler.pid 2> /dev/null` 2>/dev/null ||true endscript }Назначьте права:
sudo chown postgres:postgres /etc/logrotate.d/pangolin-pooler sudo chmod 0644 /etc/logrotate.d/pangolin-pooler
Шаг 5. Запуск Pangolin Pooler#
Перезапустите службу Pangolin Pooler:
sudo systemctl restart pangolin-pooler
Проверка результата#
После завершения процесса установки рекомендуется выполнить проверку корректности установка компонента Pangolin Pooler.
Проверка состояния сервиса#
Выполните проверку статуса службы Pangolin Pooler (на мастере и реплике):
Если служба Pangolin Pooler была запущена под пользователем
postgres, то необходимо переключится на данного пользователя и выполнить команду:systemctl status --user pangolin-poolerЕсли служба Pangolin Pooler была запущена под пользователем
root, то необходимо переключится на данного пользователя и выполнить команду:systemctl status pangolin-pooler
Ожидаемый результат:
● pangolin-pooler.service - Pangolin Pooler connection pooling for PostgreSQL Loaded: loaded (/home/postgres/.config/systemd/user/pangolin-pooler.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2025-02-25 14:56:58 MSK; 6min ago Process: 1662006 ExecStartPost=/bin/sleep 1 (code=exited, status=0/SUCCESS) Process: 1662003 ExecStart=/opt/pangolin-pooler/bin/pangolin-pooler -d ${POOLERCONF} (code=exited, status=0/SUCCESS) Process: 1662001 ExecStartPre=/bin/chown -R postgres:postgres /var/run/user/993/pangolin-pooler (code=exited, status=0/SUCCESS) Process: 1661999 ExecStartPre=/bin/mkdir -p /var/run/user/993/pangolin-pooler (code=exited, status=0/SUCCESS) Main PID: 1662005 (pangolin-pooler) CGroup: /user.slice/user-993.slice/user@993.service/pangolin-pooler.service └─1662005 /opt/pangolin-pooler/bin/pangolin-pooler -d /etc/pangolin-pooler/pangolin-pooler.iniОбратите внимание на параметр
Active. Данный параметр должен быть равенactive (running).
Проверка подключения к БД через Pangolin Pooler#
Выполните команду:
psql -h <pgbouncer_host> -p <pgbouncer_port> -U <username> -d <database> -c 'SELECT product_version();'Где:
pgbouncer_host- fqdn/IP-адрес сервера с установленным Pangolin Pooler;pgbouncer_port- порт для работы с Pangolin Pooler. По умолчанию порт равен6544;username- имя пользователя БД;database- имя БД.
Ожидаемый результат:
product_version --------------------------- Platform V Pangolin <version> (1 row)Где
<version>— версия продукта.