PowerFlex 4.X: So führen Sie einen ordnungsgemäßen Neustart auf PFMP-MVM-Management-VMs durch
Zusammenfassung: Beschreibt den ordnungsgemäßen Neustart von PowerFlex Management Platform (PFMP)-VMs für Version 4.X, einschließlich Etikettierung, Entladung und Neustart von MVMs, während zwei Nodes aktiv bleiben und die PostgreSQL-Integrität überprüft wird. Im Rahmen dieses Verfahrens ist MVM1 der Postgres-Leader. Es wird entladen und zuletzt neu gestartet. ...
Weisungen
Durch den Neustart von MVM-VMs können einige Pod-Probleme, Bereitstellungsfehler und andere Fehler behoben werden
Die Befehle in diesem Verfahren werden von einer Root-Bash-Shell ausgeführt. Um die folgenden Schritte zu spiegeln, melden Sie sich bei den MVMs an, indem Sie delladmin Führen Sie dann Folgendes aus: sudo -s , um zu einer neuen Root-Shell zu wechseln.
Beispiel:
delladmin@pfmp-mvm03:~> whoami delladmin delladmin@pfmp-mvm03:~> sudo -s pfmp-mvm03:/home/delladmin # whoami root
- Listen Sie alle Postgres-Datenbankinstanzen auf und identifizieren Sie den Pod-Namen mit der Leader-Rolle. Der Leader-Node sollte der letzte Node sein, der entladen und neu gestartet wird:
-
- 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'
Führen Sie den folgenden Befehl aus, um zu ermitteln, auf welchem MVM der Postgres-Leader-Pod ausgeführt wird . Dies ist der letzte Node, der entladen und neu gestartet wird:
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
Beispielausgabe:
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
- Öffnen Sie ein Terminal zum MVM3 (einem der Nicht-Leader-Nodes). Führen Sie den folgenden Befehl aus:
kubectl get nodes
- Etikettieren Sie MVM3 für die Wartung:
kubectl label node pfmp-mvm03 cmo.maintenance.mode=true
- Entladen Sie den Node MVM03, wobei ausgeführte Pods ordnungsgemäß aus dem Node entfernt werden. Die Pods werden auf einem anderen Node geplant und ausgeführt. Wenn der Entladungsprozess abgeschlossen ist, wird der Node neu gestartet. Warten Sie, bis der Node wieder hochgefahren ist.
- Führen Sie den folgenden Befehl aus , um den Node zu entladen:
kubectl drain pfmp-mvm03 --ignore-daemonsets --delete-emptydir-data
- Nachdem der Node entladen wurde, starten Sie ihn neu:
sudo reboot
- Stellen Sie eine SSH-Verbindung zu MVM02 her und führen Sie den folgenden Befehl aus, um den neu gestarteten Node zu überwachen, damit er den Status "Ready" erreicht:
watch kubectl get nodes
- Sobald MVM03 den Status "Bereit" meldet, stellen Sie eine SSH-Verbindung zu MVM03 her und führen Sie den folgenden Befehl aus, um die Sperrung aufzuheben und die Wartungsetikette zu entfernen .
kubectl uncordon pfmp-mvm03 ; kubectl label node pfmp-mvm03 cmo.maintenance.mode-
Hinweis: Das "-" nach
cmo.maintenance.mode Im obigen Befehl ist sehr wichtig. Vergessen Sie nicht, das Bindestrich-Symbol einzufügen. Dies ist erforderlich, um das Etikett vom Node zu entfernen.
- Warten Sie 5 bis 20 Minuten und führen Sie dann den Befehl in Schritt 1 aus, um die Integrität des Datenbankclusters anzuzeigen. Sie können die Schritte für den nächsten MVM wiederholen, sobald die Ausgabe mit dem folgenden Beispiel für eine funktionierende Datenbank übereinstimmt.
- Wiederholen Sie die Schritte 3 bis 8 auf MVM02 und dann auf MVM01.
Wenn Sie das Verfahren auf allen drei MVMs abgeschlossen haben, führen Sie den Befehl in Schritt 1 aus, um die Integrität der Postgres-Datenbank zu überprüfen. Ein Pod sollte der Leader sein und sich im Ausführungsstatus befinden. Es sollte eine Verzögerung von 0 MB vorliegen und beide Sync-Standby-Mitglieder sollten den Status " Streaming" aufweisen.
Beispiel für eine funktionsfähige Datenbank 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 | +-------------------------+------------------------------------------+--------------+-----------+----+-----------+