PowerFlex 4.X: Como executar uma reinicialização normal em VMs de gerenciamento do MVM do PFMP
Resumo: Detalha a reinicialização normal das VMs da PowerFlex Management Platform (PFMP) para a versão 4.X, incluindo rotulagem, drenagem e reinicialização de MVMs, mantendo dois nós ativos e verificando a integridade do PostgreSQL. No âmbito deste procedimento, o MVM1 é o líder postgres. Ele é drenado e reinicializado por último. ...
Instruções
Reinicializar VMs MVM pode resolver alguns problemas do Pod, falhas de implementação e outros erros
Os comandos neste procedimento são executados a partir de um shell bash raiz. Para espelhar as etapas abaixo, faça log-in nos MVMs usando delladmin em seguida, execute sudo -s para alternar para um novo shell raiz.
Exemplo:
delladmin@pfmp-mvm03:~> whoami delladmin delladmin@pfmp-mvm03:~> sudo -s pfmp-mvm03:/home/delladmin # whoami root
- Liste todas as instâncias do banco de dados Postgres e identifique o nome do Pod com a função Líder. O nó líder deve ser o último nó a ser esvaziado e reinicializado:
-
- PFMP 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'
Execute o seguinte comando para identificar qual MVM está executando o Postgres Leader Pod. Este é o último nó a ser drenado e reinicializado:
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
-
- PFMP 4,8
kubectl exec -it -n powerflex $(kubectl get pods -n powerflex | grep postgres-monitor | awk '{print $1'}) -- kubectl cnpg status postgres-ha-cnpg
Exemplo de resultado
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
- Abra um terminal para o MVM3( um dos nós não líderes). Execute o seguinte comando:
kubectl get nodes
- Rotule o MVM3 para manutenção:
kubectl label node pfmp-mvm03 cmo.maintenance.mode=true
- Drene o nó MVM03 em que os pods em execução são removidos normalmente do nó. Os pods são agendados e executados em um nó diferente. Quando o processo de drenagem for concluído, o nó será reinicializado. Aguarde até que o nó volte a funcionar.
- Execute o seguinte comando para drenar o nó:
kubectl drain pfmp-mvm03 --ignore-daemonsets --delete-emptydir-data
- Depois que o nó for esvaziado, reinicialize-o:
sudo reboot
- SSH para MVM02 e execute o seguinte comando para monitorar o nó que você reinicializou e alcançar um STATUS Pronto:
watch kubectl get nodes
- Depois que o MVM03 relatar um status Ready, SSH para MVM03 execute o seguinte comando para descoronar e remover o rótulo de manutenção .
kubectl uncordon pfmp-mvm03 ; kubectl label node pfmp-mvm03 cmo.maintenance.mode-
Nota: O "-" depois
cmo.maintenance.mode no comando acima é muito importante. Não se esqueça de incluir o símbolo DASH . Isso é necessário para remover o rótulo do nó.
- Aguarde de 5 a 20 minutos e execute o comando na etapa 1 para visualizar a integridade do cluster do banco de dados. Você pode repetir as etapas para o próximo MVM quando o resultado corresponder ao exemplo de banco de dados íntegro abaixo.
- Repita as etapas de 3 a 8 no MVM02 e, em seguida, no MVM01.
Depois de concluir o procedimento em todos os três MVMs, execute o comando na etapa 1 para verificar a integridade do banco de dados postgres . Um Pod deve ser o Líder e estar em execução. Deve haver 0MB de atraso e ambos os membros do modo de espera de sincronização devem ter um estado de streaming.
Exemplo de banco de dados íntegro 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 | +-------------------------+------------------------------------------+--------------+-----------+----+-----------+