Задание 1: Администрирование кластера
В этом разделе будут отработаны навыки по управлению кластером, включая получение информации о его состоянии, а также остановку и запуск узлов с проверкой статуса etcd.
Вывод состояния кластера
Определите статус сервиса pangolin-manager на узлах srv1 и srv2, используя возможности systemd:
[student@srv1 ~]$ for comp in srv{1,2}; do echo -e "\n$comp:"; ssh $comp sudo systemctl status pangolin-manager --no-pager; done
Вывод команды:
srv1:
● pangolin-manager.service - Runners to orchestrate a high-availability PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/pangolin-manager.service; enabled; preset: disabled)
Active: active (running) since Tue 2026-09-08 07:56:42 UTC; 23h ago
Process: 184249 ExecStartPre=/bin/mkdir -p /var/run/postgresql (code=exited, status=0/SUCCESS)
Process: 184250 ExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresql (code=exited, status=0/SUCCESS)
Main PID: 184251 (pangolin-manage)
Tasks: 18 (limit: 22804)
Memory: 355.1M (peak: 359.7M)
CPU: 3min 44.243s
CGroup: /system.slice/pangolin-manager.service
├─184251 /opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml
├─186351 /usr/pangolin-6.7/bin/postgres -D /pgdata/06/data/ --config-file=/pgdata/06/data/postgresql.conf --listen_addresses=0.0.0.0 --port=5433 --cluster_name=Pobeda --wal_level=replica --hot_standby=on --max_connections=111 --max_wal_senders=10 --max_prepared_transactions=6 --max_locks_per_transaction=64 --track_commit_timestamp=False --max_replication_slots=10 --max_worker_processes=32 --wal_log_hints=True --authentication_max_workers=16 --enable_page_compression=off
├─186354 "postgres: Pobeda: logger "
├─186355 "postgres: Pobeda: checkpointer "
├─186356 "postgres: Pobeda: background writer "
├─186357 "postgres: Pobeda: startup recovering 00000007000000000000000E"
├─186358 "postgres: Pobeda: idle sessions terminator "
├─186359 "postgres: Pobeda: walreceiver streaming 0/F000000"
├─186360 "postgres: Pobeda: integrity check launcher "
├─186361 "postgres: Pobeda: license checker "
├─186362 "postgres: Pobeda: authproc "
├─186363 "postgres: Pobeda: password policy cache "
└─186368 "postgres: Pobeda: patroni postgres 127.0.0.1(52492) idle"
srv2:
● pangolin-manager.service - Runners to orchestrate a high-availability PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/pangolin-manager.service; enabled; preset: disabled)
Active: active (running) since Mon 2026-09-07 12:25:04 UTC; 1 day 18h ago
Main PID: 91425 (pangolin-manage)
Tasks: 21 (limit: 22804)
Memory: 488.5M (peak: 492.2M)
CPU: 6min 53.224s
CGroup: /system.slice/pangolin-manager.service
├─ 91425 /opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml
├─105092 /usr/pangolin-6.7/bin/postgres -D /pgdata/06/data/ --config-file=/pgdata/06/data/postgresql.conf --listen_addresses=0.0.0.0 --port=5433 --cluster_name=Pobeda --wal_level=replica --hot_standby=on --max_connections=111 --max_wal_senders=10 --max_prepared_transactions=6 --max_locks_per_transaction=64 --track_commit_timestamp=False --max_replication_slots=10 --max_worker_processes=32 --wal_log_hints=True --authentication_max_workers=16 --enable_page_compression=off
├─105095 "postgres: Pobeda: logger "
├─105096 "postgres: Pobeda: checkpointer "
├─105097 "postgres: Pobeda: background writer "
├─105099 "postgres: Pobeda: idle sessions terminator "
├─105100 "postgres: Pobeda: walwriter "
├─105101 "postgres: Pobeda: autovacuum launcher "
├─105102 "postgres: Pobeda: integrity check launcher "
├─105103 "postgres: Pobeda: license checker "
├─105104 "postgres: Pobeda: authproc "
├─105105 "postgres: Pobeda: password policy cache "
├─105106 "postgres: Pobeda: pg_cron launcher "
├─105107 "postgres: Pobeda: logical replication launcher "
├─105112 "postgres: Pobeda: patroni postgres 127.0.0.1(52574) idle"
└─105114 "postgres: Pobeda: walsender patroni <IP-Address1>(40430) streaming 0/F000000"
Убедитесь, что на арбитре srv3 сервис pangolin-manager не запущен:
[student@srv1 ~]$ ssh srv3 sudo systemctl status pangolin-manager --no-pager
Unit pangolin-manager.service could not be found.
Получите список узлов в кластере физической репликации средствами автоматизации управлением кластера:
[student@srv1 ~]$ sudo su - postgres
===============================================================
You are connected to Pangolin Cluster (Pobeda)
- Hostname : srv1
- IP Address : <IP-Address1>
---------------------------------------------------------------
- node ( master ) : <IP-Address2>
- node ( replica ) : <IP-Address1>
- arbiter : <IP-Address3>
- Manager version : 2.1.13
- Pangolin version : 6.7.0
===============================================================
[postgres@srv1 ~]$ list
+ Cluster: Pobeda (7683495148262105741) ------------+-----------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+---------------+--------------------+--------------+-----------+----+-----------+
| <IP-Address1> | <IP-Address1>:5433 | Sync Standby | streaming | 5 | 0 |
| <IP-Address2> | <IP-Address2>:5433 | Leader | running | 5 | |
+---------------+--------------------+--------------+-----------+----+-----------+
Остановка и запуск узла кластера
Остановите реплику srv1:
[student@srv1 ~]$ sudo systemctl stop pangolin-manager --no-pager
[student@srv1 ~]$ sudo systemctl status pangolin-manager --no-pager
○ pangolin-manager.service - Runners to orchestrate a high-availability PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/pangolin-manager.service; enabled; preset: disabled)
Active: inactive (dead) since Tue 2026-09-08 12:09:47 UTC; 2s ago
Duration: 20min 54.719s
Process: 275706 ExecStartPre=/bin/mkdir -p /var/run/postgresql (code=exited, status=0/SUCCESS)
Process: 275707 ExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresql (code=exited, status=0/SUCCESS)
Process: 275708 ExecStart=/opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml (code=exited, status=0/SUCCESS)
Main PID: 275708 (code=exited, status=0/SUCCESS)
CPU: 6.332s
...
Проверьте, сколько сейчас узлов в кластере:
[student@srv1 ~]$ sudo su - postgres
===============================================================
You are connected to Pangolin Cluster (Pobeda)
- Hostname : srv1
- IP Address : <IP-Address1>
---------------------------------------------------------------
- node ( master ) :
- node ( replica ) :
- arbiter : <IP-Address3>
- Manager version : 2.1.13
- Pangolin version : 6.7.0
===============================================================
[postgres@srv1 ~]$ list
+ Cluster: Pobeda (7683495148262105741) -------+---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+---------------+--------------------+---------+---------+----+-----------+
| <IP-Address1> | <IP-Address1>:5433 | Replica | stopped | | unknown |
| <IP-Address2> | <IP-Address2>:5433 | Leader | running | 5 | |
+---------------+--------------------+---------+---------+----+-----------+
[postgres@srv1 ~]$ exit
Снова запустите реплику srv1:
[student@srv1 ~]$ sudo systemctl start pangolin-manager --no-pager
[student@srv1 ~]$ sudo systemctl status pangolin-manager --no-pager
● pangolin-manager.service - Runners to orchestrate a high-availability PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/pangolin-manager.service; enabled; preset: disabled)
Active: active (running) since Wed 2026-09-09 12:12:25 UTC; 6s ago
Process: 276083 ExecStartPre=/bin/mkdir -p /var/run/postgresql (code=exited, status=0/SUCCESS)
Process: 276084 ExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresql (code=exited, status=0/SUCCESS)
Main PID: 276085 (pangolin-manage)
Tasks: 18 (limit: 22804)
Memory: 138.1M (peak: 140.1M)
CPU: 1.135s
CGroup: /system.slice/pangolin-manager.service
├─276085 /opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml
├─276100 /usr/pangolin-6.7/bin/postgres -D /pgdata/06/data/ --config-file=/pgdata/06/data/postgresql.conf --listen_addresses=0.0.0.0 --port=5433 --cluster_name=Pobeda --wal_level=repli…
├─276103 "postgres: Pobeda: logger "
├─276104 "postgres: Pobeda: checkpointer "
├─276105 "postgres: Pobeda: background writer "
├─276106 "postgres: Pobeda: startup recovering 000000050000000000000009"
├─276107 "postgres: Pobeda: idle sessions terminator "
├─276108 "postgres: Pobeda: authproc "
├─276109 "postgres: Pobeda: password policy cache "
├─276110 "postgres: Pobeda: walreceiver streaming 0/A000000"
├─276113 "postgres: Pobeda: integrity check launcher "
├─276114 "postgres: Pobeda: license checker "
└─276117 "postgres: Pobeda: patroni postgres 127.0.0.1(39610) idle"
После успешного старта реплики проверьте узлы кластера:
[student@srv1 ~]$ sudo su - postgres
===============================================================
You are connected to Pangolin Cluster (Pobeda)
- Hostname : srv1
- IP Address : <IP-Address1>
---------------------------------------------------------------
- node ( master ) : <IP-Address2>
- node ( replica ) : <IP-Address1>
- arbiter : <IP-Address3>
- Manager version : 2.1.13
- Pangolin version : 6.7.0
===============================================================
[postgres@srv1 ~]$ list
+ Cluster: Pobeda (7683495148262105741) ------------+-----------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+---------------+--------------------+--------------+-----------+----+-----------+
| <IP-Address1> | <IP-Address1>:5433 | Sync Standby | streaming | 5 | 0 |
| <IP-Address2> | <IP-Address2>:5433 | Leader | running | 5 | |
+---------------+--------------------+--------------+-----------+----+-----------+
[postgres@srv1 ~]$ exit
Подведем итоги
Вопрос 1
Вопрос 1: Приведен фрагмент списка процессов СУБД Pangolin на одном из узлов кластера, собранного из троих узлов:
├─37403 "postgres: Pobeda: logger "
├─37404 "postgres: Pobeda: checkpointer "
├─37405 "postgres: Pobeda: background writer "
├─37406 "postgres: Pobeda: startup recovering 000000040000000000000008"
├─37407 "postgres: Pobeda: idle sessions terminator "
├─37408 "postgres: Pobeda: authproc "
├─37409 "postgres: Pobeda: password policy cache "
├─37413 "postgres: Pobeda: integrity check launcher "
├─37414 "postgres: Pobeda: license checker "
На каких узлах этот список НЕ мог быть получен?
Вопрос 2
Вопрос 2: Как получить состояние сервиса pangolin-manager.service с помощью systemctl без запуска пэйджера?