PowerFlex 4.X: Cómo realizar un reinicio ordenado en VM de administración de PFMP MVM
Resumen: Detalla el reinicio ordenado de las VM de PowerFlex Management Platform (PFMP) para la versión 4.X, incluido el etiquetado, el vaciado y el reinicio de las MVM mientras se mantienen dos nodos activos y se comprueba el estado de PostgreSQL. En el alcance de este procedimiento, MVM1 es el líder de postgres. Se drena y se reinicia en último lugar. ...
Instrucciones
Reiniciar las VM de MVM puede resolver algunos problemas de Pod, fallas de implementación y otros errores
Los comandos de este procedimiento se ejecutan desde un shell bash raíz. Para replicar los pasos que se indican a continuación, inicie sesión en los MVM mediante delladmin A continuación, ejecute sudo -s para cambiar a un nuevo shell raíz.
Ejemplo:
delladmin@pfmp-mvm03:~> whoami delladmin delladmin@pfmp-mvm03:~> sudo -s pfmp-mvm03:/home/delladmin # whoami root
- Enumere todas las instancias de base de datos de Postgres e identifique el nombre del pod con la función de líder; el nodo líder debe ser el último nodo que se drenará y reiniciará:
-
- 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'
Ejecute el siguiente comando para identificar qué MVM está ejecutando el pod líder de Postgres . Este es el último nodo que se drena y se reinicia:
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
Ejemplo 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 un terminal en el MVM3 (uno de los nodos no líderes). Ejecute el siguiente comando:
kubectl get nodes
- Etiqueta MVM3 para mantenimiento:
kubectl label node pfmp-mvm03 cmo.maintenance.mode=true
- Drene el nodo MVM03 donde los pods en ejecución se expulsan correctamente del nodo. Los pods se programan y se ejecutan en un nodo diferente. Cuando se completa el proceso de drenaje, el nodo se reinicia. Espere a que el nodo vuelva a estar activo.
- Ejecute el siguiente comando para vaciar el nodo:
kubectl drain pfmp-mvm03 --ignore-daemonsets --delete-emptydir-data
- Una vez que se drene el nodo, reinícielo:
sudo reboot
- Acceda mediante el protocolo SSH a MVM02 y ejecute el siguiente comando para monitorear el nodo que reinició a fin de alcanzar un ESTADO Ready:
watch kubectl get nodes
- Una vez que MVM03 informe un estado Ready, acceda mediante SSH a MVM03 y ejecute el siguiente comando para descordar y quitar la etiqueta de mantenimiento .
kubectl uncordon pfmp-mvm03 ; kubectl label node pfmp-mvm03 cmo.maintenance.mode-
Nota: El "-" después de
cmo.maintenance.mode en el comando anterior es muy importante. No olvides incluir el símbolo DASH . Esto es necesario para eliminar la etiqueta del nodo.
- Espere de 5 a 20 minutos y, a continuación, ejecute el comando del paso 1 para ver el estado del clúster de la base de datos. Puede repetir los pasos para el próximo MVM una vez que el resultado coincida con el ejemplo de base de datos en buen estado que aparece a continuación.
- Repita los pasos 3 a 8 en MVM02 y, a continuación, MVM01.
Cuando haya completado el procedimiento en los tres MVM, ejecute el comando en el paso 1 para verificar el estado de la base de datos de postgres . Un Pod debe ser el líder y estar en estado de ejecución. Debe haber un retraso de 0 MB y ambos miembros en espera de sincronización deben tener un estado de streaming.
Ejemplo de base de datos en buen estado 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 | +-------------------------+------------------------------------------+--------------+-----------+----+-----------+