PowerFlex 4.X. Как выполнить корректную перезагрузку на виртуальных машинах управления PFMP MVM
Сводка: Содержит подробные сведения о корректной перезагрузке виртуальных машин платформы управления PowerFlex (PFMP) для версии 4.X, включая маркировку, очистку и перезагрузку MVM при сохранении двух узлов активными и проверке работоспособности PostgreSQL. В рамках данной процедуры MVM1 является лидером postgres. Он очищается и перезагружается в последнюю очередь. ...
Инструкции
Перезагрузка виртуальных машин MVM может решить некоторые проблемы Pod, сбои развертывания и другие ошибки
Команды, описанные в этой процедуре, выполняются из корневой оболочки bash. Чтобы выполнить приведенные ниже действия, войдите в MVM с помощью delladmin Затем выполните sudo -s , чтобы переключиться на новую корневую оболочку.
Примере:
delladmin@pfmp-mvm03:~> whoami delladmin delladmin@pfmp-mvm03:~> sudo -s pfmp-mvm03:/home/delladmin # whoami root
- Выведите список всех экземпляров базы данных Postgres и определите имя Pod с ролью Лидер, узел-лидер должен быть последним узлом, который нужно очистить и перезагрузить:
-
- ПФМП 4.6
kubectl exec -n powerflex -c database $(kubectl get pods -n powerflex -l='postgres-operator.crunchydata.com/role=master, postgres-operator.crunchydata.com/instance-set' | grep Running | cut -d' ' -f1) -- sh -c 'patronictl list'
Выполните следующую команду, чтобы определить, на каком MVM запущен модуль выносок Postgres . Это последний узел, который нужно очистить и перезагрузить:
for x in `kubectl get pods -n powerflex | grep "postgres-ha-cmo" |awk '{print $1}'` ; do echo $x; kubectl get pods -n powerflex $x -o json | grep '"nodeName"' | cut -d ':' -f2 ; echo " "; done
-
- ПФМП 4.8
kubectl exec -it -n powerflex $(kubectl get pods -n powerflex | grep postgres-monitor | awk '{print $1'}) -- kubectl cnpg status postgres-ha-cnpg
Пример вывода:
delladmin@node2:~> kubectl exec -it -n powerflex $(kubectl get pods -n powerflex | grep postgres-monitor | awk '{print $1'}) -- kubectl cnpg status postgres-ha-cnpg
Cluster Summary
Name powerflex/postgres-ha-cnpg
System ID: 7570829541331841052
PostgreSQL Image: dockerrepo:30500/cnpg/cnpg-postgres:14.18-22-53.6b63004-22-9.0
Primary instance: postgres-ha-cnpg-1
Primary start time: 2025-11-09 22:33:09 +0000 UTC (uptime 3803h6m21s)
Status: Cluster in healthy state
Instances: 3
Ready instances: 3
Size: 11G
Current Write LSN: B/6211B568 (Timeline: 3 - WAL File: 000000030000000B00000062)
Continuous Backup status
Not configured
Streaming Replication status
Replication Slots Enabled
Name Sent LSN Write LSN Flush LSN Replay LSN Write Lag Flush Lag Replay Lag State Sync State Sync Priority Replication Slot
---- -------- --------- --------- ---------- --------- --------- ---------- ----- ---------- ------------- ----------------
postgres-ha-cnpg-2 B/6211B568 B/6211B568 B/6211B568 B/6211B568 00:00:00.000365 00:00:00.001507 00:00:00.001618 streaming async 0 active
postgres-ha-cnpg-3 B/6211B568 B/6211B568 B/6211B568 B/6211B568 00:00:00.000321 00:00:00.001511 00:00:00.001575 streaming async 0 active
Instances status
Name Current LSN Replication role Status QoS Manager Version Node
---- ----------- ---------------- ------ --- --------------- ----
postgres-ha-cnpg-1 B/6211B568 Primary OK Burstable 1.26.1 pfmp-mvm01
postgres-ha-cnpg-2 B/6211B568 Standby (async) OK Burstable 1.26.1 pfmp-mvm02
postgres-ha-cnpg-3 B/6211B568 Standby (async) OK Burstable 1.26.1 pfmp-mvm03
- Откройте терминал к MVM3 (одному из узлов, не являющихся лидером). Выполните следующую команду:
kubectl get nodes
- Маркировка MVM3 для обслуживания:
kubectl label node pfmp-mvm03 cmo.maintenance.mode=true
- Удалить узел MVM03, где работающие Pod корректно вытесняются из узла. Модули pod планируют и запускаются на другом узле. После завершения процесса очистки узел перезагрузится. Дождитесь восстановления работоспособности узла.
- Выполните следующую команду, чтобы очистить узел:
kubectl drain pfmp-mvm03 --ignore-daemonsets --delete-emptydir-data
- После очистки узла перезагрузите узел.
sudo reboot
SSHв MVM02 и выполните следующую команду, чтобы отслеживать узел, который вы перезагрузили, чтобы достичь состояния READY:
watch kubectl get nodes
- После того как MVM03 сообщит о состоянии «Ready», подключитесь по SSH к MVM03 и выполните следующую команду, чтобы отключить и удалить этикетку обслуживания.
kubectl uncordon pfmp-mvm03 ; kubectl label node pfmp-mvm03 cmo.maintenance.mode-
Примечание. Знак «-» после
cmo.maintenance.mode в команде, приведенной выше, очень важно. Не забудьте включить символ ТИРЕ . Это необходимо для удаления метки с узла.
- Подождите 5–20 минут, а затем выполните команду, приведенную на шаге 1, для просмотра работоспособности кластера базы данных. Вы можете повторить эти шаги для следующего MVM, когда выходные данные будут соответствовать приведенному ниже примеру работоспособной базы данных.
- Повторите шаги 3–8 для MVM02, затем для MVM01.
Kubectl Команды НЕ работают на узле, который не находится в состоянии готовности.
Выполнив процедуру на всех трех MVM, выполните команду из шага 1 для проверки работоспособности базы данных postgres . One Pod должен быть Лидером и находиться в состоянии Running. Задержка должна составлять 0 Мбайт, и оба участника режима ожидания синхронизации должны находиться в состоянии потоковой передачи.
Пример работоспособной базы данных PFMP 4.6.
+ Cluster: postgres-ha-ha +------------------------------------------+--------------+-----------+----+-----------+ | Member | Host | Role | State | TL | Lag in MB | +-------------------------+------------------------------------------+--------------+-----------+----+-----------+ | postgres-ha-cmo1-8t2v-0 | postgres-ha-cmo1-8t2v-0.postgres-ha-pods | Leader | running | 10 | | | postgres-ha-cmo1-h4hx-0 | postgres-ha-cmo1-h4hx-0.postgres-ha-pods | Sync Standby | streaming | 10 | 0 | | postgres-ha-cmo1-pb88-0 | postgres-ha-cmo1-pb88-0.postgres-ha-pods | Sync Standby | streaming | 10 | 0 | +-------------------------+------------------------------------------+--------------+-----------+----+-----------+