Konfigurera Pacemaker på Red Hat Enterprise Linux i Azure

Den här artikeln förklarar hur man sätter upp och konfigurerar ett grundläggande tvånods Pacemaker-kluster på Red Hat Enterprise Linux (RHEL). Instruktionerna täcker RHEL 8.6+, RHEL 9.x, och RHEL 10.x.

Förutsättningar

Översikt

Denna guide förutsätter att du redan har distribuerat den nödvändiga resursgruppen, Azure-virtuellt nätverk, subnät och virtuella maskiner (VM).

Kluster som körs på Linux kräver en fencingagent för att stänga in ohälsosamma noder. För att utföra denna uppgift på Azure, använd en av följande metoder:

  • Storage Based Death (SBD) med Azure Shared Disk
  • Lagringsbaserad död (SBD) med iSCSI-mål
  • Azure Fencing Agent

Anteckning

Följande prefix används i detta dokument:

  • [A]: Gäller för alla noder.
  • [1]: Gäller endast för nod 1.
  • [2]: Gäller endast för nod 2.

Viktigt!

I Azure använder RHEL:s högtillgänglighetskluster med lagringsbaserad stängsel (fence_sbd) en mjukvaruemulerad vakthund. Gå igenom följande dokumentation när du använder SBD.

Att använda SBD med Azure Shared Disk

Genom att använda Azure Shared Disks kan du montera samma disk på alla virtuella maskiner som ingår i klustret. Du kan hosta din SBD-enhet på den delade disken utan extra infrastrukturkrav.

Diagram av en Azure Shared Disk som SBD-enhet i ett Pacemaker-kluster.

Fördelar

  • Erbjuder ett inbyggt Azure delat blockenhetsalternativ för SBD utan att behöva ytterligare resurser.
  • Virtuella maskiner kopplar den hanterade disken direkt, vilket minskar beroendet av ytterligare nätverksöverväganden.

Viktiga överväganden

  • Du kan använda en Azure-delad disk med Premium SSD SKU som en SBD-enhet.
  • Gå igenom listan över stödda operativsystem.
  • SBD-enheter som använder en Azure premium delad disk stödjer lokalt redundant lagring (LRS) och zonredundant lagring (ZRS).
  • Beroende på typen för distributionen väljer du lämplig redundant lagring för en Azure delad disk som SBD-enhet.
    • En SBD-enhet som använder LRS för Azure premiumdelad disk (skuName - Premium_LRS) stöder endast distributioner i en tillgänglighetsuppsättning.
    • En SBD-enhet som använder ZRS för en Azure premium-delad disk (skuName - Premium_ZRS) rekommenderas för distributioner i tillgänglighetszoner.
  • Den Azure delade disk som du använder för SBD-enheter behöver inte vara stor. Värdet maxShares avgör hur många klusternoder som kan använda den delade disken. Till exempel kan du använda diskstorlekarna P1 eller P2 för den SBD-enhet du använder i ett kluster med två noder, till exempel SAP ASCS/ERS eller SAP Hana i uppskalningskonfiguration.
    • För kluster med fler än två noder, se det dokumenterade värdet för maxShares för den valda disken.
  • Koppla inte en Azure shared disk SBD-enhet över olika Pacemaker-kluster.
  • Om du använder flera Azure delade SBD-enheter kontrollerar du gränsen för ett maximalt antal datadiskar som kan anslutas till en virtuell dator.
  • Mer information om begränsningar för Azure delade diskar finns i avsnittet Begränsningar i Azure dokumentation om delade diskar.

Att använda SBD med iSCSI-mål

Denna lösning kräver att du hostar Internet Small Computer System Interface (iSCSI)-mål på minst en ytterligare virtuell maskin (VM).

Diagram över iSCSI-servrar som hostar iSCSI-mål för SBD-enheter i ett Pacemaker-kluster.

Fördelar

  • Dessa iSCSI-värdservrar kan även vara värdar för iSCSI-mål för andra Pacemaker-kluster i samma region.
  • Om du redan använder dem lokalt kräver de inga förändringar i hur du använder Pacemaker-klustret.

Viktiga överväganden

  • Du måste använda tre iSCSI-värdservrar för att ha högsta nivå av motståndskraft för ditt kluster.
    • Att endast använda en server skapar en enda felkälla som förhindrar att ditt kluster kan utföra fencing om servern ligger nere.
    • Pacemakern tillåter inte fäktning om du bara har två mål och ett är nere.
  • iSCSI-målvärdservrar måste vara placerade i samma region som era kluster.
  • Nätverksrouting mellan dina kluster och iSCSI:s värdservrar får inte passera några icke-redundanta nätverksenheter (som en Network Virtual Appliance).
    • Underhållshändelser och andra problem med nätverksenheter kan negativt påverka stabiliteten och tillförlitligheten i den övergripande klusterkonfigurationen.

Att använda Azure Fence Agent

Genom att använda Azure Fence Agent kan ditt kluster stänga noder genom att direkt anropa Azure-API:erna för att starta om misslyckade noder.

Diagram över Azure Fence Agent i ett Pacemaker-kluster.

Fördelar

  • Inga extra resurser behövs.
  • Managed Identities eliminerar behovet av underhåll av autentiseringsuppgifter.

Viktiga överväganden

  • Använd Managed Identities för autentisering. Om du för närvarande använder en tjänsteprincip, uppdatera Azure Fence Agent från SPN till MSI.
  • Azure fence-agenten kräver utgående anslutning till publika Azure-endpoints. Mer information och möjliga lösningar finns i Offentlig slutpunktsanslutning för virtuella datorer med standard-ILB.
  • Övervaknings- och fäktningsåtgärderna deserialiseras. Om det finns en övervakningsåtgärd som körs längre och samtidiga fäktningshändelser blir det därför ingen fördröjning i klusterredundansväxlingen eftersom övervakningsåtgärden redan körs.

Distribuera en Azure delad disk för SBD

För att skapa och bifoga en Azure-delad disk med PowerShell, kör följande kommandon. Om du vill distribuera resurser genom att använda Azure CLI eller Azure-portalen, se 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
}

Använd iSCSI-mål

Skapa iSCSI-målservrar

  1. Distribuera tre virtuella maskiner som körs på en stödd RHEL OS-version. VM:arna behöver inte vara stora. VM-storlekar som Standard_E2s eller Standard_D2s är tillräckliga.

    Anteckning

    Du behöver inte använda RHEL för SAP med HA- och uppdateringstjänster, eller RHEL för SAP Apps OS-image för iSCSI-målservern. Du kan använda en standard RHEL OS-avbildning istället. Supportlivscykeln varierar dock mellan olika os-produktversioner.

  2. Installera de senaste uppdateringarna och starta om om det behövs.

    sudo dnf -y update
    
  3. Installera iSCSI-targetpaketet.

    sudo dnf install -y targetcli
    
  4. Aktivera och starta iSCSI-tjänsten.

    sudo systemctl start target
    sudo systemctl enable target
    
  5. Öppna porten i brandväggen.

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

Skapa iSCSI-mål

För varje kluster behöver du provisionera en iSCSI-disk på varje iSCSI-värdserver och sedan ge varje klusternod åtkomst till den disken. I detta exempel skapar du diskar för två olika kluster:

  • ascsnw1: ASCS/ERS-klustret för NW1
  • hdbnw1: HANA-databasklustret för NW1
  • sap-cl1 och sap-cl2: Värdnamn för NW1 ASCS/ERS-klustrets noder
  • sap-db1 och sap-db2: Värdnamn för NW1 HANA-klustrets noder
  1. Skapa rotmappen för alla SBD-enheter.
    sudo mkdir /sbd
    
  2. Skapa SBD-enheten för det första klustret (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. Skapa SBD-enheten för det andra klustret (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. Spara konfigurationen.
    sudo targetcli saveconfig
    
  5. Kontrollera installationen.
    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]
    

Konfigurera Azure Fence Agent

  1. Skapa identitet

    För att skapa en managed identity (MSI), skapa en systemtilldelad managed identity för varje VM i klustret. Användartilldelade hanterade identiteter stöds inte för närvarande.

  2. Skapa en anpassad roll.

    Din identitet behöver behörigheter via Azure RBAC för att utföra fencing-åtgärder på dina virtuella datorer. För att uppfylla Least Privileged Access (LPA) säkerhetsmodellen, skapa en anpassad RBAC-roll.

    Använd följande definition för din roll och ersätt ditt prenumerations-ID(n) där det behövs:

    {
          "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. Tilldela den anpassade rollen till dina identiteter.

    För varje VM i ditt kluster, tilldela dess hanterade identitet till den anpassade rollen "Linux Fence Agent" för varje VM i klustret, inklusive sig själv. Detaljerade steg finns i Tilldela en hanterad identitet åtkomst till en resurs med hjälp av Azure Portal.

    Viktigt!

    Var medveten om att tilldelning och borttagning av auktorisation med hanterade identiteter kan skjutas upp tills den träder i kraft.

Skapa och konfigurera kluster

  1. [A] Uppdatera operativsystemet och starta om om det behövs.

    sudo dnf -y update
    
  2. [A] Installera nödvändiga klusterpaket.

    sudo dnf install -y nmap-ncat pcs pacemaker resource-agents resource-agents-cloud
    
  3. [A] Installera nödvändiga stängselpaket.

    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] Konfigurera DNS.

    Du kan antingen använda en DNS-server eller ändra /etc/hosts på alla noder. Det här exemplet visar hur du använder /etc/hosts-filen.

    Uppdatera posterna så att de matchar dina IP-adresser och värdnamn.

    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] Uppdatera lösenordet hacluster så att det är detsamma på alla noder.

    sudo passwd hacluster
    
  6. [A] Uppdatera brandväggen.

    sudo firewall-cmd --add-service=high-availability --permanent
    sudo firewall-cmd --reload
    
  7. [A] Aktivera pacemaker-tjänster.

    sudo systemctl start pcsd.service
    sudo systemctl enable pcsd.service
    
  8. [1] Skapa klustret.

    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. Konfigurera en uppstartsfördröjning för Pacemaker.

    Att starta Pacemaker omedelbart efter uppstart kan göra att en nod återansluter till klustret innan failover har slutförts, vilket kan förhindra failover eller fördröja återställningen. För att lösa detta problem använd en timer-tjänst för att fördröja pacemakerstart vid omstart.

    1. [A] Konfigurera timertjänst.
      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] Aktivera timerservice.
      sudo systemctl daemon-reload
      sudo systemctl enable pacemaker.timer
      
    3. [1] Inaktivera pacemaker-tjänster.
      sudo pcs cluster disable --all
      
  10. Validera klustret.

    1. [1] Verifiera Pacemaker-klustret.
      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] Validera tjänster.
      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
      

Konfigurera stängslet

  1. [A] Aktivera SBD-tjänsten.
    sudo systemctl enable sbd
    
  2. [A] Aktivera mjukvaruvakthund.
    echo softdog | sudo tee /etc/modules-load.d/softdog.conf
    sudo modprobe softdog
    
  3. [A] Upptäck iSCSI:s enhets-ID.
    1. Bestäm monteringspunkt baserat på 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. Få iSCSI-enhets-ID från 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] Skapa SBD-enheten.
    sudo sbd -d /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -1 60 -4 120 create
    
  1. [1] Lägg till SBD-enheten i klustret.
    sudo pcs stonith create sbd fence_sbd devices=/dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 op monitor interval=600 timeout=15
    
  2. [1] Ändra SBD-konfigurationsinställningar.
    sudo pcs property set stonith-timeout=210
    sudo pcs property set stonith-enabled=true
    
  3. [A] Validera SBD-konfigurationsfilen.
    sudo vi /etc/sysconfig/sbd
    
    [...]
    SBD_DELAY_START=no
    [...]
    SBD_PACEMAKER=yes
    [...]
    SBD_STARTMODE=always
    [...]
    
  1. [A] Aktivera de nödvändiga tjänsterna.
    sudo systemctl enable sbd iscsi iscsid
    
  2. [A] Aktivera mjukvaruvakthund.
    echo softdog | sudo tee /etc/modules-load.d/softdog.conf
    sudo modprobe softdog
    
  3. [1] Uppdatera InitiatorName för nod 1.
    sudo vi /etc/iscsi/initiatorname.iscsi
    [...]
    InitiatorName=iqn.2006-04.sap-cl1.local:sap-cl1
    
  4. [2] Uppdatera InitiatorName för nod 2.
    # Node 2
    sudo vi /etc/iscsi/initiatorname.iscsi
    [...]
    InitiatorName=iqn.2006-04.sap-cl2.local:sap-cl2
    
  5. [A] Starta om iSCSI-tjänsterna.
    sudo systemctl restart iscsi iscsid
    
  6. [A] Montera iSCSI-målen från alla iSCSI-värdservrar.
    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] Upptäck iSCSI:s enhets-ID:n.
    1. Bestäm iSCSI-monteringspunkterna.
      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. Få iSCSI-enhets-ID:n.
      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] Skapa SBD-enheterna.
    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] Lägg till SBD-enheterna i klustret.
    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] Ändra SBD-konfigurationsinställningar.
    sudo pcs property set stonith-timeout=210
    sudo pcs property set stonith-enabled=true
    
  3. [A] Validera SBD-konfigurationsfilen.
    sudo vi /etc/sysconfig/sbd
    
    [...]
    SBD_DELAY_START=no
    [...]
    SBD_PACEMAKER=yes
    [...]
    SBD_STARTMODE=always
    [...]
    
  1. [1] Configure Azure Fence Agent.

    Anteckning

    När du använder Azure government cloud måste du ange alternativet cloud= när du konfigurerar Azure Fence Agent. Till exempel cloud=usgov för det Azure amerikanska myndighetsmolnet.

    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] Konfigurera klustret för Azure Fence Agent.

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

Bygga ett pacemakerkluster med fler än två noder

Om du bygger ett större kluster, tänk på dessa överväganden:

  1. [1] Justera klusterkonfigurationen.

    Värdena Votequorum - Expected votes och Votequorum - Flags - 2Node uppdateras automatiskt när du lägger till ytterligare en nod, så att du har tre eller fler noder. Verifiera att 2Node flaggan saknas och Votequorum - Expected votes motsvarar antalet noder i ditt kluster.

    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. Justera stängselkonfigurationen.

    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
    

Konfigurera Pacemaker för Azure schemalagda händelser

Scheduled Events är en Azure metadatatjänst som ger din applikation tid att förbereda sig för VM-underhåll. Den ger information om kommande underhållshändelser, såsom en omstart, så att din applikation kan förbereda sig för dem och begränsa störningar.

azure-events-az resursagenten övervakar denna metadatatjänst. När agenten upptäcker händelser och avgör att en annan klusternod är tillgänglig, sätter den ett nodnivå-hälsoattribut #health-azure till -1000000. Detta värde gör att klustret anser att noden är ohälsosam och migrerar resurser bort från den drabbade noden. Platsbegränsningen säkerställer att resurser som börjar med health- utesluts, eftersom azure-events-az-agenten fortfarande måste köras på båda noderna. När den berörda klusternoden är fri från körande klusterresurser meddelar agenten metadatatjänsten och den schemalagda händelsen kan fortsätta. När alla händelser är klara återställer resursagenten attributet #health-azure till 0, vilket markerar noden som frisk igen.

Viktigt!

Tidigare beskrev det här dokumentet användningen av azure-events för resursagenten. Den nya resursagenten azure-events-az har fullt stöd för Azure-miljöer som distribuerats i olika tillgänglighetszoner. Använd den nyare azure-events-az-agenten för alla högtilgängliga SAP-system med Pacemaker.

  1. Installera och uppdatera paketet resource-agents .

    sudo dnf install -y resource-agents
    
  2. [1] Sätt klustret i underhållsläge.

    sudo pcs property set maintenance-mode=true
    
  3. [1] Ange strategi och begränsning för Pacemaker-klustrets hälsanoder.

    Viktigt!

    Definiera inte några andra resurser i klustret som börjar med health- förutom de resurser som beskrivs i nästa steg.

    sudo pcs property set node-health-strategy=custom
    sudo pcs constraint location 'regexp%!health-.*' \
       rule score-attribute='#health-azure' \
       "defined #uname"
    
  4. [1] Ange det initiala värdet för klusterattributen.

    Kör ett kommando för varje klusternod. För skalbara miljöer inkludera majoritetstillverkaren VM.

    # 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] Konfigurera resurserna i Pacemaker. Resurserna måste börja med 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. Ta ut pacemakerklustret ur underhållsläge och städa bort eventuella fel

    sudo pcs property set maintenance-mode=false
    sudo pcs resource cleanup
    
  7. Verifiera att det health-azure-events startar framgångsrikt på alla noder.

    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
    

    Det kan ta upp till två minuter att köra frågor för schemalagda händelser första gången. Pacemakertestning med schemalagda händelser kan använda omstarts- eller omdistribueringsåtgärder för de virtuella klusterdatorerna. Mer information finns i Schemalagda händelser.

Valfri stängslingskonfiguration

Tips

Det här avsnittet gäller endast om du vill konfigurera den särskilda fäktningsenheten fence_kdump.

Om du behöver samla in diagnostikinformation på den virtuella datorn kan det vara bra att konfigurera en annan stängselenhet baserat på stängselagenten fence_kdump. Agenten fence_kdump kan identifiera att en nod har angett återställning av kdumpkrasch och kan tillåta att tjänsten för återställning av krascher slutförs innan andra stängselmetoder anropas. Observera att fence_kdump inte ersätter traditionella stängselmekanismer som SBD eller Azure stängselagent när du använder Azure virtuella datorer.

Viktigt!

Tänk på att när fence_kdump har konfigurerats som en inhägningsenhet på första nivån, medför det fördröjningar i inhägningsprocesserna och därmed i omkoppling av resurser.

Om en kraschdump har identifierats fördröjs fäktningen tills kraschåterställningstjänsten har slutförts. Om den misslyckade noden inte kan nås eller om den inte svarar, fördröjs isoleringen med en angiven tid, det konfigurerade antalet iterationer och tidsgränsen fence_kdump.

Den föreslagna fence_kdump tidsgränsen kan behöva anpassas till den specifika miljön.

Vi rekommenderar att du konfigurerar fence_kdump staket endast när det behövs för att samla in diagnostik i VM:n och alltid i kombination med traditionella fencemetoder, till exempel SBD eller Azure fence agent.

Följande Red Hat KB-artiklar innehåller viktig information om att konfigurera fencing fence_kdump:

Kör följande valfria steg för att lägga till fence_kdump som en isoleringskonfiguration på första nivån, utöver konfigurationen för Azure-fence-agenten.

  1. [A] Kontrollera att det kdump är aktivt och konfigurerat.

    systemctl is-active kdump
    # Expected result
    # active
    
  2. [A] Installera stängselagenten fence_kdump .

    sudo dnf install -y fence-agents-kdump
    
  3. [1] Skapa en fence_kdump fäktningsenhet i klustret.

    pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="sap-cl1 sap-cl2" timeout=30
    
  4. [1] Konfigurera fäktningsnivåer så att fäktningsmekanismen fence_kdump aktiveras först.

    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] Tillåt de portar som krävs för fence_kdump via brandväggen.

    firewall-cmd --add-port=7410/udp --permanent
    firewall-cmd --reload
    
  6. [A] Gör konfigurationen fence_kdump_nodes i /etc/kdump.conf för att undvika att fence_kdump överskrider tidsgränsen för vissa versioner av kexec-tools. För mer information, se fence_kdump tidsavbrott när fence_kdump_nodes inte är specificerat med kexec-tools version 2.0.15 eller senare. Exempelkonfigurationen för ett kluster med två noder visas här. När du har ändrat i /etc/kdump.confmåste kdumpavbildningen återskapas. För att återskapa, starta om tjänsten kdump.

    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] Kontrollera att initramfs bildfilen innehåller fence_kdump filerna och hosts .

    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. Testa konfigurationen genom att krascha en nod.

    Viktigt!

    Om klustret redan används produktivt planerar du testet i enlighet med detta eftersom krasch av en nod påverkar programmet.

    echo c > /proc/sysrq-trigger
    

Nästa steg