Установка
Установка компонента Pangolin Manager на этапе развертывания продукта СУБД Pangolin может происходить:
- автоматизированным способом с помощью автоматизированных скриптов;
- вручную по инструкции пошаговой установки.
При эксплуатации СУБД Pangolin, установка происходит вручную с помощью поставляемого deb/rpm-пакета компонента. Реализован также пакет pangolin-manager-venv, который содержит в себе зависимости python для работоспособности компонента.
Особенности поставки и установки
- Компонент поставляется deb/rpm-пакетом в формате
pangolin-manager-{version_component}-{OS}.x86_64.rpm; - Имеет обязательную зависимость в виде пакета
pangolin-manager-venv; - Может быть установлена только одна версия Pangolin Manager;
- Нумерация версии компонента начата с 1.1.0 после переименования с Patroni на Pangolin Manager.
Ручная установка
Последовательность выполнения
Шаги процесса ручной установки компонента:
- Установка rpm/deb-пакетов компонента и его зависимости.
- Создание пользователя для репликации.
- Добавление пользователя в засекреченного хранилища паролей (опциональный шаг).
- Создание системных директорий, необходимых для работы Pangolin Manager.
- Выбор распределенного хранилища конфигурации.
- Конфигурирование Pangolin Manager.
- Настройка перезагрузки компонентов (опциональный шаг).
- Запуск Pangolin Manager.
Шаг 1. Установка rpm/deb-пакетов
Выполните данный шаг также на арбитре, если выбран модуль Pangolin DCS, в качестве распределенного хранилища конфигурации.
-
Установите пакет
pangolin-manager-venv, который является обязательной зависимостью для пакетаpangolin-manager. Предварительно распакуйте архив3rdparty.tar.gz:tar -xzf /{path}/3rdparty/3rdparty.tar.gz -C /{path}/3rdparty/- SberLinux, РЕД ОС, CentOS
- Astra Linux
- Альт СП
sudo dnf install /{path}/3rdparty/pangolin-manager-venv/pangolin-manager-venv-{version_component}-{OS}.x86_64.rpmsudo apt install /{path}/3rdparty/pangolin-manager-venv/pangolin-manager-venv-{version_component}_amd64.debsudo apt-get install /{path}/3rdparty/pangolin-manager-venv/pangolin-manager-venv-{version_component}-{OS}.x86_64.rpmПример заполненной команды:
tar -xzf ~/distributive/3rdparty/3rdparty.tar.gz -C ~/distributive/3rdparty/
sudo dnf install -y ~/distributive/3rdparty/pangolin-manager-venv/pangolin-manager-venv-3.1.1-sberlinux9.x86_64.rpm -
Установите пакет
pangolin-manager:- SberLinux, РЕД ОС, CentOS
- Astra Linux
- Альт СП
sudo dnf install /{path}/pangolin-manager-{version_component}-{OS}.x86_64.rpmsudo apt install /{path}/pangolin-manager-{version_component}_amd64.debsudo apt-get install /{path}/pangolin-manager-{version_component}-{OS}.x86_64.rpmПример заполненной команды:
sudo dnf install -y ~/distributive/pangolin-manager-3.1.1-sberlinux9.x86_64.rpm
Шаг 2. Создание пользователя для репликации
-
Создайте пользователя для работы репликации в СУБД Pangolin с паролем согласно парольной политике только на мастере:
sudo -iu postgres
psql -c "CREATE USER patroni WITH ENCRYPTED PASSWORD '<sample_password>';"
exit -
Отключите срок действия пароля и выставьте лимит подключений только на мастере:
sudo -iu postgres
psql -c "ALTER ROLE patroni LOGIN SUPERUSER REPLICATION VALID UNTIL 'infinity' CONNECTION LIMIT 5;"
exit
Шаг 3. Добавление пользователя в засекреченного хранилища паролей (опционально)
Выполните данный шаг при использовании функциональности засекречивания паролей.
Добавьте пользователя СУБД, созданного на предыдущем шаге, в хранилище на мастере и реплике:
sudo -iu postgres
/opt/pangolin-dbms-server/bin/pg_auth_config add -h $HOSTNAME -p 5432 -U patroni -d postgres
/opt/pangolin-dbms-server/bin/pg_auth_config add -h $HOSTNAME -p 5432 -U patroni -d replication
/opt/pangolin-dbms-server/bin/pg_auth_config add -h localhost -p 5432 -U patroni -d postgres
/opt/pangolin-dbms-server/bin/pg_auth_config add -h localhost -p 5432 -U patroni -d replication
exit
Шаг 4. Создание системных директорий
Выполните данный шаг также на арбитре, если выбран модуль Pangolin DCS, в качестве распределенного хранилища конфигурации.
Создайте директорию /pangolinlogs/pangolin-manager на всех узлах кластера:
sudo mkdir -p /pangolinlogs/pangolin-manager
sudo chown -R postgres:postgres /pangolinlogs
sudo chmod -R 700 /pangolinlogs
Шаг 5. Выбор распределенного хранилища конфигурации
Для установки распределенного хранилища конфигурации выберите одну из инструкций:
Шаг 6. Конфигурирование Pangolin Manager
Выполните данный шаг также на арбитре, если выбран модуль Pangolin DCS, в качестве распределенного хранилища конфигурации.
При установке пакетаpangolin-manager создается конфигурационный файл Pangolin Manager - /etc/pangolin-manager/postgres.yml, содержащий значения переменных по умолчанию.
Заполнение конфигурационного файла postgres.yml требуется на всех узлах экземпляра СУБД (мастере, реплике, арбитре).
-
С помощью текстового редактора под пользователем
postgresотредактируйте в конфигурационный файл Pangolin Manager/etc/pangolin-manager/postgres.ymlследующие параметры:postgresql:parameters– необходимо вручную из уже существующего/pgdata/0{base_version}/data/postgresql.confперенесите параметры СУБД;postgresql:pg_hba– необходимо вручную из уже существующего/pgdata/0{base_version}/data/pg_hba.confперенесите параметры СУБД;log:dir- необходимо указать путь до логов компонента Pangolin Manager (/pangolinlogs/pangolin-manager/);scope– необходимо указать имя кластера (например,cluster);name– необходимо указать имя текущего сервера (hostname);postgresql:listen- необходимо указать адрес подключения к СУБД Pangolin (0.0.0.0:<port>);postgresql:connect_address- необходимо указать адрес подключения к СУБД Pangolin (hostname:<port>);postgresql:bin_dir- необходимо указать путь до исполняемых файлов серверной части (/opt/pangolin-dbms-server/bin);postgresql:bin_dir_client- необходимо указать путь до исполняемых файлов клиентской части (/opt/pangolin-dbms-client/bin);postgresql:data_dir- необходимо указать путь до файлов данных СУБД (/pgdata/0{base_version}/data/);restapi:listen- необходимо указать адрес для доступа к REST API утилиты Pangolin Manager (0.0.0.0:8008);restapi:connect_address- необходимо указать адрес подключения к REST API утилиты Pangolin Manager (hostname:8008);restapi:authentication:username- необходимо указать имя пользователя для доступа к REST API утилиты Pangolin Manager (pangolinmanager), который создается на шаге 8;restapi:authentication:password- необходимо указать пароль пользователя для доступа к REST API утилиты Pangolin Manager;postgresql:authentication:replication:username- необходимо указать имя пользователя репликации для аутентификации (patroni), который создается на шаге 2;postgresql:authentication:replication:password- необходимо указать пароль пользователя репликации для аутентификации;postgresql:authentication:superuser:username- необходимо указать имя пользователя для аутентификации (patroni), который создается на шаге 2;postgresql:authentication:superuser:password- необходимо указать пароль пользователя для аутентификации;tags- секцию необходимо оставить без изменений;bootstrap:dcs- секцию необходимо оставить без изменений;pangolin_dcsилиetcd- секции заполняются на шаге настройки распределенного хранилища.
Пример заполненного файла
/etc/pangolin-manager/postgres.yml:scope: cluster
name: abc-0.11
restapi:
listen: 0.0.0.0:8008
connect_address: abc-0.11:8008
authentication:
username: pangolinmanager
password: <sample_password>
bootstrap:
dcs:
ttl: 135
retry_timeout: 60
loop_wait: 10
maximum_lag_on_failover: 1048576
synchronous_mode: true
synchronous_mode_strict: false
postgresql:
parameters:
wal_log_hints: on
wal_level: replica
max_wal_senders: 10
max_replication_slots: 10
log:
dir: /pangolinlogs/pangolin-manager
postgresql:
listen: 0.0.0.0:5432
bin_dir: /opt/pangolin-dbms-server/bin
bin_dir_client: /opt/pangolin-dbms-client/bin
connect_address: abc-0.11:5432
data_dir: /pgdata/07/data/
authentication:
replication:
username: patroni
password: <sample_password>
superuser:
username: patroni
password: <sample_password>
parameters:
port: 5432
listen_addresses: 0.0.0.0
pg_hba:
- host all patroni 127.0.0.1/32 scram-sha-256
- host all patroni <ip-address_master>/32 scram-sha-256
- host all patroni <ip-address_replica>/32 scram-sha-256
- host replication patroni 127.0.0.1/32 scram-sha-256
- host replication patroni <ip-address_master>/32 scram-sha-256
- host replication patroni <ip-address_replica>/32 scram-sha-256
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false -
Для репликации и корректной работы Pangolin Manager, c помощью текстового редактора под пользователем
postgresна мастере добавьте следующие строки в конец конфигурационного файла СУБД/pgdata/0{base_version}/data/pg_hba.confна мастере:host all patroni 127.0.0.1/32 scram-sha-256
host all patroni <ip-address_master>/32 scram-sha-256
host all patroni <ip-address_replica>/32 scram-sha-256
host replication patroni 127.0.0.1/32 scram-sha-256
host replication patroni <ip-address_master>/32 scram-sha-256
host replication patroni <ip-address_replica>/32 scram-sha-256
Шаг 7. Настройка перезагрузки компонентов (опционально)
Выполните данный шаг при наличии компонента Pangolin Pooler.
-
Под пользователем
postgresсоздайте файл/etc/pangolin-pooler/pangolin-pooler-restart.sh, который будет использовать Pangolin Manager при перезагрузке кластера для перезагрузки Pangolin Pooler (reload) и назначьте права:sudo -iu postgres
touch /etc/pangolin-pooler/pangolin-pooler-restart.sh
chmod 500 /etc/pangolin-pooler/pangolin-pooler-restart.sh
exit -
С помощью текстового редактора из-под
rootдобавьте в файл/etc/pangolin-pooler/pangolin-pooler-restart.shсодержимое:#!/bin/sh
sudo systemctl restart pangolin-pooler
Шаг 8. Запуск Pangolin Manager
-
Перечитайте обновленную конфигурацию Pangolin (reload):
sudo -iu postgres
pg_ctl reload
exit -
Запустите сервис
pangolin-managerпоследовательно, сначала на узле мастер, затем на реплике и после на арбитре, при необходимости:sudo systemctl start pangolin-manager -
Проверьте корректность запуска и состояние сервиса. Пример статуса:
sudo systemctl status pangolin-managerПример успешного старта сервиса pangolin-manager
● pangolin-manager.service - Runners to orchestrate a high-availability PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/pangolin-manager.service; disabled; preset: disabled)
Active: active (running) since Mon 2026-02-02 20:58:12 MSK; 11ms ago
Process: 2325458 ExecStartPre=/bin/mkdir -p /var/run/pangolin-dbms (code=exited, status=0/SUCCESS)
Process: 2325459 ExecStartPre=/bin/chown -R postgres:postgres /var/run/pangolin-dbms (code=exited, status=0/SUCCESS)
Main PID: 2325464 (pangolin-manage)
Tasks: 1 (limit: 50508)
Memory: 2.7M
CPU: 16ms
CGroup: /system.slice/pangolin-manager.service
└─2325464 /opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml
Feb 02 20:58:12 srv-123 systemd[1]: Starting Runners to orchestrate a high-availability PostgreSQL...
Feb 02 20:58:12 srv-123 systemd[1]: Started Runners to orchestrate a high-availability PostgreSQL.
Feb 02 20:57:53 srv-123 pangolin-manager.bin[2325269]: 2026-02-02 20:57:53,336 INFO: Failed to import patroni.dcs.consul
Проверка результата
После завершения процесса установки рекомендуется выполнить описанные далее действия для проверки корректности установки компонента Pangolin Manager.
Проверка состояния REST API сервиса
-
Выполните команду:
curl -s <protocol>://<pangolin_manager_host>:<pangolin_manager_port>/healthПример вывода, в случае корректной работы:
{"state": "running", "postmaster_start_time": "2025-02-25 14:45:45.193208+03:00", "role": "master", "server_version": 150005, "xlog": {"location": 83886080}, "timeline": 2, "replication": [{"usename": "patroni", "application_name": "srv-02", "client_addr": "srv-02", "state": "streaming", "sync_state": "sync", "sync_priority": 1}], "dcs_last_seen": 1740484140, "database_system_identifier": "<hash>", "patroni": {"version": "3.2.0", "scope": "clustername", "name": "srv-01", "se_version": "2.1.6"}}Где:
protocol- http протокол.http- еслиsslне был настроен,https- еслиsslнастроен;pangolin_manager_host- fqdn/IP хоста, на котором установлен Pangolin Manager;pangolin_manager_port- порт, на котором работает Pangolin manager. По умолчанию - 8008.
Наличие данного вывода указывает на корректность работы REST API. Если похожий вывод не был получен или код ответа на запрос не равен 200 - это говорит о наличии проблемы.
Проверка состояния кластера
-
На мастере или реплике под пользователем
postgresвыполните команду для получения состояния узлов кластера:/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml listПример вывода:
+ Cluster: clustername (<hash>) -------------------+--------------+-----------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+----------------------+---------------------------+--------------+-----------+----+-----------+
| srv-01 | srv-01:5433 | Leader | running | 2 | |
| srv-02 | srv-02:5433 | Sync Standby | streaming | 2 | 0 |
+----------------------+---------------------------+--------------+-----------+----+-----------+Где
hash- хеш кластера.По полученному выводу, необходимо убедится что кластер работает корректно, а именно:
- убедиться в наличии узлов мастера и реплики;
- убедиться, что в ролях для узлов указаны
LeaderиSync StandbyилиReplica; - убедиться, что лидер находится в состоянии
running, а реплика -streaming; - убедиться, что отсутствует задержка между узлами.
Проверка корректности работы с DCS
-
На мастере или реплике под пользователем
postgresвыполните команду:/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml show-configПример ожидаемого вывода:
loop_wait: 10
maximum_lag_on_failover: 1048576
postgresql:
parameters:
auth_activity_period: '60'
authentication_max_workers: '16'
logical_decoding_work_mem: 64MB
max_connections: '110'
max_locks_per_transaction: '64'
max_prepared_transactions: '3'
max_replication_slots: '10'
max_wal_senders: '10'
max_worker_processes: '32'
track_commit_timestamp: false
wal_keep_size: 8GB
wal_level: replica
wal_log_hints: true
use_pg_rewind: true
use_slots: true
retry_timeout: 60
synchronous_mode: true
synchronous_mode_strict: false
ttl: 135В случае проблем, команда выведет ошибку.