Перейти к основному содержимому

Установка

Установка компонента 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.

Ручная установка

Последовательность выполнения

Шаги процесса ручной установки компонента:

  1. Установка rpm/deb-пакетов компонента и его зависимости.
  2. Создание пользователя для репликации.
  3. Добавление пользователя в засекреченного хранилища паролей (опциональный шаг).
  4. Создание системных директорий, необходимых для работы Pangolin Manager.
  5. Выбор распределенного хранилища конфигурации.
  6. Конфигурирование Pangolin Manager.
  7. Настройка перезагрузки компонентов (опциональный шаг).
  8. Запуск Pangolin Manager.

Шаг 1. Установка rpm/deb-пакетов

Подсказка

Выполните данный шаг также на арбитре, если выбран модуль Pangolin DCS, в качестве распределенного хранилища конфигурации.

  1. Установите пакет pangolin-manager-venv, который является обязательной зависимостью для пакета pangolin-manager. Предварительно распакуйте архив 3rdparty.tar.gz:

    tar -xzf /{path}/3rdparty/3rdparty.tar.gz -C /{path}/3rdparty/
    sudo dnf 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
  2. Установите пакет pangolin-manager:

    sudo dnf 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. Создание пользователя для репликации

  1. Создайте пользователя для работы репликации в СУБД Pangolin с паролем согласно парольной политике только на мастере:

    sudo -iu postgres
    psql -c "CREATE USER patroni WITH ENCRYPTED PASSWORD '<sample_password>';"
    exit
  2. Отключите срок действия пароля и выставьте лимит подключений только на мастере:

    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 требуется на всех узлах экземпляра СУБД (мастере, реплике, арбитре).

  1. С помощью текстового редактора под пользователем 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
  2. Для репликации и корректной работы 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.

  1. Под пользователем 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
  2. С помощью текстового редактора из-под root добавьте в файл /etc/pangolin-pooler/pangolin-pooler-restart.sh содержимое:

    #!/bin/sh
    sudo systemctl restart pangolin-pooler

Шаг 8. Запуск Pangolin Manager

  1. Перечитайте обновленную конфигурацию Pangolin (reload):

    sudo -iu postgres
    pg_ctl reload
    exit
  2. Запустите сервис pangolin-manager последовательно, сначала на узле мастер, затем на реплике и после на арбитре, при необходимости:

    sudo systemctl start pangolin-manager
  3. Проверьте корректность запуска и состояние сервиса. Пример статуса:

    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 сервиса

  1. Выполните команду:

    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 - это говорит о наличии проблемы.

Проверка состояния кластера

  1. На мастере или реплике под пользователем 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

  1. На мастере или реплике под пользователем 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

    В случае проблем, команда выведет ошибку.