Pacemaker instellen op Red Hat Enterprise Linux in Azure

Dit artikel legt uit hoe je een eenvoudige twee-knoop Pacemaker-cluster opzet en configureert op Red Hat Enterprise Linux (RHEL). De instructies behandelen RHEL 8.6+, RHEL 9.x, en RHEL 10.x.

Prerequisites

Overzicht

Deze gids gaat ervan uit dat je de benodigde resource group, Azure virtueel netwerk, subnet en virtuele machines (VM's) al hebt uitgerold.

Clusters die op Linux draaien, vereisen een fencing agent om ongezonde knooppunten te fenceen. Om deze taak op Azure uit te voeren, gebruik je een van de volgende methoden:

  • Storage Based Death (SBD) met Azure Shared Disk
  • Storage Based Death (SBD) met iSCSI-doelen
  • Azure Fencing Agent

Notitie

De volgende voorvoegsels worden in dit document gebruikt:

  • [A]: Van toepassing op alle knooppunten.
  • [1]: Alleen van toepassing op knooppunt 1.
  • [2]: Alleen van toepassing op knooppunt 2.

Belangrijk

In Azure gebruiken RHEL high availability-clusters met opslaggebaseerde afscherming (fence_sbd) een software-geëmuleerde waakhond. Bekijk de volgende documentatie bij het gebruik van SBD.

Gebruik van SBD met Azure Shared Disk

Door gebruik te maken van Azure Shared Disks kun je dezelfde schijf mounten op alle virtuele machines die deel uitmaken van de cluster. Je kunt je SBD-apparaat op die gedeelde schijf hosten zonder extra infrastructuurvereisten.

Diagram van een gedeelde Azure-schijf als een SBD-apparaat in een pacemakercluster.

Voordelen

  • Biedt een native Azure shared block device-optie voor SBD zonder extra middelen te vereisen.
  • Virtuele machines verbinden de beheerde schijf direct, waardoor de afhankelijkheid van extra netwerkoverwegingen wordt verminderd.

Belangrijke overwegingen

  • Je kunt een gedeelde Azure-schijf met de Premium SSD SKU als SBD-apparaat gebruiken.
  • Bekijk de lijst met ondersteunde besturingssystemen.
  • SBD-apparaten die een Azure premium gedeelde schijf gebruiken, ondersteunen lokaal redundante opslag (LRS) en zone-redundante opslag (ZRS).
  • Afhankelijk van het type van uw implementatie kiest u de juiste redundante opslag voor een Azure gedeelde schijf als uw SBD-apparaat.
    • Een SBD-apparaat dat LRS gebruikt voor Azure premium gedeelde schijf (skuName - Premium_LRS) ondersteunt alleen implementaties in een beschikbaarheidsset.
    • Een SBD-apparaat dat ZRS gebruikt voor een Azure premium gedeelde schijf (skuName - Premium_ZRS) wordt aanbevolen voor implementaties in beschikbaarheidszones.
  • De Azure gedeelde schijf die u voor SBD-apparaten gebruikt, hoeft niet groot te zijn. De waarde maxShares bepaalt hoeveel clusterknooppunten de gedeelde schijf kunnen gebruiken. Je kunt bijvoorbeeld P1- of P2-schijfgroottes gebruiken voor je SBD-apparaat op een twee-knoop cluster zoals SAP ASCS/ERS of SAP HANA scale-up.
    • Voor clusters met meer dan twee knooppunten, raadpleeg de gedocumenteerde maxShares voor je geselecteerde schijf.
  • Verbind geen Azure shared disk SBD-apparaat aan verschillende Pacemaker-clusters.
  • Als u meerdere Azure gedeelde schijf-SBD-apparaten gebruikt, controleert u op de limiet voor een maximum aantal gegevensschijven dat kan worden gekoppeld aan een virtuele machine.
  • Raadpleeg de sectie "Beperkingen" in de Azure documentatie over gedeelde schijven voor meer informatie over de beperkingen van gedeelde schijven.

SBD gebruiken met iSCSI-doelen

Deze oplossing vereist dat je Internet Small Computer System Interface (iSCSI)-doelen host op ten minste één extra virtuele machine (VM).

Diagram van iSCSI-servers die iSCSI-doelen hosten voor SBD-apparaten in een Pacemaker Cluster.

Voordelen

  • Deze iSCSI-hostservers kunnen ook iSCSI-doelen hosten voor andere Pacemaker-clusters in dezelfde regio.
  • Als je ze al on-premises gebruikt, vereisen ze geen aanpassingen aan hoe je de Pacemaker-cluster bedient.

Belangrijke overwegingen

  • Je moet drie iSCSI-hostservers gebruiken om het hoogste niveau van veerkracht voor je cluster te hebben.
    • Het gebruik van slechts één server introduceert een enkel punt van falen dat voorkomt dat je cluster kan afschermen als die uitvalt.
    • Pacemaker staat geen fencing toe als je slechts twee knooppunten hebt en er één is uitgevallen.
  • iSCSI-doelhostservers moeten zich in dezelfde regio bevinden als je clusters.
  • Netwerkroutering tussen je clusters en iSCSI-hostservers mag niet over niet-redundante netwerkapparaten (zoals een Network Virtual Appliance) lopen.
    • Onderhoudsgebeurtenissen en andere problemen met netwerkapparaten kunnen de stabiliteit en betrouwbaarheid van de totale clusterconfiguratie negatief beïnvloeden.

Gebruik van de Azure Fence Agent

Door gebruik te maken van de Azure Fence Agent kan je cluster knooppunten afsluiten door direct de Azure API's aan te roepen om mislukte knooppunten opnieuw op te starten.

Diagram van de Azure Fence Agent in een Pacemaker-cluster.

Voordelen

  • Geen extra middelen nodig.
  • Beheerde identiteiten verwijderen alle inloggegevensonderhoud.

Belangrijke overwegingen

  • Gebruik Managed Identities voor authenticatie. Als je momenteel een service principal gebruikt, update dan de Azure Fence Agent van SPN naar MSI.
  • De Azure fence agent vereist uitgaande connectiviteit naar publieke Azure-eindpunten. Zie Openbare eindpuntconnectiviteit voor VM's met behulp van standaard-ILB voor meer informatie en mogelijke oplossingen.
  • De bewakings- en afschermingsbewerkingen worden gedeserialiseerd. Als er dus een langduriger actieve bewakingsbewerking en een gelijktijdige fencing-gebeurtenis is, is er geen vertraging voor de cluster-overgang omdat de bewakingsbewerking al wordt uitgevoerd.

Deploy een gedeelde Azure Disk voor SBD

Om een gedeelde Azure-schijf te maken en te koppelen met PowerShell, voer je de volgende commando's uit. Als u resources wilt implementeren met behulp van de Azure CLI of Azure Portal, raadpleegt u Een ZRS-schijf implementeren.

$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
}

Gebruik iSCSI-doelen

iSCSI-targethostservers configureren

  1. Zet drie virtuele machines uit die draaien op een ondersteunde RHEL-OS-versie. De VM's hoeven niet groot te zijn. VM-groottes zoals Standard_E2s of Standard_D2s zijn voldoende.

    Notitie

    Je hoeft RHEL niet te gebruiken voor SAP met HA en Update Services, of RHEL voor SAP Apps OS-image voor de iSCSI-doelserver. Je kunt in plaats daarvan een standaard RHEL OS-image gebruiken. De levenscyclus van de ondersteuning varieert echter tussen verschillende productversies van het besturingssysteem.

  2. Installeer de nieuwste updates en start indien nodig opnieuw op.

    sudo dnf -y update
    
  3. Installeer het iSCSI target pakket.

    sudo dnf install -y targetcli
    
  4. Activeer en start de iSCSI-service.

    sudo systemctl start target
    sudo systemctl enable target
    
  5. Open de poort in de firewall.

    sudo firewall-cmd --add-port=3260/tcp --permanent
    sudo firewall-cmd --reload
    

Maak iSCSI-doelen aan

Voor elke cluster moet je een iSCSI-schijf provisioneren op elke iSCSI-hostserver, en vervolgens toegang geven aan elke clusterknoop op die schijf. In dit voorbeeld maak je schijven aan voor twee verschillende clusters:

  • ascsnw1: De ASCS/ERS-cluster voor NW1
  • hdbnw1: De HANA Database-cluster voor NW1
  • sap-cl1 en sap-cl2: Gastnamen voor de NW1 ASCS/ERS clusterknooppunten
  • sap-db1 en sap-db2: Gastnamen voor de NW1 HANA-clusterknooppunten
  1. Maak de hoofdmap voor alle SBD-apparaten.
    sudo mkdir /sbd
    
  2. Maak het SBD-apparaat aan voor de eerste 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
    
  3. Maak het SBD-apparaat aan voor de tweede 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
    
  4. Sla de configuratie op.
    sudo targetcli saveconfig
    
  5. Controleer de opstelling.
    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 configureren

  1. Identiteit creëren

    Om een beheerde identiteit (MSI) te creëren, maak je voor elke VM in het cluster een door het systeem toegewezen beheerde identiteit . Door gebruikers toegewezen beheerde identiteiten worden op dit moment niet ondersteund.

  2. Maak een aangepaste rol aan.

    Je identiteit heeft via Azure RBAC machtigingen nodig om fencingacties op je VM's uit te voeren. Om te voldoen aan het Least Privileged Access (LPA) Security Model, maak je een aangepaste RBAC-rol aan.

    Gebruik de volgende definitie voor je functie, waarbij je je abonnements-ID(s) vervangt waar nodig:

    {
          "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": []
    }
    
  3. Wijs de aangepaste rol toe aan uw identiteiten.

    Voor elke VM in je cluster wijs je de beheerde identiteit toe aan de aangepaste rol "Linux Fence Agent" voor elke VM in de cluster, inclusief zichzelf. Zie Een beheerde identiteit toegang tot een resource toewijzen met behulp van Azure Portal voor gedetailleerde stappen.

    Belangrijk

    Wees je ervan bewust dat de toewijzing en verwijdering van autorisatie met beheerde identiteiten kan worden uitgesteld tot deze effectief is.

Cluster aanmaken en configureren

  1. [A] Werk het besturingssysteem bij en start indien nodig opnieuw op.

    sudo dnf -y update
    
  2. [A] Installeer de vereiste clusterpakketten.

    sudo dnf install -y nmap-ncat pcs pacemaker resource-agents resource-agents-cloud
    
  3. [A] Installeer de vereiste hekpakketten.

    sudo dnf install -y sbd fence-agents-sbd
    
    sudo dnf install -y sbd fence-agents-sbd iscsi-initiator-utils
    
    sudo dnf install -y fence-agents-azure-arm
    
  4. [A] Stel DNS in.

    U kunt ofwel een DNS-server gebruiken of /etc/hosts op alle knooppunten wijzigen. In dit voorbeeld ziet u hoe u het /etc/hosts bestand gebruikt.

    Werk de vermeldingen bij zodat ze overeenkomen met je IP-adressen en hostnamen.

    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-cl2
    
    sudo 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
    
  5. [A] Werk het wachtwoord bij zodat het hacluster op alle knooppunten hetzelfde is.

    sudo passwd hacluster
    
  6. [A] Werk de firewall bij.

    sudo firewall-cmd --add-service=high-availability --permanent
    sudo firewall-cmd --reload
    
  7. [A] Schakel pacemaker-diensten in.

    sudo systemctl start pcsd.service
    sudo systemctl enable pcsd.service
    
  8. [1] Maak het 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 --all
    
  9. Configureer een opstartvertraging voor Pacemaker.

    Het direct starten van Pacemaker na het opstarten kan mogelijk een node in staat stellen zich weer bij de cluster te voegen voordat de failover is voltooid, waardoor failover wordt voorkomen of het herstel wordt vertraagd. Om dit probleem op te lossen, gebruik je een timerservice om het opstarten van de pacemaker bij herstart uit te stellen.

    1. [A] Stel de timerservice in.
      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
      
    2. [A] Activeer timerservice.
      sudo systemctl daemon-reload
      sudo systemctl enable pacemaker.timer
      
    3. [1] Schakel de pacemaker-diensten uit.
      sudo pcs cluster disable --all
      
  10. Controleer het cluster.

    1. [1] Controleer het Pacemaker-cluster.
      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
      
    2. [A] Valideer de diensten.
      systemctl list-unit-files pacemaker.timer pacemaker.service corosync.service pcsd.service
      
      UNIT FILE         STATE    PRESET
      corosync.service  disabled disabled
      pacemaker.service disabled disabled
      pacemaker.timer   enabled  disabled
      pcsd.service      enabled  disabled
      

Afrastering configureren

  1. [A] Activeer de SBD-dienst.
    sudo systemctl enable sbd
    
  2. [A] Schakel de softwarewaakhond in.
    echo softdog | sudo tee /etc/modules-load.d/softdog.conf
    sudo modprobe softdog
    
  3. [A] Ontdek de iSCSI-apparaat-ID.
    1. Bepaal het mountpunt op basis van het LUN-nummer
      ls -l /dev/disk/azure/scsi1/lun1
      lrwxrwxrwx. 1 root root 12 Apr 16 20:22 /dev/disk/azure/scsi1/lun1 -> ../../../sdb
      
    2. Haal de iSCSI-apparaat-ID van mount.
      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
      
  4. [1] Maak het SBD-apparaat.
    sudo sbd -d /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -1 60 -4 120 create
    
  1. [1] Voeg het SBD-apparaat toe aan de cluster.
    sudo pcs stonith create sbd fence_sbd devices=/dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 op monitor interval=600 timeout=15
    
  2. [1] Verander de SBD-configuratie-instellingen.
    sudo pcs property set stonith-timeout=210
    sudo pcs property set stonith-enabled=true
    
  3. [A] Valideer SBD-configuratiebestand.
    sudo vi /etc/sysconfig/sbd
    
    [...]
    SBD_DELAY_START=no
    [...]
    SBD_PACEMAKER=yes
    [...]
    SBD_STARTMODE=always
    [...]
    
  1. [A] Schakel de benodigde diensten in.
    sudo systemctl enable sbd iscsi iscsid
    
  2. [A] Schakel de softwarewaakhond in.
    echo softdog | sudo tee /etc/modules-load.d/softdog.conf
    sudo modprobe softdog
    
  3. [1] Werk de InitiatorName voor knooppunt 1 bij.
    sudo vi /etc/iscsi/initiatorname.iscsi
    [...]
    InitiatorName=iqn.2006-04.sap-cl1.local:sap-cl1
    
  4. [2] Werk InitiatorName voor knooppunt 2 bij.
    # Node 2
    sudo vi /etc/iscsi/initiatorname.iscsi
    [...]
    InitiatorName=iqn.2006-04.sap-cl2.local:sap-cl2
    
  5. [A] Herstart de iSCSI-diensten.
    sudo systemctl restart iscsi iscsid
    
  6. [A] Plaats de iSCSI-doelen vanaf alle iSCSI-hostservers.
    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
    
  7. [A] Ontdek de iSCSI-apparaat-ID's.
    1. Bepaal de iSCSI-mountpunten.
      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
      
    2. Haal de iSCSI-apparaat-ID's op.
      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
      
  8. [1] Maak de SBD-apparaten.
    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. [1] Voeg de SBD-apparaten toe aan de cluster.
    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
    
  2. [1] Verander de SBD-configuratie-instellingen.
    sudo pcs property set stonith-timeout=210
    sudo pcs property set stonith-enabled=true
    
  3. [A] Valideer SBD-configuratiebestand.
    sudo vi /etc/sysconfig/sbd
    
    [...]
    SBD_DELAY_START=no
    [...]
    SBD_PACEMAKER=yes
    [...]
    SBD_STARTMODE=always
    [...]
    
  1. [1] Configureer de Azure-fence-agent.

    Notitie

    Bij het gebruik van Azure government cloud moet je de cloud= optie specificeren bij het configureren van de Azure Fence Agent. Bijvoorbeeld cloud=usgov voor de Azure cloud voor de Amerikaanse overheid.

    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
    
  2. [1] Configureer de cluster voor Azure Fence Agent.

    sudo pcs property set stonith-enabled=true
    sudo pcs property set stonith-timeout=900
    

Het bouwen van een pacemakercluster met meer dan twee knooppunten

Als je een groter cluster bouwt, houd dan deze overwegingen in gedachten:

  1. [1] Stel de configuratie van het cluster aan.

    De Votequorum - Expected votes en-waarden Votequorum - Flags - 2Node worden automatisch bijgewerkt wanneer je een derde of meer knooppunten toevoegt. Controleer of de 2Node vlag afwezig is en Votequorum - Expected votes gelijk is aan het aantal nodes in je cluster.

    sudo pcs quorum status
    
    Quorum information
    ------------------
    [...]
    
    Votequorum information
    ----------------------
    Expected votes:   3
    Highest expected: 3
    Total votes:      3
    Quorum:           2
    Flags:            Quorate WaitForAll
    
    Membership information
    ----------------------
    [...]
    
  2. Pas de afstelling van het hek aan.

    sudo crm resource param stonith-sbd delete pcmk_delay_max
    sudo crm resource param stonith-sbd set pcmk_action_limit -1
    
    sudo crm resource param rsc_st_azure delete pcmk_delay_max
    sudo crm resource param rsc_st_azure pcmk_action_limit -1
    

Pacemaker configureren voor Azure geplande gebeurtenissen

Geplande Gebeurtenissen is een Azure Metadata Service die je applicatie tijd geeft om je voor te bereiden op VM-onderhoud. Het geeft informatie over aankomende onderhoudsgebeurtenissen, zoals een herstart, zodat je applicatie zich daarop kan voorbereiden en verstoringen kan beperken.

De azure-events-az resource agent monitort deze metadata-service. Wanneer de agent gebeurtenissen detecteert en bepaalt dat er een andere clusternode beschikbaar is, stelt hij een node-level gezondheidsattribuut #health-azure in op -1000000. Deze waarde zorgt ervoor dat de cluster de node als ongezond beschouwt en middelen wegmigreert van de getroffen node. De locatiebeperking zorgt ervoor dat resources die beginnen met health- worden uitgesloten, aangezien de azure-events-az-agent nog steeds op beide knooppunten moet draaien. Zodra de getroffen clusterknoop vrij is van actieve clusterbronnen, waarschuwt de agent de metadatadienst en kan het geplande evenement doorgaan. Wanneer alle gebeurtenissen zijn voltooid, zet de resource agent het #health-azure attribuut terug naar 0, waarmee de knoop weer als gezond wordt gemarkeerd.

Belangrijk

Eerder beschreven in dit document het gebruik van resourceagent azure-events. Nieuwe resourceagent azure-events-az biedt volledige ondersteuning voor Azure-omgevingen die zijn geïmplementeerd in verschillende beschikbaarheidszones. Gebruik de nieuwere azure-events-az agent voor alle SAP hoogbeschikbare systemen met Pacemaker.

  1. Installeer en update het resource-agents pakket.

    sudo dnf install -y resource-agents
    
  2. [1] Zet het cluster in onderhoudsmodus.

    sudo pcs property set maintenance-mode=true
    
  3. [1] Stel de pacemakercluster-gezondheidsknoopstrategie en -beperking in.

    Belangrijk

    Definieer geen andere resources in het cluster die beginnen met health-, behalve de resources die in de volgende stappen worden beschreven.

    sudo pcs property set node-health-strategy=custom
    sudo pcs constraint location 'regexp%!health-.*' \
       rule score-attribute='#health-azure' \
       "defined #uname"
    
  4. [1] Stel de initiële waarde van de clusterkenmerken in.

    Voer een commando uit voor elke clusterknoop. Neem voor scale-out-omgevingen de majority-maker-VM op.

    # 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
    
  5. [1] Configureer de middelen in Pacemaker. De bronnen moeten beginnen met health-azure.

    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=90s
    
    sudo pcs resource clone health-azure-events meta allow-unhealthy-nodes=true
    
  6. Haal het Pacemaker-cluster uit onderhoudsmodus en maak eventuele fouten schoon

    sudo pcs property set maintenance-mode=false
    sudo pcs resource cleanup
    
  7. Controleer of het health-azure-events succesvol start op alle nodes.

    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/enabled
    

    Het uitvoeren van de eerste query voor geplande gebeurtenissen kan maximaal twee minuten duren. Pacemakertests met geplande taken kunnen gebruikmaken van acties zoals herstarten of opnieuw implementeren voor de cluster-VM's. Zie Geplande gebeurtenissen voor meer informatie.

Optionele configuratie voor fencing

Aanbeveling

Deze sectie is alleen van toepassing als u het speciale afschermingsapparaat fence_kdumpwilt configureren.

Als u diagnostische gegevens binnen de VIRTUELE machine moet verzamelen, kan het handig zijn om een ander fencing-apparaat te configureren op basis van de omheiningsagent fence_kdump. De fence_kdump agent kan detecteren dat een knooppunt kdump crash recovery heeft ingevoerd en kan de crash recovery-service voltooien voordat andere fencing-methoden worden aangeroepen. Houd er rekening mee dat fence_kdump geen vervanging is voor traditionele hekmechanismen, zoals de SBD- of Azure omheiningsagent, wanneer u Azure VM's gebruikt.

Belangrijk

Houd er rekening mee dat wanneer fence_kdump deze is geconfigureerd als een afschermingsapparaat op het eerste niveau, vertragingen in de afschermingsbewerkingen introduceert en, respectievelijk, vertragingen in de failover van toepassingsresources.

Als er een crashdump is gedetecteerd, wordt de fencing vertraagd totdat de crashherstelservice is afgerond. Als het mislukte knooppunt onbereikbaar is of als het niet reageert, wordt de fencing vertraagd op basis van de tijd die is bepaald, het geconfigureerde aantal iteraties en de fence_kdump time-out.

De voorgestelde fence_kdump time-out moet mogelijk worden aangepast aan de specifieke omgeving.

Wij raden aan dat u fence_kdump fencing alleen configureert wanneer dat nodig is om diagnostische gegevens binnen de virtuele machine te verzamelen en altijd in combinatie met traditionele fence-methoden, zoals SBD of Azure fencing-agent.

De volgende Red Hat KB-artikelen bevatten belangrijke informatie over het configureren van fence_kdump fencing:

Voer de volgende optionele stappen uit om fence_kdump toe te voegen als een afschermingsconfiguratie op het eerste niveau, naast de configuratie van de Azure omheiningsagent.

  1. [A] Controleer of dit kdump actief en geconfigureerd is.

    systemctl is-active kdump
    # Expected result
    # active
    
  2. [A] Installeer de fence_kdump fence-agent.

    sudo dnf install -y fence-agents-kdump
    
  3. [1] Maak een fence_kdump fencing-systeem in het cluster.

    pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="sap-cl1 sap-cl2" timeout=30
    
  4. [1] Configureer afschermingsniveaus zodat het fence_kdump afschermingsmechanisme eerst wordt ingeschakeld.

    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>
    
  5. [A] Sta de vereiste poorten in de firewall toe voor fence_kdump.

    firewall-cmd --add-port=7410/udp --permanent
    firewall-cmd --reload
    
  6. [A] Voer de fence_kdump_nodes configuratie uit /etc/kdump.conf om te voorkomen dat fence_kdump mislukt met een time-out voor sommige kexec-tools versies. Voor meer informatie, zie fence_kdump time-out wanneer fence_kdump_nodes niet is gespecificeerd met kexec-tools versie 2.0.15 of later. De voorbeeldconfiguratie voor een cluster met twee knooppunten wordt hier weergegeven. Nadat u een wijziging in /etc/kdump.conf hebt aangebracht, moet het kdump-image opnieuw worden gegenereerd. Begin de kdump-service opnieuw om deze te regenereren.

    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
    
  7. [A] Zorg ervoor dat het initramfs afbeeldingsbestand de fence_kdump en hosts bestanden bevat.

    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_send
    
  8. Test de configuratie door een knooppunt te crashen.

    Belangrijk

    Als het cluster al productief is, plant u de test dienovereenkomstig omdat het vastlopen van een knooppunt gevolgen heeft voor de toepassing.

    echo c > /proc/sysrq-trigger
    

Volgende stappen