Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel erklärt, wie man einen einfachen zwei-Knoten-Pacemaker-Cluster auf Red Hat Enterprise Linux (RHEL) einrichtet und konfiguriert. Die Anweisungen behandeln RHEL 9.x, RHEL 10.x und RHEL 8.6+.
Voraussetzungen
RHEL High Availability-Dokumentation
- Konfigurieren und Verwalten von Clustern mit Hochverfügbarkeit
- Unterstützungsrichtlinien für RHEL High Availability-Cluster – sbd und fence_sbd
- Unterstützungsrichtlinien für RHEL High Availability-Cluster – fence_azure_arm
- Durch Software emulierter Watchdog: Bekannte Einschränkungen
- Untersuchen der Komponenten von RHEL High Availability – sbd und fence_sbd
- Entwurfsleitfaden für RHEL High Availability-Cluster – Überlegungen zu sbd
- Überlegungen zur Einführung von RHEL 8 – Hochverfügbarkeit und Cluster
Azure spezifische RHEL-Dokumentation
RHEL-Dokumentation für SAP-Angebote
Übersicht
Dieser Leitfaden geht davon aus, dass Sie bereits die erforderliche Ressourcengruppe, Azure-virtuelles Netzwerk, Subnetz und virtuelle Maschinen (VMs) bereitgestellt haben.
Cluster, die unter Linux laufen, benötigen einen Fencing-Agenten, um ungesunde Knoten abzusperren. Um diese Aufgabe unter Azure zu erfüllen, verwenden Sie eine der folgenden Methoden:
- Storage Based Death (SBD) mit Azure Shared Disk
- Storage Based Death (SBD) mit iSCSI-Zielen
- Azure Fencing Agent
Hinweis
In diesem Dokument werden folgende Präfixe verwendet:
- [A]: gilt für alle Knoten.
- [1]: gilt nur für Knoten 1.
- [2]: gilt nur für Knoten 2.
Wichtig
In Azure verwenden RHEL-Hochverfügbarkeitscluster mit speicherbasiertem Zaun (fence_sbd) einen software-emulierten Watchdog. Lesen Sie die folgende Dokumentation bei der Nutzung von SBD.
Verwendung von SBD mit Azure Shared Disk
Durch die Verwendung von Azure Shared Disks kann man dieselbe Festplatte auf allen virtuellen Maschinen, die Teil des Clusters sind, mounten. Du kannst dein SBD-Gerät auf dieser gemeinsamen Festplatte hosten, ohne zusätzliche Infrastrukturanforderungen.
Vorteile
- Bietet eine native Azure-Shared-Block-Geräte-Option für SBD ohne zusätzliche Ressourcen.
- Virtuelle Maschinen verbinden die verwaltete Festplatte direkt und verringern so die Abhängigkeit von zusätzlichen Netzwerküberlegungen.
Wichtige Überlegungen
- Du kannst eine Azure-Shared-Festplatte mit der
Premium SSDSKU als SBD-Gerät verwenden. - Überprüfen Sie die Liste der unterstützten Betriebssysteme.
- SBD-Geräte, die eine Azure Premium-Shared-Festplatte verwenden, unterstützen lokal redundanten Speicher (LRS) und zonenredundanten Speicher (ZRS).
- Wählen Sie abhängig vom typ Ihrer Bereitstellung den geeigneten redundanten Speicher für einen Azure freigegebenen Datenträger als SBD-Gerät aus.
- Ein SBD-Gerät, das LRS für Azure Premium Shared Disk (skuName - Premium_LRS) verwendet, unterstützt nur Bereitstellungen in einer Verfügbarkeitsgruppe.
- Ein SBD-Gerät, das ZRS für eine Azure Premium-Shared-Festplatte (skuName - Premium_ZRS) verwendet, wird für Bereitstellungen in Verfügbarkeitszonen empfohlen.
- Der Azure freigegebene Datenträger, den Sie für SBD-Geräte verwenden, muss nicht groß sein. Der Wert maxShares bestimmt, von wie vielen Clusterknoten der freigegebene Datenträger verwendet werden kann. Zum Beispiel können Sie für Ihr SBD-Gerät in einem Zwei-Knoten-Cluster wie SAP ASCS/ERS oder SAP HANA Scale-up P1- oder P2-Datenträgergrößen verwenden.
- Für Cluster mit mehr als zwei Knoten beziehen Sie sich auf den dokumentierten Wert für maxShares für die ausgewählte Festplatte.
- Verbinden Sie kein Azure-Shared-Disk-SBD-Gerät über verschiedene Pacemaker-Cluster.
- Wenn Sie mehrere SBD-Geräte mit freigegebenem Azure-Datenträger verwenden, überprüfen Sie den Grenzwert für die maximale Anzahl von Datenträgern, die an eine VM angefügt werden können.
- Weitere Informationen zu Einschränkungen für Azure freigegebene Datenträger erhalten Sie, indem Sie den Abschnitt "Einschränkungen" in der Azure-Dokumentation zu freigegebenen Datenträgern sorgfältig überprüfen.
Verwendung von SBD mit iSCSI-Zielen
Diese Lösung erfordert, dass Sie Internet Small Computer System Interface (iSCSI)-Ziele auf mindestens einer weiteren virtuellen Maschine (VM) hosten.
Vorteile
- Diese iSCSI-Host-Server können auch iSCSI-Ziele für andere Pacemaker-Cluster in derselben Region hosten.
- Wenn du sie bereits vor Ort nutzt, erfordern sie keine Änderungen an der Steuerung des Pacemaker-Clusters.
Wichtige Überlegungen
- Du musst drei iSCSI-Host-Server nutzen, um die höchste Resilienz für deinen Cluster zu erreichen.
- Die Verwendung von nur einem Server führt zu einem Single Point of Failure, der verhindert, dass Ihr Cluster Fencing durchführen kann, wenn dieser Server ausfällt.
- Pacemaker erlaubt kein Fencing, wenn Sie nur zwei Ziele haben und eines ausgefallen ist.
- iSCSI-Zielhost-Server müssen sich in derselben Region wie deine Cluster befinden.
- Netzwerkrouting zwischen Ihren Clustern und iSCSI-Hostservern darf keine nicht-redundanten Netzwerkgeräte (wie eine Network Virtual Appliance) durchlaufen.
- Wartungsereignisse und andere Probleme mit Netzwerkgeräten können die Stabilität und Zuverlässigkeit der gesamten Clusterkonfiguration negativ beeinflussen.
Verwendung des Azure Fence Agents
Mit dem Azure Fence Agent kann Ihr Cluster Knoten isolieren, indem es die Azure-APIs direkt aufruft, um ausgefallene Knoten neu zu starten.
Vorteile
- Keine zusätzlichen Ressourcen nötig.
- Verwaltete Identitäten machen jede Pflege von Anmeldeinformationen überflüssig.
Wichtige Überlegungen
- Verwenden Sie Managed Idententities zur Authentifizierung. Wenn Sie derzeit einen Service Principal verwenden, aktualisieren Sie den Azure Fence Agent von SPN auf MSI.
- Der Azure Fence Agent benötigt ausgehende Konnektivität zu öffentlichen Azure-Endpunkten. Weitere Informationen sowie mögliche Lösungen finden Sie unter Konnektivität öffentlicher Endpunkte für VMs, die Azure Load Balancer Standard in SAP-Hochverfügbarkeitsszenarien verwenden.
- Die Überwachungs- und Fencingvorgänge sind deserialisiert. Das bedeutet: Wenn ein länger andauernder Überwachungsvorgang und ein gleichzeitiges Fencingereignis vorliegen, kommt es zu keiner Verzögerung beim Clusterfailover, da der Überwachungsvorgang bereits ausgeführt wird.
Bereitstellen eines Azure Shared Disk für SBD
Um eine gemeinsam genutzte Azure-Festplatte mit PowerShell zu erstellen und anzuhängen, führen Sie die folgenden Befehle aus. Wenn Sie Ressourcen über die Azure CLI oder das Azure-Portal bereitstellen möchten, siehe Deploy a ZRS Disk.
$ResourceGroup = "<ResourceGroupName>"
$DiskSizeInGB = 4
$DiskName = "<SBDDiskName>"
# Must be Equal to or greater than the Number of Nodes in the Cluster
$ShareNodes = 2
# Options are "Premium_LRS" or "Premium_ZRS"
$SKUName = "<DiskSKU>"
# VMs to attach the disk to
$vmNames = @("sap-cl1", "sap-cl2")
# Lun to attach the disk to. You should use the same lun on all servers in the cluster.
$lunNumber = <lunNumber>
$diskConfig = New-AzDiskConfig -Location $Location -SkuName $SkuName -CreateOption Empty -DiskSizeGB $DiskSizeInGB -MaxSharesCount $ShareNodes
$dataDisk = New-AzDisk -ResourceGroupName $ResourceGroup -DiskName $DiskName -Disk $diskConfig
# Attach SBD disk to cluster VMs
foreach ($vmName in $vmNames)
{
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
Add-AzVMDataDisk -VM $vm -Name $diskName -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun $lunNumber
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup -Verbose
}
Verwenden Sie iSCSI-Ziele
Baue iSCSI-Zielhost-Server
Bereite drei virtuelle Maschinen bereit, die auf einer unterstützten RHEL-OS-Version laufen. Die VMs müssen nicht groß sein. VM-Größen wie Standard_E2s oder Standard_D2s sind ausreichend.
Hinweis
Du musst RHEL nicht für SAP mit HA- und Update-Services verwenden, oder RHEL für das SAP Apps OS-Image für den iSCSI-Zielserver. Man kann stattdessen ein Standard-RHEL-OS-Image verwenden. Der Unterstützungslebenszyklus variiert jedoch zwischen verschiedenen Betriebssystem-Produktversionen.
Installiere die neuesten Updates und starte bei Bedarf neu.
sudo dnf -y updateInstalliere das iSCSI-Zielpaket.
sudo dnf install -y targetcliAktivieren und starten Sie den iSCSI-Dienst.
sudo systemctl start target sudo systemctl enable targetÖffne den Port in der Firewall.
sudo firewall-cmd --add-port=3260/tcp --permanent sudo firewall-cmd --reload
Erstellen Sie iSCSI-Ziele
Für jeden Cluster musst du auf jedem iSCSI-Hostserver eine iSCSI-Festplatte bereitstellen und dann jedem Cluster-Knoten Zugriff auf diese Festplatte gewähren. In diesem Beispiel erstellen Sie Festplatten für zwei verschiedene Cluster:
- ascsnw1: Der ASCS/ERS-Cluster für NW1
- hdbnw1: Der HANA-Datenbankcluster für NW1
- sap-cl1 und sap-cl2: Hostnamen für die NW1 ASCS/ERS-Clusterknoten
- sap-db1 und sap-db2: Hostnamen für die NW1 HANA-Clusterknoten
- Erstellen Sie den Stammordner für alle SBD-Geräte.
sudo mkdir /sbd - Erstellen Sie das SBD-Gerät für den ersten Cluster (ascsnw1).
# Create Storage Object sudo targetcli backstores/fileio create sbdascsnw1 /sbd/sbdascsnw1 50M write_back=false # Create iSCSI Target sudo targetcli iscsi/ create iqn.2006-04.ascsnw1.local:ascsnw1 # Creates the LUN and attaches it to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/luns/ create /backstores/fileio/sbdascsnw1 # Grant Cluster Node 1 (sap-cl1) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.sap-cl1.local:sap-cl1 # Grant Cluster Node 2 (sap-cl2) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.sap-cl2.local:sap-cl2 - Erstellen Sie das SBD-Gerät für den zweiten Cluster (hdbnw1).
# Create Storage Object sudo targetcli backstores/fileio create sbdhdbnw1 /sbd/sbdhdbnw1 50M write_back=false # Create iSCSI Target sudo targetcli iscsi/ create iqn.2006-04.hdbnw1.local:hdbnw1 # Creates the LUN and attaches it to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.hdbnw1.local:hdbnw1/tpg1/luns/ create /backstores/fileio/sbdhdbnw1 # Grant Cluster Node 1 (sap-db1) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.hdbnw1.local:hdbnw1/tpg1/acls/ create iqn.2006-04.sap-db1.local:sap-db1 # Grant Cluster Node 2 (sap-db2) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.hdbnw1.local:hdbnw1/tpg1/acls/ create iqn.2006-04.sap-db2.local:sap-db2 - Speichern Sie die Konfiguration.
sudo targetcli saveconfig - Überprüfe die Einrichtung.
sudo targetcli ls o- / ............................................................................................... [...] o- backstores .................................................................................... [...] | o- block ........................................................................ [Storage Objects: 0] | o- fileio ....................................................................... [Storage Objects: 2] | | o- sbdascsnw1 ..................................... [/sbd/sbdascsnw1 (50.0MiB) write-thru activated] | | | o- alua ......................................................................... [ALUA Groups: 1] | | | o- default_tg_pt_gp ............................................. [ALUA state: Active/optimized] | | o- sbdhdbnw1 ....................................... [/sbd/sbdhdbnw1 (50.0MiB) write-thru activated] | | o- alua ......................................................................... [ALUA Groups: 1] | | o- default_tg_pt_gp ............................................. [ALUA state: Active/optimized] | o- pscsi ........................................................................ [Storage Objects: 0] | o- ramdisk ...................................................................... [Storage Objects: 0] o- iscsi .................................................................................. [Targets: 2] | o- iqn.2006-04.hdbnw1.local:hdbnw1 ......................................................... [TPGs: 1] | | o- tpg1 ..................................................................... [no-gen-acls, no-auth] | | o- acls ................................................................................ [ACLs: 2] | | | o- iqn.2006-04.sap-db1.local:sap-db1 .......................................... [Mapped LUNs: 1] | | | | o- mapped_lun0 ..................................................... [lun0 fileio/sbdhdb (rw)] | | | o- iqn.2006-04.sap-db2.local:sap-db2 .......................................... [Mapped LUNs: 1] | | | o- mapped_lun0 ..................................................... [lun0 fileio/sbdhdb (rw)] | | o- luns ................................................................................ [LUNs: 1] | | | o- lun0 ................................. [fileio/sbdhdbnw1 (/sbd/sbdhdbnw1) (default_tg_pt_gp)] | | o- portals .......................................................................... [Portals: 1] | | o- 0.0.0.0:3260 ........................................................................... [OK] | o- iqn.2006-04.ascsnw1.local:ascsnw1 ....................................................... [TPGs: 1] | o- tpg1 ..................................................................... [no-gen-acls, no-auth] | o- acls ................................................................................ [ACLs: 2] | | o- iqn.2006-04.sap-cl1.local:sap-cl1 .......................................... [Mapped LUNs: 1] | | | o- mapped_lun0 ................................................. [lun0 fileio/sbdascsnw1 (rw)] | | o- iqn.2006-04.sap-cl2.local:sap-cl2 .......................................... [Mapped LUNs: 1] | | o- mapped_lun0 ................................................. [lun0 fileio/sbdascsnw1 (rw)] | o- luns ................................................................................ [LUNs: 1] | | o- lun0 ............................... [fileio/sbdascsnw1 (/sbd/sbdascsnw1) (default_tg_pt_gp)] | o- portals .......................................................................... [Portals: 1] | o- 0.0.0.0:3260 ........................................................................... [OK] o- loopback ............................................................................... [Targets: 0]
Azure Fence Agent konfigurieren
Identität erstellen
Um eine verwaltete Identität (MSI) zu erstellen, erstellen Sie für jede VM im Cluster eine systemzugewiesene verwaltete Identität . Benutzerzugewiesene verwaltete Identitäten werden derzeit nicht unterstützt.
Benutzerdefinierte Rolle erstellen
Ihre Identität benötigt über Azure RBAC Berechtigungen, um Fencing-Aktionen für Ihre VMs durchzuführen. Um dem Least Privileged Access (LPA) Sicherheitsmodell zu entsprechen, erstellen Sie eine benutzerdefinierte RBAC-Rolle.
Verwenden Sie für Ihre Rolle folgende Definition und ersetzen Sie bei Bedarf Ihre Abonnement-ID(s):
{ "Name": "Linux Fence Agent", "description": "Allowed to power-off and start virtual machines", "assignableScopes": [ "/subscriptions/<Subscription 1 ID (GUID)>", "/subscriptions/<Subscription N ID (GUID)>" ], "actions": [ "Microsoft.Compute/*/read", "Microsoft.Compute/virtualMachines/powerOff/action", "Microsoft.Compute/virtualMachines/start/action" ], "notActions": [], "dataActions": [], "notDataActions": [] }Weise die benutzerdefinierte Rolle deinen Identitäten zu.
Für jede VM in Ihrem Cluster weisen Sie deren verwaltete Identität der benutzerdefinierten Rolle "Linux Fence Agent" für jede VM im Cluster, einschließlich ihrer selbst, zu. Ausführliche Schritte finden Sie unter Zuweisen des Zugriffs einer verwalteten Identität auf eine Ressource über das Azure-Portal.
Wichtig
Beachten Sie, dass sich die Zuweisung und das Entfernen von Berechtigungen mit verwalteten Identitäten verzögern können, bis sie wirksam werden.
Erstellen und konfigurieren Sie einen Cluster
[A] Aktualisieren Sie das Betriebssystem und starten Sie bei Bedarf neu.
sudo dnf -y update[A] Installieren Sie die erforderlichen Cluster-Pakete.
sudo dnf install -y nmap-ncat pcs pacemaker resource-agents resource-agents-cloud[A] Installieren Sie die erforderlichen Zaunpakete.
sudo dnf install -y sbd fence-agents-sbdsudo dnf install -y sbd fence-agents-sbd iscsi-initiator-utilssudo dnf install -y fence-agents-azure-arm[A] DNS konfigurieren.
Sie können entweder einen DNS-Server verwenden oder
/etc/hostsauf allen Knoten ändern. In diesem Beispiel wird die Verwendung der Datei/etc/hostsgezeigt.Aktualisieren Sie die Einträge, sodass sie mit Ihren IPs und Hostnamen übereinstimmen.
sudo vi /etc/hosts [...] # IP address of cluster node 1 10.27.0.6 sap-cl1 # IP address of cluster node 2 10.27.0.7 sap-cl2sudo vi /etc/hosts [...] # IP address of cluster node 1 10.0.0.6 sap-cl1 # IP address of cluster node 2 10.0.0.7 sap-cl2 # IP address of iSCSI Target Host Server 1 10.0.0.17 sbd-iscsi1 # IP address of iSCSI Target Host Server 1 10.0.0.18 sbd-iscsi2 # IP address of iSCSI Target Host Server 1 10.0.0.19 sbd-iscsi3[A] Aktualisiere das Passwort auf allen Knoten, damit es
haclustergleich ist.sudo passwd hacluster[A] Aktualisieren Sie die Firewall.
sudo firewall-cmd --add-service=high-availability --permanent sudo firewall-cmd --reload[A] Schrittmacher-Dienste aktivieren.
sudo systemctl start pcsd.service sudo systemctl enable pcsd.service[1] Erstelle den Cluster.
sudo pcs host auth sap-cl1 sap-cl2 -u hacluster sudo pcs cluster setup ascsnw1 sap-cl1 sap-cl2 totem token=30000 sudo pcs cluster start --allKonfigurieren Sie eine Startverzögerung für den Pacemaker.
Wenn Pacemaker unmittelbar nach dem Booten gestartet wird, kann dies dazu führen, dass ein Knoten dem Cluster wieder beitritt, bevor das Failover abgeschlossen ist, wodurch das Failover verhindert oder die Wiederherstellung verzögert werden kann. Um dieses Problem zu lösen, verwenden Sie einen Timer-Service, um den Start des Herzschrittmachers beim Neustart zu verzögern.
-
[A] Timer-Service konfigurieren.
sudo vi /etc/systemd/system/pacemaker.timer[Unit] Description=Delay start of pacemaker.service after boot [Timer] OnBootSec=186 Unit=pacemaker.service [Install] WantedBy=timers.target -
[A] Timer-Service aktivieren.
sudo systemctl daemon-reload sudo systemctl enable pacemaker.timer -
[1] Schrittmacher-Dienste deaktivieren.
sudo pcs cluster disable --all
-
[A] Timer-Service konfigurieren.
Validiere den Cluster.
-
[1] Schrittmacher-Cluster validieren.
sudo pcs status Cluster name: ascsnw1 Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: sap-cl1 (version 3.0.0-5.1.el10_0-8818a21) - partition with quorum * Last updated: Tue May 19 22:15:08 2026 on sap-cl1 * Last change: Tue Apr 21 23:11:34 2026 by root via root on sap-cl1 * 2 nodes configured * 0 resource instances configured Node List: * Online: [ sap-cl1 sap-cl2 ] Full List of Resources: Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled -
[A] Dienste validieren.
systemctl list-unit-files pacemaker.timer pacemaker.service corosync.service pcsd.serviceUNIT FILE STATE PRESET corosync.service disabled disabled pacemaker.service disabled disabled pacemaker.timer enabled disabled pcsd.service enabled disabled
-
[1] Schrittmacher-Cluster validieren.
Zäune konfigurieren
-
[A] Aktivieren Sie den SBD-Dienst.
sudo systemctl enable sbd -
[A] Software-Watchdog aktivieren.
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[A] Entdecken Sie die iSCSI-Geräte-ID.
- Bestimmen Sie den Mount-Punkt anhand der LUN-Nummer
ls -l /dev/disk/azure/scsi1/lun1 lrwxrwxrwx. 1 root root 12 Apr 16 20:22 /dev/disk/azure/scsi1/lun1 -> ../../../sdb - Rufen Sie die iSCSI-Geräte-ID von der Einbindung ab.
ls -l /dev/disk/by-id/scsi-3* | grep -i sdb lrwxrwxrwx. 1 root root 9 Apr 16 20:22 /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -> ../../sdb
- Bestimmen Sie den Mount-Punkt anhand der LUN-Nummer
-
[1] Erstellen Sie das SBD-Gerät.
sudo sbd -d /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -1 60 -4 120 create
-
[1] Fügen Sie das SBD-Gerät dem Cluster hinzu.
sudo pcs stonith create sbd fence_sbd devices=/dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 op monitor interval=600 timeout=15 -
[1] Ändern Sie die SBD-Konfigurationseinstellungen.
sudo pcs property set stonith-timeout=210 sudo pcs property set stonith-enabled=true -
[A] SBD-Konfigurationsdatei validieren.
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
-
[A] Aktivieren Sie die erforderlichen Dienste.
sudo systemctl enable sbd iscsi iscsid -
[A] Software-Watchdog aktivieren.
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[1] Aktualisieren Sie den
InitiatorNamefür Knoten 1.sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl1.local:sap-cl1 -
[2] Aktualisieren Sie den
InitiatorNamefür Knoten 2.# Node 2 sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl2.local:sap-cl2 -
[A] Die iSCSI-Dienste neu starten.
sudo systemctl restart iscsi iscsid -
[A] Mounte die iSCSI-Ziele von allen iSCSI-Host-Servern.
for hostServer in sbd-iscsi1 sbd-iscsi2 sbd-iscsi3; do iscsiadm -m discovery --type=st --portal=${hostServer}:3260 iscsiadm -m node -T iqn.2006-04.ascsnw1.local:ascsnw1 --login --portal=${hostServer}:3260 iscsiadm -m node --portal=${hostServer}:3260 -T iqn.2006-04.ascsnw1.local:ascsnw1 --op=update --name=node.startup --value=automatic done -
[A] Entdecken Sie die iSCSI-Geräte-IDs.
- Bestimmen Sie die iSCSI-Montagepunkte.
lsscsi [0:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda [1:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdb [2:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sdc [3:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sdd [4:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sde - Hol dir die iSCSI-Geräte-IDs.
ls -l /dev/disk/by-id/scsi-3* | grep sd[c,d,e] lrwxrwxrwx 1 root root 9 Jul 21 18:02 /dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528 -> ../../sdd lrwxrwxrwx 1 root root 9 Jul 21 17:50 /dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff -> ../../sdc lrwxrwxrwx 1 root root 9 Jul 21 18:04 /dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 -> ../../sde
- Bestimmen Sie die iSCSI-Montagepunkte.
-
[1] Erstellen Sie die SBD-Geräte.
sudo sbd -d /dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528 -1 60 -4 120 create sudo sbd -d /dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff -1 60 -4 120 create sudo sbd -d /dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 -1 60 -4 120 create
-
[1] Fügen Sie die SBD-Geräte dem Cluster hinzu.
sudo pcs stonith create sbd fence_sbd \ devices=/dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528,/dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff,/dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 \ op monitor interval=600 timeout=120 -
[1] Ändern Sie die SBD-Konfigurationseinstellungen.
sudo pcs property set stonith-timeout=210 sudo pcs property set stonith-enabled=true -
[A] SBD-Konfigurationsdatei validieren.
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
[1] Configure Azure Fence Agent.
Hinweis
Wenn Sie Azure Government Cloud verwenden, müssen Sie die
cloud=Option bei der Konfiguration des Azure Fence Agents angeben. Beispiel:cloud=usgovfür die Azure Government Cloud der US-Regierung.sudo pcs stonith create rsc_st_azure fence_azure_arm msi=true \ resourceGroup="<ResourceGroupName>" subscriptionId="<SubscriptionID>" \ pcmk_host_map="sap-cl1:<AzureVMNameCL1>;sap-cl2:<AzureVMNameCL2>" \ power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 \ pcmk_monitor_retries=4 pcmk_action_limit=3 pcmk_delay_max=15 \ meta failure-timeout=120s op monitor interval=3600 timeout=120[1] Konfigurieren Sie den Cluster für Azure Fence Agent.
sudo pcs property set stonith-enabled=true sudo pcs property set stonith-timeout=900
Aufbau eines Herzschrittmacher-Clusters mit mehr als zwei Knoten
Wenn Sie einen größeren Cluster aufbauen, beachten Sie folgende Überlegungen:
[1] Stell die Clusterkonfiguration ein.
Die Werte
Votequorum - Expected votesundVotequorum - Flags - 2Nodewerden automatisch aktualisiert, wenn du einen dritten oder weiteren Knoten hinzufügst. Prüfe, dass das2NodeFlag fehlt undVotequorum - Expected votesdie Anzahl der Knoten in deinem Cluster entspricht.sudo pcs quorum status Quorum information ------------------ [...] Votequorum information ---------------------- Expected votes: 3 Highest expected: 3 Total votes: 3 Quorum: 2 Flags: Quorate WaitForAll Membership information ---------------------- [...]Passen Sie die Zaunkonfiguration an.
sudo crm resource param stonith-sbd delete pcmk_delay_max sudo crm resource param stonith-sbd set pcmk_action_limit -1sudo crm resource param rsc_st_azure delete pcmk_delay_max sudo crm resource param rsc_st_azure pcmk_action_limit -1
Konfigurieren von Pacemaker für geplante Azure-Ereignisse
Scheduled Events ist ein Azure-Metadaten-Service, der Ihrer Anwendung Zeit gibt, sich auf die Wartung der VM vorzubereiten. Es liefert Informationen über bevorstehende Wartungsereignisse, wie zum Beispiel einen Neustart, damit Ihre Anwendung sich darauf vorbereiten und Störungen minimieren kann.
Der azure-events-az Resource Agent überwacht diesen Metadatendienst. Wenn der Agent Ereignisse erkennt und feststellt, dass ein weiterer Clusterknoten verfügbar ist, setzt er ein Integritätsattribut auf Knotenebene #health-azure auf -1000000. Dieser Wert führt dazu, dass der Cluster den Knoten als ungesund betrachtet und Ressourcen vom betroffenen Knoten wegzieht. Die Standortbeschränkung stellt sicher, dass Ressourcen, die mit health- beginnen, ausgeschlossen werden, da der azure-events-az-Agent weiterhin auf beiden Knoten laufen muss. Sobald der betroffene Clusterknoten frei von laufenden Clusterressourcen ist, benachrichtigt der Agent den Metadatendienst und das geplante Ereignis kann fortgesetzt werden. Wenn alle Ereignisse abgeschlossen sind, setzt der Resource Agent das Attribut #health-azure wieder auf 0, wodurch der Knoten wieder als gesund markiert wird.
Wichtig
Zuvor wurde in diesem Dokument die Verwendung des Ressourcenagents azure-events beschrieben. Der neue Ressourcenagent azure-events-az unterstützt Azure-Umgebungen, die in verschiedenen Verfügbarkeitszonen bereitgestellt werden, vollständig. Verwenden Sie den neueren azure-events-az Agent für alle hochverfügbaren SAP-Systeme mit Pacemaker.
Installiere und aktualisiere das
resource-agentsPaket.sudo dnf install -y resource-agents[1] Stelle den Cluster in Wartungsmodus.
sudo pcs property set maintenance-mode=true[1] Festlegen der Strategie und Einschränkung des Pacemaker-Clusterintegritätsknotens.
Wichtig
Definieren Sie keine anderen, mit
health-beginnenden Ressourcen im Cluster (außer denjenigen, die in den nächsten Schritten beschrieben werden).sudo pcs property set node-health-strategy=custom sudo pcs constraint location 'regexp%!health-.*' \ rule score-attribute='#health-azure' \ "defined #uname"[1] Legen Sie den Anfangswert der Clusterattribute fest.
Führe für jeden Cluster-Knoten einen Befehl aus. Für horizontale Skalierungsumgebungen sollte die Majority-Maker-VM einbezogen werden.
# Node 1 sudo crm_attribute --node sap-cl1 --name '#health-azure' --update 0 # Node 2 sudo crm_attribute --node sap-cl2 --name '#health-azure' --update 0 # Node N sudo crm_attribute --node sap-clN --name '#health-azure' --update 0[1] Konfigurieren Sie die Ressourcen in Pacemaker. Die Ressourcen müssen mit
health-azurebeginnen.sudo pcs resource create health-azure-events \ ocf:heartbeat:azure-events-az \ meta failure-timeout=120s \ op monitor interval=10s timeout=240s \ op start timeout=10s start-delay=90ssudo pcs resource clone health-azure-events meta allow-unhealthy-nodes=trueNehmen Sie den Pacemaker-Cluster aus dem Wartungsmodus und bereinigen Sie etwaige Fehler
sudo pcs property set maintenance-mode=false sudo pcs resource cleanupÜberprüfen Sie, dass das
health-azure-eventsauf allen Knoten erfolgreich startet.sudo pcs status Cluster name: ascsnw1 Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: sap-cl1 (version 3.0.0-5.1.el10_0-8818a21) - partition with quorum * Last updated: Tue May 19 22:15:08 2026 on sap-cl1 * Last change: Tue Apr 21 23:11:34 2026 by root via root on sap-cl1 * 2 nodes configured * 3 resource instances configured Node List: * Online: [ sap-cl1 sap-cl2 ] Full List of Resources: * sbd (stonith:fence_sbd): Started sap-cl1 * Clone Set: health-azure-events-clone [health-azure-events]: * Started: [ sap-cl1 sap-cl2 ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled sbd: active/enabledDie erste Abfrageausführung für geplante Ereignisse kann bis zu zwei Minuten dauern. Pacemaker-Tests mit geplanten Ereignissen können Aktionen für Neustart oder erneutes Bereitstellen für die Cluster-VMs verwenden. Weitere Informationen finden Sie unter Geplante Ereignisse.
Optionale Fencingkonfiguration
Tipp
Dieser Abschnitt ist nur relevant, wenn Sie das spezielle Fencinggerät fence_kdump konfigurieren möchten.
Wenn Diagnoseinformationen innerhalb der VM gesammelt werden müssen, kann es hilfreich sein, ein weiteres Fencinggerät basierend auf dem Fence-Agent fence_kdump zu konfigurieren. Der fence_kdump-Agent kann erkennen, ob ein Knoten in die kdump-Absturzwiederherstellung eingetreten ist, und den Abschluss des Absturzwiederherstellungsdiensts ermöglichen, bevor andere Fencingmethoden aufgerufen werden. Beachten Sie, dass fence_kdump kein Ersatz für herkömmliche Zaunmechanismen wie sbD oder Azure Zaunagent ist, wenn Sie Azure VMs verwenden.
Wichtig
Wenn fence_kdump als Fencinggerät der ersten Ebene konfiguriert ist, führt dies zu Verzögerungen bei den Fencingvorgängen bzw. zu Verzögerungen beim Failover der Anwendungsressourcen.
Bei erfolgreicher Erkennung eines Absturzabbilds wird das Fencing verzögert, bis der Absturzwiederherstellungsdienst ausgeführt wurde. Wenn der fehlerhafte Knoten nicht erreichbar ist oder nicht antwortet, wird das Fencing auf der Grundlage der ermittelten Zeit, der konfigurierten Anzahl von Iterationen und des fence_kdump-Timeouts verzögert.
Das vorgeschlagene fence_kdump-Timeout muss möglicherweise an die jeweilige Umgebung angepasst werden.
Es wird empfohlen, fence_kdump Fencing nur zu konfigurieren, wenn dies erforderlich ist, um Diagnosen innerhalb der VM zu sammeln und immer in Kombination mit herkömmlichen Zaunmethoden wie SBD oder Azure Zaun-Agent zu verwenden.
Die folgenden Red Hat-KB-Artikel enthalten wichtige Informationen zum Konfigurieren des fence_kdump-Fencings:
- Erfahren Sie , wie kann ich fence_kdump in einem Red Hat Pacemaker-Cluster konfigurieren?
- Konfigurieren/Verwalten von Fencingebenen im RHEL-Cluster mit Pacemaker
- Informationen zum Ändern des Standardtimeouts finden Sie unter Wie kann ich kdump für die Verwendung mit dem RHEL 6, 7, 8 HA-Add-On konfigurieren?
- Informationen zum Reduzieren der Failoververzögerung bei der Verwendung von
fence_kdumpfinden Sie unter Kann ich die erwartete Verzögerung des Failovers beim Hinzufügen der fence_kdump-Konfiguration verringern?
Führen Sie die folgenden optionalen Schritte aus, um fence_kdump zusätzlich zur Konfiguration des Azure Fence-Agents als erste Ebene der Zaunkonfiguration hinzuzufügen.
[A] Vergewissern Sie sich, dass
kdumpaktiv ist und konfiguriert wurde.systemctl is-active kdump # Expected result # active[A] Installieren Sie den Fence-Agent
fence_kdump.sudo dnf install -y fence-agents-kdump[1] Erstellen Sie ein Fencinggerät vom Typ
fence_kdumpim Cluster.pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="sap-cl1 sap-cl2" timeout=30[1] Konfigurieren Sie Fencingebenen so, dass der Fencingmechanismus
fence_kdumpzuerst aktiviert wird.pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="sap-cl1 sap-cl2" pcs stonith level add 1 sap-cl1 rsc_st_kdump pcs stonith level add 1 sap-cl2 rsc_st_kdump # Replace <stonith-resource-name> to the resource name of the STONITH resource configured in your pacemaker cluster (example based on above configuration - sbd or rsc_st_azure) pcs stonith level add 2 sap-cl1 <stonith-resource-name> pcs stonith level add 2 sap-cl2 <stonith-resource-name> # Check the fencing level configuration pcs stonith level # Example output # Target: sap-cl1 # Level 1 - rsc_st_kdump # Level 2 - <stonith-resource-name> # Target: sap-cl2 # Level 1 - rsc_st_kdump # Level 2 - <stonith-resource-name>[A] Lassen Sie die erforderlichen Ports für
fence_kdumpin der Firewall zu.firewall-cmd --add-port=7410/udp --permanent firewall-cmd --reload[A] Führen Sie die
fence_kdump_nodes-Konfiguration in/etc/kdump.confdurch, umfence_kdump-Timeoutfehler für einige Versionen vonkexec-toolszu vermeiden. Für weitere Informationen finden Sie unter fence_kdump-Timeout, wenn „fence_kdump_nodes“ nicht mit kexec-tools-Version 2.0.15 oder höher angegeben wird. Hier wird die Beispielkonfiguration für einen Cluster mit zwei Knoten gezeigt. Nachdem Sie eine Änderung in/etc/kdump.confvorgenommen haben, muss das kdump-Image neu generiert werden. Starten Sie dazu denkdump-Dienst neu.vi /etc/kdump.conf # On node prod-cl1-0 make sure the following line is added fence_kdump_nodes prod-cl1-1 # On node prod-cl1-1 make sure the following line is added fence_kdump_nodes prod-cl1-0 # Restart the service on each node systemctl restart kdump[A] Stellen Sie sicher, dass die
initramfs-Imagedatei die Dateienfence_kdumpundhostsenthält.lsinitrd /boot/initramfs-$(uname -r)kdump.img | egrep "fence|hosts" # Example output # -rw-r--r-- 1 root root 208 Jun 7 21:42 etc/hosts # -rwxr-xr-x 1 root root 15560 Jun 17 14:59 usr/libexec/fence_kdump_sendTesten Sie die Konfiguration, indem Sie einen Knoten zum Absturz bringen.
Wichtig
Wenn der Cluster bereits in der Produktion genutzt wird, planen Sie den Test entsprechend, da ein Absturz eines Knotens Auswirkungen auf die Anwendung hat.
echo c > /proc/sysrq-trigger
Nächste Schritte
- Azure Virtual Machines – Planung und Implementierung für SAP
- Azure Virtual Machines – Bereitstellung für SAP
- Azure Virtual Machines – DBMS-Bereitstellung für SAP
- Hohe Verfügbarkeit für NFS Simple Mount auf Azure-VMs unter Red Hat Enterprise Linux.
- Informationen zur Erzielung von Hochverfügbarkeit und zur Planung der Notfallwiederherstellung für SAP HANA auf Azure-VMs finden Sie unter Hochverfügbarkeit von SAP HANA auf virtuellen Azure-Computern.