Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo spiega come configurare un cluster base Pacemaker a due nodi su Red Hat Enterprise Linux (RHEL). Le istruzioni coprono RHEL 8.6+, RHEL 9.x, e RHEL 10.x.
Prerequisiti
Documentazione relativa a RHEL a disponibilità elevata
- Configurazione e gestione di cluster a disponibilità elevata.
- Criteri di supporto per i cluster RHEL a disponibilità elevata - sbd e fence_sbd.
- Criteri di supporto per i cluster RHEL a disponibilità elevata - fence_azure_arm.
- Limitazioni note del watchdog emulato da software.
- Esplorazione dei componenti RHEL a disponibilità elevata - sbd e fence_sbd.
- Indicazioni di progettazione per i cluster RHEL a disponibilità elevata - Considerazioni su sbd.
- Considerazioni sull'adozione di RHEL 8 - Disponibilità elevata e cluster
documentazione RHEL specifica di Azure
Documentazione di RHEL per le offerte SAP
Panoramica
Questa guida presuppone che tu abbia già implementato il gruppo di risorse richiesto, la rete virtuale Azure, la subnet e le macchine virtuali (VM).
I cluster in esecuzione su Linux richiedono un agente di fencing per isolare i nodi malfunzionanti. Per svolgere questo compito su Azure, si utilizza uno dei seguenti metodi:
- Storage Based Death (SBD) con Azure Shared Disk
- Storage Based Death (SBD) con target iSCSI
- Agente di recinzione di Azure
Note
I seguenti prefissi sono utilizzati in questo documento:
- [A]: applicabile a tutti i nodi.
- [1]: applicabile solo al nodo 1.
- [2]: applicabile solo al nodo 2.
Importante
In Azure, i cluster RHEL a disponibilità elevata con isolamento basato sull'archiviazione (fence_sbd) usano un watchdog emulato dal software. Consulta la seguente documentazione quando usi SBD.
Utilizzo di SBD con Azure Shared Disk
Utilizzando Azure Shared Disks, puoi montare lo stesso disco su tutte le macchine virtuali che fanno parte del cluster. Puoi ospitare il tuo dispositivo SBD su quel disco condiviso senza requisiti infrastrutturali aggiuntivi.
Vantaggi
- Fornisce un'opzione nativa di dispositivo a blocchi condivisi Azure per SBD senza richiedere risorse aggiuntive.
- Le macchine virtuali collegano direttamente il disco gestito, riducendo la dipendenza da ulteriori considerazioni di rete.
Considerazioni importanti
- Puoi usare un disco condiviso Azure con lo
Premium SSDSKU come dispositivo SBD. - Esamina l'elenco dei sistemi operativi supportati.
- I dispositivi SBD che utilizzano un disco condiviso premium Azure supportano la memoria ridondante locale (LRS) e la memoria ridondante a zona (ZRS).
- A seconda del tipo della distribuzione scegliere l'archiviazione ridondante appropriata per un disco condiviso Azure come dispositivo SBD.
- Un dispositivo SBD che utilizza LRS per il disco condiviso Premium di Azure (skuName - Premium_LRS) supporta solo distribuzioni all'interno di un set di disponibilità.
- Un dispositivo SBD che utilizza ZRS per un disco condiviso premium Azure (skuName - Premium_ZRS) è raccomandato per le implementazioni in zone di disponibilità.
- Il disco condiviso Azure usato per i dispositivi SBD non deve essere di grandi dimensioni. Il valore maxShares determina il numero di nodi del cluster che possono usare il disco condiviso. Ad esempio, puoi usare le dimensioni dei dischi P1 o P2 per il tuo dispositivo SBD su un cluster a due nodi come SAP ASCS/ERS o SAP HANA scale-up.
- Per i cluster con più di due nodi, consulta il valore maxShares documentato del disco selezionato.
- Non collegare un dispositivo SBD su un disco condiviso di Azure tra cluster Pacemaker diversi.
- Se si usano più dispositivi SBD su disco condiviso Azure, verificare il limite per un numero massimo di dischi dati che possono essere collegati a una macchina virtuale.
- Per altre informazioni sulle limitazioni per i dischi condivisi Azure, vedere attentamente la sezione "Limitazioni" di Azure documentazione del disco condiviso.
Utilizzo di SBD con target iSCSI
Questa soluzione richiede di ospitare obiettivi Internet Small Computer System Interface (iSCSI) su almeno una macchina virtuale (VM) aggiuntiva.
Vantaggi
- Questi server host iSCSI possono ospitare bersagli iSCSI anche per altri cluster Pacemaker nella stessa regione.
- Se li stai già utilizzando in locale, non richiedono alcuna modifica al modo in cui gestisci il cluster Pacemaker.
Considerazioni importanti
- Devi utilizzare tre server host iSCSI per avere il massimo livello di resilienza per il tuo cluster.
- L'uso di un solo server introduce un singolo punto di guasto che impedisce al cluster di eseguire il fencing se il server non è disponibile.
- Pacemaker non consente l'isolamento se hai solo due nodi e uno è inattivo.
- I server host target iSCSI devono risiedere nella stessa regione dei tuoi cluster.
- Il routing di rete tra i tuoi cluster e i server host iSCSI non deve attraversare dispositivi di rete non ridondanti (come un Network Virtual Appliance).
- Gli eventi di manutenzione e altri problemi con i dispositivi di rete possono influire negativamente sulla stabilità e l'affidabilità della configurazione complessiva del cluster.
Utilizzo dell'agente Azure Fence
Utilizzando l'Azure Fence Agent, il tuo cluster può fare il fence dei nodi chiamando direttamente le API di Azure per riavviare i nodi guasti.
Vantaggi
- Non servono risorse extra.
- Le Identità gestite rimuovono qualsiasi manutenzione delle credenziali.
Considerazioni importanti
- Usa le Identità Gestite per l'autenticazione. Se stai usando un principio di servizio, aggiorna l'Azure Fence Agent da SPN a MSI.
- L'agente Azure Fence richiede la connettività in uscita verso endpoint pubblici di Azure. Per altre informazioni e per le possibili soluzioni, vedere Connettività dell'endpoint pubblico per le macchine virtuali che usano il servizio di bilanciamento del carico interno standard.
- Le operazioni di monitoraggio e isolamento vengono deserializzate. Di conseguenza, in caso di simultaneità tra un evento di isolamento e un'operazione di monitoraggio più lunga, non si verifica alcun ritardo per il failover del cluster perché l'operazione di monitoraggio è già in esecuzione.
Distribuire un disco condiviso di Azure per SBD
Per creare e collegare un disco condiviso Azure usando PowerShell, esegui i seguenti comandi. Se vuoi distribuire risorse utilizzando la interfaccia della riga di comando di Azure o il portale Azure, vedi Distribuire un disco ZRS.
$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
}
Usa obiettivi iSCSI
Creare server host di destinazione iSCSI
Distribuire tre macchine virtuali che funzionano su una versione supportata di RHEL OS. Le VM non devono essere grandi. Le dimensioni delle VM come Standard_E2s o Standard_D2s sono sufficienti.
Note
Non è necessario usare RHEL per SAP con HA e Update Services, né RHEL per l'immagine OS di SAP Apps per il target server iSCSI. Puoi invece usare un'immagine standard di RHEL OS. Tuttavia, il ciclo di vita del supporto varia tra le diverse versioni del prodotto del sistema operativo.
Installa gli ultimi aggiornamenti e riavvia se necessario.
sudo dnf -y updateInstalla il pacchetto target iSCSI.
sudo dnf install -y targetcliAbilita e avvia il servizio iSCSI.
sudo systemctl start target sudo systemctl enable targetApri la porta nel firewall.
sudo firewall-cmd --add-port=3260/tcp --permanent sudo firewall-cmd --reload
Creare destinazioni iSCSI
Per ogni cluster, devi provvedere un disco iSCSI su ogni server host iSCSI, e poi concedere a ogni nodo del cluster l'accesso a quel disco. In questo esempio, crei dischi per due cluster diversi:
- ascsnw1: Il cluster ASCS/ERS di NW1
- hdbnw1: Il cluster di database HANA per NW1
- sap-cl1 e sap-cl2: nomi host per i nodi del cluster ASCS/ERS NW1
- sap-db1 e sap-db2: nomi host per i nodi del cluster HANA di NW1
- Creare la cartella radice per tutti i dispositivi SBD.
sudo mkdir /sbd - Crea il dispositivo SBD per il primo 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 - Crea il dispositivo SBD per il secondo 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 - Salva la configurazione.
sudo targetcli saveconfig - Verifica la configurazione.
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]
Configurare Azure Fence Agent
Crea identità
Per creare un'identità gestita (MSI), crea un'identità gestita assegnata dal sistema per ogni VM nel cluster. Al momento non sono supportate le identità gestite assegnate dagli utenti.
Creazione di un ruolo personalizzato.
L'identità necessita di autorizzazioni tramite RBAC di Azure per eseguire azioni di isolamento verso le proprie VM. Per conformarsi al Modello di Sicurezza Accesso Minimo Privilegiato (LPA), crea un ruolo RBAC personalizzato.
Usa la seguente definizione per il tuo ruolo, sostituendo l'ID dell'abbonamento dove necessario:
{ "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": [] }Assegna il ruolo personalizzato alle tue identità.
Per ogni VM nel tuo cluster, assegna la sua identità gestita al ruolo personalizzato "Linux Fence Agent" per ogni VM nel cluster, compresa se stessa. Per i passaggi dettagliati, vedere Assegnare a un'identità gestita l'accesso a una risorsa tramite il portale di Azure.
Importante
Tieni presente che l'assegnazione e la rimozione dell'autorizzazione con identità gestite possono essere rimandate fino a quando non entrano in vigore.
Crea e configura il cluster
[A] Aggiorna il sistema operativo e riavvia se necessario.
sudo dnf -y update[A] Installare i pacchetti cluster richiesti.
sudo dnf install -y nmap-ncat pcs pacemaker resource-agents resource-agents-cloud[A] Installare i pacchetti di recinzione richiesti.
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] Configura il DNS.
È possibile usare un server DNS o modificare
/etc/hostsin tutti i nodi. In questo esempio viene illustrato come usare il file/etc/hosts.Aggiornare le voci in modo che corrispondano agli indirizzi IP e nomi host.
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] Aggiorna la
haclusterpassword per farla essere la stessa su tutti i nodi.sudo passwd hacluster[A] Aggiorna il firewall.
sudo firewall-cmd --add-service=high-availability --permanent sudo firewall-cmd --reload[A] Abilita i servizi Pacemaker.
sudo systemctl start pcsd.service sudo systemctl enable pcsd.service[1] Crea il 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 --allConfigura un ritardo di avvio per Pacemaker.
Avviare Pacemaker immediatamente dopo l'avvio può potenzialmente permettere a un nodo di rientrare nel cluster prima che il failover si completi, prevenendo il failover o ritardando il recupero. Per risolvere questo problema usa un servizio timer per ritardare l'avvio del pacemaker al riavvio.
-
[A] Configura il servizio timer.
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] Attiva il servizio timer.
sudo systemctl daemon-reload sudo systemctl enable pacemaker.timer -
[1] Disattivare i servizi Pacemaker.
sudo pcs cluster disable --all
-
[A] Configura il servizio timer.
Valida il cluster.
-
[1] Convalidare il cluster Pacemaker.
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] Valida i servizi.
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] Convalidare il cluster Pacemaker.
Configurare la recinzione
-
[A] Attiva il servizio SBD.
sudo systemctl enable sbd -
[A] Abilita il controllo software.
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[A] Scopri l'ID dispositivo iSCSI.
- Determina il punto di montaggio in base al numero LUN
ls -l /dev/disk/azure/scsi1/lun1 lrwxrwxrwx. 1 root root 12 Apr 16 20:22 /dev/disk/azure/scsi1/lun1 -> ../../../sdb - Recupera l'ID del dispositivo iSCSI dal montaggio.
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
- Determina il punto di montaggio in base al numero LUN
-
[1] Creare il dispositivo SBD.
sudo sbd -d /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -1 60 -4 120 create
-
[1] Aggiungi il dispositivo SBD al cluster.
sudo pcs stonith create sbd fence_sbd devices=/dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 op monitor interval=600 timeout=15 -
[1] Modifica le impostazioni di configurazione SBD.
sudo pcs property set stonith-timeout=210 sudo pcs property set stonith-enabled=true -
[A] Valida il file di configurazione SBD.
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
-
[A] Abilita i servizi richiesti.
sudo systemctl enable sbd iscsi iscsid -
[A] Abilita il controllo software.
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[1] Aggiorna il
InitiatorNameper il nodo 1.sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl1.local:sap-cl1 -
[2] Aggiorna il
InitiatorNameper il nodo 2.# Node 2 sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl2.local:sap-cl2 -
[A] Riavvia i servizi iSCSI.
sudo systemctl restart iscsi iscsid -
[A] Monta i target iSCSI di tutti i server host iSCSI.
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] Scopri gli ID dei dispositivi iSCSI.
- Determina i punti di montaggio iSCSI.
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 - Ottieni gli ID dei dispositivi iSCSI.
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
- Determina i punti di montaggio iSCSI.
-
[1] Crea i dispositivi SBD.
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] Aggiungi i dispositivi SBD al 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 -
[1] Modifica le impostazioni di configurazione SBD.
sudo pcs property set stonith-timeout=210 sudo pcs property set stonith-enabled=true -
[A] Valida il file di configurazione SBD.
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
[1] Configura Azure Fence Agent.
Note
Quando si utilizza Azure Government Cloud, è necessario specificare questa
cloud=opzione quando si configura Azure Fence Agent. Ad esempio,cloud=usgovper il cloud del governo degli Stati Uniti Azure.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] Configura il cluster per Azure Fence Agent.
sudo pcs property set stonith-enabled=true sudo pcs property set stonith-timeout=900
Costruire un cluster Pacemaker con più di due nodi
Se stai costruendo un cluster più ampio, tieni a mente queste considerazioni:
[1] Regola la configurazione del cluster.
I
Votequorum - Expected votesvalori eVotequorum - Flags - 2Nodesi aggiornano automaticamente quando aggiungi un terzo o più nodi. Verifica che il2Nodeflag sia assente eVotequorum - Expected votescorrisponda al numero di nodi nel tuo 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 ---------------------- [...]Regola la configurazione della recinzione.
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
Configurare Pacemaker per gli eventi pianificati Azure
Scheduled Events è un servizio di metadati Azure che dà alla tua applicazione il tempo di prepararsi per la manutenzione della VM. Fornisce informazioni sugli eventi di manutenzione imminenti, come un riavvio, così che la tua applicazione possa prepararsi e limitare le interruzioni.
L'agente di risorse azure-events-az monitora questo servizio di metadati. Quando l'agente rileva eventi e determina che un altro nodo del cluster è disponibile, imposta un attributo #health-azure di salute a livello di nodo a -1000000. Questo valore fa sì che il cluster consideri il nodo non sano e migra risorse lontano dal nodo interessato. Il vincolo di posizione garantisce che le risorse iniziali con health- vengano escluse, poiché l'agente azure-events-az deve comunque essere eseguito su entrambi i nodi. Una volta che il nodo del cluster interessato è libero dalle risorse in esecuzione del cluster, l'agente notifica il servizio di metadati e l'evento programmato può continuare. Quando tutti gli eventi si completano, l'agente risorsa riporta l'attributo #health-azure a 0, segnando di nuovo il nodo come sano.
Importante
In precedenza, questo documento descriveva l'uso dell'agente di risorse azure-events. Il nuovo agente di risorse azure-events-az supporta completamente ambienti di Azure distribuiti in zone di disponibilità diverse. Usa il più recente agente azure-events-az per tutti i sistemi SAP altamente disponibili con Pacemaker.
Installa e aggiorna il
resource-agentspacchetto.sudo dnf install -y resource-agents[1] Metti il cluster in modalità manutenzione.
sudo pcs property set maintenance-mode=true[1] Imposta la strategia e il vincolo del nodo di salute del cluster Pacemaker.
Importante
Non definire altre risorse nel cluster a partire da
health-oltre alle risorse descritte nei passaggi successivi.sudo pcs property set node-health-strategy=custom sudo pcs constraint location 'regexp%!health-.*' \ rule score-attribute='#health-azure' \ "defined #uname"[1] Impostare il valore iniziale degli attributi del cluster.
Esegui un comando per ogni nodo del cluster. Negli ambienti scale-out includere la VM Majority Maker.
# 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] Configurare le risorse in Pacemaker. Le risorse devono iniziare con
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=90ssudo pcs resource clone health-azure-events meta allow-unhealthy-nodes=trueTogli il cluster Pacemaker dalla modalità manutenzione e cancella eventuali errori
sudo pcs property set maintenance-mode=false sudo pcs resource cleanupVerifica che parta
health-azure-eventscon successo su tutti i nodi.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/enabledL'esecuzione della prima query per gli eventi pianificati può richiedere fino a due minuti. I test pacemaker con eventi pianificati possono usare azioni di riavvio o ridistribuzione per le macchine virtuali del cluster. Per altre informazioni, vedere Eventi pianificati.
Configurazione facoltativa dell'isolamento
Suggerimento
Questa sezione è applicabile solo se si vuole configurare il dispositivo di isolamento speciale fence_kdump.
Se è necessario raccogliere informazioni di diagnostica all'interno della macchina virtuale, potrebbe essere utile configurare un altro dispositivo di isolamento in base all'agente di isolamento fence_kdump. L'agente fence_kdump riesce a rilevare il ripristino da un arresto anomalo del sistema kdump di un nodo e può consentire il completamento del servizio di ripristino dall'arresto anomalo del sistema prima che vengano richiamati altri metodi di isolamento. Si noti che fence_kdump non è una sostituzione per i meccanismi di isolamento tradizionali, ad esempio SBD o Azure agente di isolamento, quando si usano macchine virtuali Azure.
Importante
Tenere presente che quando fence_kdump è configurato come dispositivo di isolamento di primo livello, introduce ritardi nelle operazioni di isolamento e, rispettivamente, nel failover delle risorse dell'applicazione.
Se viene rilevato un dump di arresto anomalo del sistema, l'isolamento viene ritardato fino al completamento del servizio di ripristino a seguito dell'arresto anomalo del sistema. Se il nodo con errore non è raggiungibile o se non risponde, l'isolamento viene ritardato per un intervallo di tempo determinato, secondo il numero configurato di iterazioni e il timeout fence_kdump.
Potrebbe essere necessario adattare il timeout fence_kdump proposto all'ambiente specifico.
È consigliabile configurare fence_kdump fencing solo quando necessario per raccogliere la diagnostica all'interno della macchina virtuale e sempre in combinazione con metodi di fencing tradizionali, ad esempio SBD o agente di fencing Azure.
I seguenti articoli della Knowledge Base di Red Hat contengono informazioni importanti sulla configurazione dell'isolamento fence_kdump:
- Consulta Come si configura fence_kdump in un cluster di Red Hat Pacemaker?
- Vedere Come configurare/gestire i livelli di isolamento in un cluster RHEL con Pacemaker.
- Per informazioni su come modificare il timeout predefinito, vedere Come si configura kdump per l'uso con il componente aggiuntivo a disponibilità elevata RHEL 6, 7, 8?
- Per informazioni su come ridurre il ritardo del failover quando si usa
fence_kdump, consultare Si può ridurre il ritardo previsto del failover quando si aggiunge la configurazione di fence_kdump?
Eseguire i passaggi facoltativi seguenti per aggiungere fence_kdump come configurazione di isolamento di primo livello, oltre alla configurazione dell'agente di isolamento Azure.
[A] Verificare che
kdumpsia attivo e configurato.systemctl is-active kdump # Expected result # active[A] Installare l'agente di isolamento
fence_kdump.sudo dnf install -y fence-agents-kdump[1] Creare un dispositivo di isolamento
fence_kdumpnel cluster.pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="sap-cl1 sap-cl2" timeout=30[1] Configurare i livelli di isolamento in modo che il meccanismo di isolamento
fence_kdumpvenga attivato per primo.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] Consentire le porte necessarie per
fence_kdumpattraverso il firewall.firewall-cmd --add-port=7410/udp --permanent firewall-cmd --reload[A] Eseguire la configurazione di
fence_kdump_nodesin/etc/kdump.confper evitare chefence_kdumpabbia esito negativo con un timeout per alcune versioni dikexec-tools. Per maggiori informazioni, vedere Timeout di fence_kdump quando fence_kdump_nodes non è specificato con kexec-tools versione 2.0.15 o successiva. Di seguito è illustrata la configurazione di esempio per un cluster a due nodi. Dopo aver apportato una modifica in/etc/kdump.conf, l'immagine kdump deve essere rigenerata. Per rigenerarla, riavviare il serviziokdump.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] Assicurarsi che il file di immagine
initramfscontenga i filefence_kdumpehosts.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_sendTestare la configurazione arrestando un nodo in modo anomalo.
Importante
Se il cluster è già in uso produttivo, pianificare il test di conseguenza perché l'arresto anomalo di un nodo ha un impatto sull'applicazione.
echo c > /proc/sysrq-trigger
Passaggi successivi
- Pianificazione e implementazione di Macchine virtuali di Azure per SAP.
- Distribuzione di Macchine virtuali di Azure per SAP.
- Distribuzione DBMS di Macchine virtuali di Azure per SAP.
- Alta disponibilità per NFS Simple Mount su VM Azure su Red Hat Enterprise Linux.
- Per informazioni su come stabilire la disponibilità elevata e pianificare il ripristino di emergenza di SAP HANA nelle macchine virtuali di Azure, vedere Disponibilità elevata di SAP HANA in Macchine virtuali di Azure.