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

Чек-лист проверки корректности работы

Данный раздел содержит список проверок того, что продукт СУБД Pangolin работает корректно.

Проверка работоспособности СУБД Pangolin​

В данном подразделе приведены примеры команд для проверки работоспособности экземпляра СУБД Pangolin.

Проверка подключения к БД​

Под пользователем postgres на мастере или реплике выполните команду для подключения:

sudo su - postgres
psql -U <username> -d <database_name>

Введите пароль при возникновении запроса:

Password for user <username>:

Ожидаемый результат:

psql (15.15)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

Проверка корректности вывода запросов к БД​

Подключитесь к БД через утилиту psql и выполните команду вывода даты и времени:

SELECT now();

Пример вывода:

now
-------------------------------
2025-02-13 11:50:25.665725+03
(1 row)

Проверка вывода версии СУБД​

Подключитесь к БД через утилиту psql и выполните команду:

SELECT product_version();

Ожидаемый результат:

product_version
---------------------------------
Platform V Pangolin DB <version>
(1 row)

где:

  • Platform V Pangolin DB — альтернативное наименование продукта;
  • <version> — версия продукта.

Проверка расширений​

Подключитесь к БД через утилиту psql и выполните действия:

  1. С помощью метакоманды \dx в psql доступен вывод списка установленных расширений:

    \dx

    Пример вывода команды:

    List of installed extensions
    Name | Version | Schema | Description
    ----------------------+---------+------------+------------------------------------------------------------------------
    pg_cron | 1.6.4 | ext | Job scheduler for PostgreSQL
    pg_hint_plan | 1.5 | hint_plan |
    pg_outline | 1.1 | outline | Provides ability to alter execution plan of queries.
    pg_repack | 1.4.8 | ext | Reorganize tables in PostgreSQL databases with minimal locks
    pg_stat_kcache | 2.2.1 | ext | Kernel statistics gathering
    pg_stat_statements | 1.10 | ext | track planning and execution statistics of all SQL statements executed
    pgse_backup | 1.2 | ext | Common DB objects for Pangolin installation
    pgstattuple | 1.5 | ext | show tuple-level statistics
    plpgsql | 1.1 | pg_catalog | PL/pgSQL procedural language
    psql_lockmon | 1.0 | ext | Lock monitoring extension
    psql_rotate_password | 1.0 | ext | psql_rotate_password
    (11 rows)
  2. Список доступных расширений к установке можно вывести запросом:

    SELECT name, comment FROM pg_available_extensions ORDER BY name;

    Пример вывода команды:

    name | comment
    -----------------------------------+---------------------------------------------------
    adminpack | administrative functions for PostgreSQL
    amcheck | functions for verifying relation integrity
    anon | Data anonymization tools
    <...>
    uuid-ossp | generate universally unique identifiers (UUIDs)
    xid_promotion | Promote XID
    xml2 | XPath querying and XSLT
    (89 rows)

Действия, в случае неудачной проверки​

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

  1. Очистите КТС. Для этого выполните удаление продукта СУБД Pangolin по инструкции.
  2. Произведите повторный запуск процесса установки.

Проверка работоспособности 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_prepared_transactions: '12'
    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

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

Проверка работоспособности Pangolin Pooler​

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

  1. Выполните проверку статуса службы 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​

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

    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> — версия продукта.

Проверка работоспособности Pangolin DCS​

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

На любом хосте кластера под пользователем postgres выполните команду:

/opt/pangolin-manager/bin/pangolin-dcs-ctl endpoint health --endpoints='<master_ip>:<rest_api_port><replica_ip>:<rest_api_port>,<arbiter_ip>:<rest_api_port>'

Где:

  • master_ip - fqdn/IP-адрес мастера;
  • replica_ip - fqdn/IP-адрес реплики;
  • arbiter_ip - fqdn/IP-адрес арбитра;
  • rest_api_port - порт DCS для взаимодействия через REST API.

Пример ожидаемого результата:

srv-03:2481 is healthy
srv-01:2481 is healthy
srv-02:2481 is healthy

Показателем корректной работы кластера Pangolin DCS будет являться состояние is healthy на всех узлах кластера.

Проверка работоспособности etcd​

Для проверки работоспособности etcd на любом хосте кластера под пользователем postgres выполните команду:

ETCDCTL_API=<etcd_version> etcdctl --endpoints https://<master_ip>:<etcd_port>,https://<replica_ip>:<etcd_port>,https://<arbiter_ip>:<etcd_port> --cert-file <path_to_cert> --key-file <path_to_key> --ca-file <path_to_root_cert> cluster-health 2>&1

Где:

  • etcd_version - версия используемого etcd API;
  • master_ip - fqdn/IP-адрес мастера;
  • replica_ip - fqdn/IP-адрес реплики;
  • arbiter_ip - fqdn/IP-адрес арбитра;
  • etcd_port - порт etcd;
  • path_to_cert - путь до сертификата etcd;
  • path_to_key - путь до приватного ключа сертификата etcd;
  • path_to_root_cert - путь до корневого сертификата.

Пример ожидаемого результата:

member <hash> is healthy: got healthy result from https://srv-03:2379
member <hash> is healthy: got healthy result from https://srv-01:2379
member <hash> is healthy: got healthy result from https://srv-02:2379
cluster is healthy

Где hash - хеш узла кластера.

Показателем корректной работы кластера etcd будет являться состояние is healthy на всех узлах кластера.

Проверка работоспособности с хранилищем секретов​

Чтобы убедиться в том, что хранилище секретов работает корректно необходимо под пользователем kmadmin_pg выполнить команду:

/opt/pangolin-security-utilities/bin/setup_kms_credentials show

Пример ожидаемого результата:

┏━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ # ┃ protocol ┃ host ┃ port ┃ root CA path ┃ suffix ┃ prefix ┃ namespace ┃ cred type ┃ auth point ┃ id ┃ status ┃
┣━━━━╋━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━╋━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━╋━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━┫
┃ 0 ┃ https ┃ <vault_srv> ┃ 8200 ┃ /pg_ssl/root.crt ┃ postgresql ┃ kv ┃ ┃ Userpass Auth Method ┃ userpass ┃ adminencryption ┃ Ok ┃
┗━━━━┻━━━━━━━━━━┻━━━━━━━━━━━━━┻━━━━━━┻━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━┻━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┛

Где vault_srv - IP-адрес до vault сервера.

Показателем корректной работы будет являться состояние Ok в колонке status.

Проверка работоспособности засекречивания паролей​

Если была включена функциональность засекречивания паролей, то для проверки ее корректной работы необходимо на мастере переключиться на пользователя postgres и выполнить команду:

/bin/pg_auth_config check

Пример ожидаемого вывода:

Connection settings for host: "localhost", port "5433", database "postgres", user "patroni" are OK
Connection settings for host: "localhost", port "5433", database "replication", user "patroni" are OK
Connection settings for host: "srv-01", port "5433", database "postgres", user "patroni" are OK
Connection settings for host: "srv-01", port "5433", database "replication", user "patroni" are OK
Connection settings for host: "srv-02", port "5433", database "postgres", user "patroni" are OK
Connection settings for host: "srv-02", port "5433", database "replication", user "patroni" are OK

По результатам вывода данной команды необходимо убедиться, что все подключения имеют статус OK.

Проверка сценариев установки/обновления компонента pangolin-security-utilities​

Независимо от конфигурации проверить наличие файла secret_dump_key.bin командой:

ls -la /etc/pangolin-security-utilities/secret_dump_key.bin

Также необходимо проверить конфигурационный файл enc_util.cfg командой

cat /etc/pangolin-auth-reencrypt/enc_util.cfg

Упоминание файла secret_dump_key.bin в конфигурации при инсталляции должно быть, а при обновлении нет.