Bei Hochverfügbarkeitskonfigurationen für SAP in Google Cloud kann die Hauptursache von Problemen in der Clustersoftware, der SAP-Software, der Google Cloud-Infrastruktur oder in einer Kombination dieser Möglichkeiten liegen.
Pacemaker-Logs in Cloud Logging analysieren
Im folgenden Video wird gezeigt, wie Sie mithilfe von Cloud Logging Fehlerbehebungen für Hochverfügbarkeitskonfigurationen für SAP in Google Cloud starten.
Fehlgeschlagener Knoten in einem Linux-Cluster wird nach einem Failover nicht ordnungsgemäß neu gestartet
Wenn Ihr Linux-Hochverfügbarkeitscluster den Fencing-Agent fence_gce
verwendet und eine abgegrenzte VM dem Cluster nach einem Failover nicht wieder beitreten kann, müssen Sie möglicherweise den Start der Corosync-Software verzögern, wenn die Fencing-VMs neu gestartet werden.
Problem
Während eines Failovers fängt der Agent fence_gce
die fehlgeschlagene Compute Engine-VM ab, die neu gestartet und wieder dem Cluster hinzugefügt wird, bevor Pacemaker die Fencing-Aktion als abgeschlossen registriert. Da die Fencing-Aktion nicht als abgeschlossen registriert ist, fährt die neu gestartete VM die Pacemaker- und Corosync-Dienste herunter und verlässt den Cluster.
Diagnose
So bestätigen Sie, dass dies Ihr Problem ist:
Achten Sie darauf, dass der Cluster den Agent
fence_gce
verwendet:RHEL
pcs config
SLES
crm config show
Die Definition des Zaun-Agents enthält
fence_gce
.RHEL
Stonith Devices: Resource: STONITH-example-ha-vm1 (class=stonith type=fence_gce) Attributes: port=example-ha-vm1 project=example-project-123456 zone=us-central1-a Operations: monitor interval=300s timeout=120s (STONITH-example-ha-vm1-monitor-interval-60s) Resource: STONITH-example-ha-vm2 (class=stonith type=fence_gce) Attributes: port=example-ha-vm2 project=example-project-123456 zone=us-central1-c Operations: monitor interval=300s timeout=120s (STONITH-example-ha-vm2-monitor-interval-60s)
SLES
primitive fence-example-ha-vm1 stonith:fence_gce \ op monitor interval=300s timeout=120s \ op start interval=0 timeout=60s \ params port=example-ha-vm1 zone=us-central1-a project=example-project-123456 primitive fence-example-ha-vm2 stonith:fence_gce \ op monitor interval=300s timeout=120s \ op start interval=0 timeout=60s \ params port=example-ha-vm2 zone=us-central1-c project=example-project-123456
Suchen Sie im Systemlog nach den folgenden Nachrichten:
DATESTAMP> node2 stonith-ng[1106]: notice: Operation reboot of node2 by node1 for stonith_admin.1366@node1.c3382af8: OK DATESTAMP> node2 stonith-ng[1106]: error: stonith_construct_reply: Triggered assert at commands.c:2343 : request != NULL DATESTAMP> node2 stonith-ng[1106]: warning: Can't create a sane reply DATESTAMP> node2 crmd[1110]: crit: We were allegedly just fenced by node1 for node1! DATESTAMP> node2 pacemakerd[1055]: warning: Shutting cluster down because crmd[1110] had fatal failure
Lösung
Konfigurieren Sie die Betriebssysteme in beiden Clusterknoten so, dass der Start von Corosync verzögert wird, damit die Fence-Aktion Zeit hat, sich bei Pacemaker auf dem neuen primären Knoten als abgeschlossen zu registrieren. Legen Sie außerdem das Zeitlimit für den Neustart von Pacemaker fest, um die Verzögerung zu berücksichtigen.
So konfigurieren Sie einen verzögerten Start von Corosync:
Versetzen Sie den Cluster in den Wartungsmodus:
RHEL
pcs property set maintenance-mode=true
SLES
crm configure property maintenance-mode="true"
Legen Sie als Root auf jedem Clusterknoten eine Startverzögerung für Corosync fest:
Erstellen Sie eine
systemd
-Drop-in-Datei:systemctl edit corosync.service
Fügen Sie der Datei die folgenden Zeilen hinzu:
[Service] ExecStartPre=/bin/sleep 60
Speichern Sie die Datei und beenden Sie den Editor.
Laden Sie die Konfiguration des systemd-Managers neu.
systemctl daemon-reload
Überprüfen Sie als Root auf einem der Clusterknoten, ob das Pacemaker-Zeitlimit für Neustarts für beide Fencing-Agents festgelegt ist:
Prüfen Sie den Wert
pcmk_reboot_timeout
:crm_resource --resource FENCE_AGENT_NAME --get-parameter=pcmk_reboot_timeout
Ersetzen Sie
FENCE_AGENT_NAME
durch den Namen des Zaun-Agents.Wenn der Parameter
pcmk_reboot_timeout
nicht gefunden wird oder auf einen Wert kleiner als 300 festgelegt ist, legen Sie den Wert auf beiden Fencing-Agents fest:crm_resource --resource FENCE_AGENT_NAME --set-parameter=pcmk_reboot_timeout --parameter-value=300
Ersetzen Sie
FENCE_AGENT_NAME
durch den Namen des Zaun-Agents.Der Wert
pcmk_reboot_timeout
sollte größer sein als die Summe von:- Das Corosync-Zeitlimit
token
- Das Corosync-Konsenszeitlimit, das standardmäßig das Produkt aus
token
* 1,2 ist - Die Zeit, die für einen Neustart benötigt wird, einschließlich Verzögerungsattribut.
In Google Cloud sind 300 Sekunden für die meisten Cluster ausreichend.
- Das Corosync-Zeitlimit
Bestätigen Sie den neuen Wert
pcmk_reboot_timeout
:crm_resource --resource FENCE_AGENT_NAME --get-parameter=pcmk_reboot_timeout
Ersetzen Sie
FENCE_AGENT_NAME
durch den Namen des Zaun-Agents.
Beenden Sie den Wartungsmodus des Clusters:
RHEL
pcs property set maintenance-mode=false
SLES
crm configure property maintenance-mode="false"
Unbeabsichtigte Knotenaffinität, die einen bestimmten Knoten bevorzugt
Wenn Sie Ressourcen in einem Hochverfügbarkeitscluster mithilfe der Clusterbefehle manuell verschieben, stellen Sie fest, dass eine automatische Affinität oder Clienteinstellung für einen bestimmten Knoten festgelegt ist.
Problem
In Ihrem Linux Pacemaker-Hochverfügbarkeitscluster für SAP HANA oder SAP NetWeaver werden Ressourcen wie das SAP HANA-System oder SAP NetWeaver Central Services nur auf einem bestimmten Clusterknoten ausgeführt und es kommt bei einem Knotenfehler nicht wie erwartet zu einem Failover.
Daher können Probleme wie die folgenden auftreten:
Wenn Sie den SAP NetWeaver ASCS-Dienst-Failover auslösen, indem Sie einen Pacemaker-Befehl zum
move
einer Ressource an einen Clusterknoten ausgeben, wird die Ressource nicht gestartet und zeigt den Statusstopped
an.Wenn Sie den Befehl
standby
an einen Clusterknoten senden, um alle Ressourcen auf den anderen Knoten zu verschieben, werden die Ressourcen nicht gestartet.
Diagnose
Suchen Sie in den Pacemaker-Protokollen nach der Meldung, dass eine bestimmte Ressource nirgendwo ausgeführt werden kann. Beispiel:
2021-05-24 21:39:58 node_1 pacemaker-schedulerd (native_color) info: Resource NW1-ASCS01 cannot run anywhere
Prüfen Sie die Konfiguration der Standorteinschränkung von Pacemaker, um Einschränkungen zu ermitteln, die möglicherweise verhindern, dass die Ressourcen auf einem bestimmten Clusterknoten ausgeführt werden.
So prüfen Sie die Konfiguration der Standorteinschränkung von Pacemaker:
Standorteinschränkungen anzeigen:
cibadmin --query --scope constraints | grep rsc_location
Prüfen Sie die Standortbeschränkungen:
Explizite Standorteinschränkung: Standorteinschränkungen mit dem Wert
INFINITY
(Knoten bevorzugen) oder-INFINITY
(Knoten vermeiden). Beispiel:<rsc_location id="loc-constraint" rsc="NW1-ASCS01" score="INFINITY" node="nw-ha-1"/>
Es darf keine anderen Ortseinschränkungen mit dem Wert
INFINITY
oder-INFINITY
geben als die für die Begrenzungs-Agenten. In allen HA-Clustern sind Fence-Agents in einer Standorteinschränkung mit dem Wert-INFINITY
definiert, um zu verhindern, dass sie auf dem Knoten ausgeführt werden, der das Ziel des Fence-Vorgangs ist.Impliziter Standorteinschränkung: Wenn Sie den Pacemaker-Befehl ausführen, um eine Ressource an einen Clusterknoten zu verschieben oder die Ausführung einer Ressource auf einem Clusterknoten zu verbieten, wird der Einschränkungs-ID eine implizite Standorteinschränkung mit dem Präfix
cli-ban
odercli-prefer
hinzugefügt. Beispiel:<rsc_location id="cli-prefer-NW1-ASCS01" rsc="NW1-ASCS01" role="Started" node="nw-ha-2" score="INFINITY"/>
Lösung
Achten Sie darauf, dass die Standorteinschränkungen wie in unseren Bereitstellungsleitfäden beschrieben angegeben sind:
- Konfigurationsanleitung für vertikale skalierbares Hochverfügbarkeitscluster für SAP HANA unter RHEL
- Konfigurationsanleitung für vertikale skalierbares Hochverfügbarkeitscluster für SAP HANA unter SLES
- Anleitung für die manuelle Konfiguration von Hochverfügbarkeitsclustern für SAP NetWeaver unter RHEL
- Anleitung für die manuelle Konfiguration von Hochverfügbarkeitsclustern für SAP NetWeaver unter SLES
Wenn Sie eine explizite Standorteinschränkung korrigieren möchten, löschen Sie sie:
RHEL
pcs constraint remove RESOURCE_LOCATION_ID
SLES
crm configure delete RESOURCE_LOCATION_ID
Ersetzen Sie
RESOURCE_LOCATION_ID
durch die Standortbeschränkungs-ID.Wenn Sie eine implizite Standorteinschränkung korrigieren möchten, entfernen Sie alle für die angegebene Ressource definierten Einschränkungen.
Führen Sie nach jedem Befehl, mit dem Sie eine Ressource verschieben oder verbieten, den folgenden Befehl aus, um alle Einschränkungen zu entfernen:
RHEL
pcs resource clear RESOURCE_NAME
SLES
crm resource clear RESOURCE_NAME
Ersetzen Sie
RESOURCE_NAME
durch den Namen der Ressource, die Sie verschieben.
Beim Zaun-Agent ist ein Betriebsfehler aufgetreten
Der Fencing-Agent hat einen Fehler im Clusterstatus gemeldet.
Problem
In Ihrem Linux Pacemaker-Hochverfügbarkeitscluster für SAP HANA oder SAP NetWeaver hat der Fencing-Agent einen Fehler im Clusterstatus gemeldet. Beispiel:
Failed Resource Actions: STONITH-ha-node-01_monitor_300000 on ha-node-02 'unknown error' (1): call=153, status=Timed Out, exitreason='', last-rc-change='Mon Dec 21 23:40:47 2023', queued=0ms, exec=60003ms
Diagnose
Der in Ihrem SAP HANA- oder SAP NetWeaver-Hochverfügbarkeitscluster bereitgestellte Fencing-Agent ruft regelmäßig den Compute Engine API-Server auf, um den Status der Fencing-Zielinstanz zu prüfen. Wenn es bei der API-Aufrufantwort zu einer vorübergehenden Verzögerung oder zu einer Netzwerkunterbrechung kommt, kann der Monitoring-Vorgang des Zaun-Agents fehlschlagen oder eine Zeitüberschreitung auftreten.
Führen Sie den folgenden Befehl aus, um den Status des Zaun-Agents zu prüfen:
RHEL
pcs status
SLES
crm status
Wenn der Status des Zaun-Agenten stopped
lautet, verwenden Sie eine der Lösungsoptionen, um den Fehler zu beheben.
Der betriebliche Fehler des Zaun-Agents kann dazu führen, dass der Zaun-Agent angehalten wird. Pacemaker ruft die Zaun-Agents jedoch weiterhin mit einer Stopp-Anweisung in einem Zaun-Ereignis auf.
Lösung
Wenn der Status des Zaun-Agenten stopped
ist, haben Sie folgende Möglichkeiten:
Führen Sie den folgenden Befehl aus, um die Anzahl der Fehlversuche manuell zurückzusetzen und den Zaun-Agent neu zu starten:
RHEL
pcs resource cleanup FENCE_AGENT_NAME
SLES
crm resource cleanup FENCE_AGENT_NAME
Ersetzen Sie
FENCE_AGENT_NAME
durch den Namen des Zaun-Agents.Wenn Sie den Betriebsfehler des Zaun-Agents automatisch entfernen möchten, konfigurieren Sie den Parameter
failure-timeout
.Mit dem Parameter
failure-timeout
wird die Fehlerzahl nach der angegebenen Dauer zurückgesetzt und alle Betriebsfehler werden gelöscht. Wenn Sie diesen Parameter anwenden, müssen Sie den Cluster nicht neu starten oder in den Wartungsmodus versetzen.Führen Sie den folgenden Befehl aus, um den Parameter
failure-timeout
zu konfigurieren:crm_resource --meta --resource FENCE_AGENT_NAME --set-parameter failure-timeout --parameter-value DURATION
Ersetzen Sie Folgendes:
FENCE_AGENT_NAME
: der Name des Zaun-Agents.DURATION
: die Dauer nach dem letzten operativen Ausfall, nach dem die Fehlerzahl zurückgesetzt und der Fencing-Agent neu gestartet wird.
Fencing-Agent gcpstonith
wird eingestellt
Der Zaun-Agent gcpstonith
ist in Ihrer Konfiguration aktiv. Dieser Agent wird nicht mehr unterstützt. Der Kundenservice hat mitgeteilt, dass du stattdessen zu fence_gce
wechseln musst.
Problem
In Ihrem Linux Pacemaker-Hochverfügbarkeitscluster für SAP HANA unter SUSE Linux wird der Fencing-Agent gcpstonith
verwendet.
Beispiel:
# crm status | grep gcpstonith * STONITH-hana-vm1 (stonith:external/gcpstonith): Started hana-vm2 * STONITH-hana-vm2 (stonith:external/gcpstonith): Started hana-vm1
Diagnose
Der in Ihrem SAP HANA-Hochverfügbarkeitscluster bereitgestellte Fencing-Agent muss aktualisiert werden, damit stattdessen der im Betriebssystem enthaltene fence_gce
-Fencing-Agent verwendet wird. Das gcpstonith
-Agent-Script wurde auf Legacy-Systemen bereitgestellt und durch fence_gce
ersetzt. fence_gce
ist Teil des fence-agents
-SUSE Linux-Pakets. gcpstonith
wurde nur im Rahmen von SUSE Linux HANA-Bereitstellungen bereitgestellt.
Lösung
So migrieren Sie von gcpstonith
unter SUSE Linux:
Installieren Sie die folgenden zusätzlichen Pakete, die für Ihr Betriebssystem spezifisch sind:
Für SLES 15:
python3-oauth2client
undpython3-google-api-python-client
Für SLES 12:
python-google-api-python-client
,python-oauth2client
undpython-oauth2client-gce
Verwenden Sie den folgenden Befehl, um diese Pakete in Ihrem Betriebssystem zu installieren:
SLES 15
zypper in -y python3-oauth2client python3-google-api-python-client
SLES 12
zypper in -y python-google-api-python-client python-oauth2client python-oauth2client-gce
Aktualisieren Sie das
fence-agents
-Paket, um sicherzustellen, dass Sie die neueste Version installiert haben:zypper update -y fence-agents
Versetzen Sie den Cluster in den Wartungsmodus:
crm configure property maintenance-mode=true
Löschen Sie alle Begrenzungsgeräte aus Ihrem Cluster. Wenn Sie das letzte Fencing-Gerät löschen, werden Sie möglicherweise aufgefordert, zu bestätigen, dass in Ihrem Cluster keine
STONITH
-Ressourcen definiert sind.crm configure delete FENCING_RESOURCE_PRIMARY
crm configure delete FENCING_RESOURCE_SECONDARY
Erstellen Sie das Fencing-Gerät für die primäre Instanz neu:
crm configure primitive FENCING_RESOURCE_PRIMARY stonith:fence_gce \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params port="PRIMARY_INSTANCE_NAME" zone="PRIMARY_ZONE" \ project="PROJECT_ID" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30
Erstellen Sie das Fencing-Gerät für die sekundäre Instanz neu:
crm configure primitive FENCING_RESOURCE_SECONDARY stonith:fence_gce \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params port="SECONDARY_INSTANCE_NAME" zone="SECONDARY_ZONE" \ project="PROJECT_ID" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4
Legen Sie die Standortbeschränkungen fest:
crm configure location FENCING_LOCATION_NAME_PRIMARY \ FENCING_RESOURCE_PRIMARY -inf: "PRIMARY_INSTANCE_NAME" crm configure location FENCING_LOCATION_NAME_SECONDARY \ FENCING_RESOURCE_SECONDARY -inf: "SECONDARY_INSTANCE_NAME"
Beenden Sie den Wartungsmodus des Clusters:
crm configure property maintenance-mode=false
Prüfen Sie die Konfiguration:
crm config show related:FENCING_RESOURCE_PRIMARY
Prüfen Sie den Clusterstatus:
# crm status | grep fence_gce STONITH-hana-vm1 (stonith:fence_gce): Started hana-vm2 STONITH-hana-vm2 (stonith:fence_gce): Started hana-vm1
Ressourcen-Agent wurde angehalten
Ein Ressourcen-Agent konnte nicht gestartet werden und verbleibt im Status Stopped
.
Problem
In Ihrem Linux Pacemaker-Hochverfügbarkeitscluster für SAP HANA oder SAP NetWeaver hat der Ressourcen-Agent einen Fehler im Clusterstatus gemeldet. Beispiel:
Failed Resource Actions: rsc_SAPHana_DV0_HDB00_start_0 on ha-node-02 'error' (1): call=91, status='complete', last-rc-change='Wed Oct 18 18:00:31 2023', queued=0ms, exec=19010ms
Diagnose
Wenn ein laufender Ressourcen-Agent fehlschlägt, versucht Pacemaker, den Agent zu beenden und noch einmal zu starten. Wenn der Startvorgang aus irgendeinem Grund fehlschlägt, legt Pacemaker die Ressourcenfehleranzahl auf INFINITY
fest und versucht, den Agent auf einem anderen Knoten zu starten. Wenn der Ressourcen-Agent auf einem Knoten nicht gestartet werden kann, bleibt der Ressourcen-Agent im Status Stopped
.
Führen Sie den folgenden Befehl aus, um den Status des Ressourcen-Agents zu prüfen:
RHEL
pcs status
SLES
crm status
Für SAP HANA zeigt das folgende Beispiel den Ressourcen-Agent im Status Stopped
auf dem Knoten hana-b
:
Full List of Resources:
* STONITH-hana-a (stonith:fence_gce): Started hana-b
* STONITH-hana-b (stonith:fence_gce): Started hana-a
* Resource Group: g-primary:
* rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started hana-a
* rsc_vip_hc-primary (ocf::heartbeat:anything): Started hana-a
* Clone Set: cln_SAPHanaTopology_DV0_HDB00 [rsc_SAPHanaTopology_DV0_HDB00]:
* Started: [ hana-a hana-b ]
* Clone Set: msl_SAPHana_DV0_HDB00 [rsc_SAPHana_DV0_HDB00] (promotable):
* Masters: [ hana-a ]
* Stopped: [ hana-b ]
* STONITH-scaleup-majority (stonith:fence_gce): Started hana-b
Lösung
Wenn ein Ressourcen-Agent den Status Stopped
hat, gehen Sie so vor:
Starten Sie den Ressourcen-Agent manuell, indem Sie die Anzahl der Fehler zurücksetzen:
RHEL
pcs resource cleanup RESOURCE_AGENT_NAME
SLES
crm resource cleanup RESOURCE_AGENT_NAME
Ersetzen Sie
RESOURCE_AGENT_NAME
durch den Namen des Ressourcen-Agents. Beispiel:rsc_SAPHana_DV0_HDB00
.Prüfen Sie, ob der Status des Ressourcen-Agents den Status
Started
erreicht:crm_mon
Wenn der Ressourcen-Agent immer noch nicht gestartet werden kann, holen Sie die relevanten Diagnoseinformationen ein und wenden Sie sich an den Support.