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

Задание 3: Управление узлами кластера

Получение статуса узла​

[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 ~]$ pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml dsn $CLNAME -r leader
host=<IP-Address2> port=5433

Выполните переключение мастера на узел srv2​

Проверьте исправность кластера:

[postgres@srv1 ~]$ health
member 54ec0c37709f3054 is healthy: got healthy result from https://<IP-Address1>:2379
member 8c95e735c5b6384c is healthy: got healthy result from https://<IP-Address2>:2379
member c80310d8dc193330 is healthy: got healthy result from https://<IP-Address3>:2379
cluster is healthy
[postgres@srv1 ~]$ pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml switchover --leader <IP-Address2> --candidate <IP-Address1> $CLNAME
Current cluster topology
+ 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 | |
+---------------+--------------------+--------------+-----------+----+-----------+
When should the switchover take place (e.g. 2026-09-09T13:19 ) [now]:
Are you sure you want to switchover cluster Pobeda, demoting current leader <IP-Address2>? [y/N]: y
2026-09-09 12:19:34.17822 Successfully switched over to "<IP-Address1>"
+ Cluster: Pobeda (7683495148262105741) -------+---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+---------------+--------------------+---------+---------+----+-----------+
| <IP-Address1> | <IP-Address1>:5433 | Leader | running | 5 | |
| <IP-Address2> | <IP-Address2>:5433 | Replica | stopped | | unknown |
+---------------+--------------------+---------+---------+----+-----------+

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

[postgres@srv1 ~]$ list
+ Cluster: Pobeda (7683495148262105741) ------------+-----------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+---------------+--------------------+--------------+-----------+----+-----------+
| <IP-Address1> | <IP-Address1>:5433 | Leader | running | 6 | |
| <IP-Address2> | <IP-Address2>:5433 | Sync Standby | streaming | 6 | 0 |
+---------------+--------------------+--------------+-----------+----+-----------+

Перезагрузка узлов​

Перезагрузите узлы:

[postgres@srv1 ~]$ pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reload $CLNAME
+ Cluster: Pobeda (7683495148262105741) ------------+-----------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+---------------+--------------------+--------------+-----------+----+-----------+
| <IP-Address1> | <IP-Address1>:5433 | Leader | running | 6 | |
| <IP-Address2> | <IP-Address2>:5433 | Sync Standby | streaming | 6 | 0 |
+---------------+--------------------+--------------+-----------+----+-----------+
Are you sure you want to reload members <IP-Address2>, <IP-Address1>? [y/N]: y
Reload request received for member <IP-Address2> and will be processed within 10 seconds
Reload request received for member <IP-Address1> and will be processed within 10 seconds

Рестарт узлов​

Сделайте restart узлов:

[postgres@srv1 ~]$ pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml restart $CLNAME
+ Cluster: Pobeda (7683495148262105741) ------------+-----------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+---------------+--------------------+--------------+-----------+----+-----------+
| <IP-Address1> | <IP-Address1>:5433 | Leader | running | 6 | |
| <IP-Address2> | <IP-Address2>:5433 | Sync Standby | streaming | 6 | 0 |
+---------------+--------------------+--------------+-----------+----+-----------+
When should the restart take place (e.g. 2026-09-09T13:20) [now]:
Are you sure you want to restart members <IP-Address2>, <IP-Address1>? [y/N]: y
Restart if the PostgreSQL version is less than provided (e.g. 9.5.2) []:
Success: restart on member <IP-Address2>
Success: restart on member <IP-Address1>

Получите статус узлов:

[postgres@srv1 ~]$ list
+ Cluster: Pobeda (7683495148262105741) ------------+-----------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+---------------+--------------------+--------------+-----------+----+-----------+
| <IP-Address1> | <IP-Address1>:5433 | Leader | running | 6 | |
| <IP-Address2> | <IP-Address2>:5433 | Sync Standby | streaming | 6 | 0 |
+---------------+--------------------+--------------+-----------+----+-----------+

Подведем итоги​

Вопрос 1

Вопрос 1: Выполнена команда:

[postgres@srv1 ~]$ list
+ Cluster: Pobeda (7573658613746808767) ------------+-----------+----+-----------+
| Member        | Host               | Role         | State     | TL | Lag in MB |
+---------------+--------------------+--------------+-----------+----+-----------+
| <IP-Address1> | <IP-Address1>:5433 | Leader       | running   |  7 |           |
| <IP-Address2> | <IP-Address2>:5433 | Sync Standby | streaming |  7 |         0 |
+---------------+--------------------+--------------+-----------+----+-----------+

На каком узле кластера работает процесс wal sender?

Вопрос 2

Вопрос 2: Какую команду утилиты управления кластером Pangolin следует использовать для запланированной остановки узла кластера?