Чек-лист проверки корректности работы
Данный раздел содержит список проверок того, что продукт СУБД Pangolin работает корректно.
Проверка работоспособности СУБД Pangolin
Примеры команд для проверки работоспособности СУБД Pangolin:
Проверка подключения к БД
Под пользователем postgres
на мастере или реплике выполните команду для подключения:
sudo su - postgres
psql -U <username> -d <database_name>
Введите пароль при возникновении запроса:
Password for user <username>:
Ожидаемый результат:
psql (15.5)
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
и выполните действия:
-
С помощью метакоманды
\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) -
Список доступных расширений к установке можно вывести запросом:
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)
Действия, в случае неудачной проверки
В случае, если проверка прошла неудачно, выполните пункты:
- Очистите КТС. Для этого выполните удаление продукта СУБД Pangolin по инструкции.
- Произведите повторный запуск процесса установки.
Проверка работоспособности 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_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
Проверка состояния сервиса
-
На мастере и реплике необходимо выполнить действия:
-
Если служба 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
- порт для работы с Pangoolin 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
в конфигурации при инсталляции должно быть, а при обновлении нет.