Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo explica cómo configurar y configurar un clúster básico de dos nodos Pacemaker en SUSE Linux Enterprise Server (SLES) en Azure. Estas instrucciones cubren SLES for SAP 12 SP5, SLES for SAP 15 SP 4+, y SLES for SAP 16.
Prerequisites
Documentación de Alta Disponibilidad (HA) de SLES
Documentación SLES para las Ofertas SAP
Información general
Esta guía asume que ya has desplegado el grupo de recursos requerido, la red virtual de Azure, la subred y las máquinas virtuales (VMs).
Los clústeres que funcionan en Linux requieren un agente de cercas para proteger nodos poco saludables. Para realizar esta tarea en Azure, utiliza uno de los siguientes métodos:
- Muerte basada en almacenamiento (SBD) con disco compartido de Azure
- Storage Based Death (SBD) con destinos iSCSI
- Agente de barreras de Azure
Nota
Los siguientes prefijos se utilizan en este documento:
- [A]: aplicable a todos los nodos.
- [1]: aplicable solo al nodo 1.
- [2]: aplicable solo al nodo 2.
Uso de SBD con Azure Shared Disk
Al usar Azure Shared Disks, puedes montar el mismo disco en todas las máquinas virtuales que forman parte del clúster. Puedes alojar tu dispositivo SBD en ese disco compartido sin necesidad de infraestructura adicional.
Ventajas
- Proporciona una opción nativa de dispositivo de bloque compartido de Azure para SBD sin requerir recursos adicionales.
- Las máquinas virtuales conectan directamente el disco gestionado, reduciendo la dependencia de consideraciones adicionales de la red.
Consideraciones importantes
- Puedes usar un disco compartido de Azure con el
Premium SSDSKU como dispositivo SBD. - Revisa la lista de sistemas operativos compatibles.
- Los dispositivos SBD que utilizan un disco compartido premium Azure soportan almacenamiento redundante local (LRS) y almacenamiento redundante por zonas (ZRS).
- En función del tipo de implementación, elija el almacenamiento redundante adecuado para un disco compartido de Azure como dispositivo SBD.
- Un dispositivo SBD que utilice LRS para el disco compartido premium de Azure (skuName: Premium_LRS) solo admite implementaciones en un conjunto de disponibilidad.
- Se recomienda un dispositivo SBD que utilice ZRS para un disco compartido premium Azure (skuName - Premium_ZRS) para despliegues en zonas de disponibilidad.
- No es necesario que el disco compartido de Azure que use para dispositivos SBD sea grande. El valor maxShares determina cuántos nodos de clúster puede usar el disco compartido. Por ejemplo, puedes usar tamaños de disco P1 o P2 para tu dispositivo SBD en un clúster de dos nodos como SAP ASCS/ERS o SAP HANA scale-up.
- Para clústeres con más de dos nodos, consulta el valor documentado de maxShares del disco seleccionado.
- No conectes un dispositivo SBD de disco compartido de Azure entre diferentes clústeres de Pacemakers.
- Si usa varios dispositivos SBD de disco compartido de Azure, compruebe el límite para el número máximo de discos de datos que se pueden conectar a la máquina virtual.
- Para más información sobre las limitaciones del disco compartido de Azure, repase minuciosamente la sección "Limitaciones" de la documentación del disco compartido de Azure.
Uso de SBD con destinos iSCSI
Esta solución requiere alojar objetivos de Internet Small Computer System Interface (iSCSI) en al menos una máquina virtual adicional (VM).
Ventajas
- Estos servidores anfitriones iSCSI también pueden alojar objetivos iSCSI para otros clústeres de Pacemaker en la misma región.
- Si ya los usas en las instalaciones, no requieren cambios en la forma en que operas el clúster Pacemaker.
Consideraciones importantes
- Debes usar tres servidores anfitriones iSCSI para tener el mayor nivel de resiliencia para tu clúster.
- El uso de un único servidor introduce un punto único de fallo que impide que el clúster realice el fencing si dicho servidor está inactivo.
- Pacemaker no permite el fencing si solo se dispone de dos destinos y uno de ellos está inactivo.
- Los servidores anfitriones objetivo de iSCSI deben estar en la misma región que tus clústeres.
- El enrutamiento de red entre tus clústeres y los servidores anfitriones iSCSI no debe atravesar ningún dispositivo de red no redundante (como un Dispositivo Virtual de Red).
- Los eventos de mantenimiento y otros problemas con los dispositivos de red pueden afectar negativamente a la estabilidad y fiabilidad de la configuración general del clúster.
Usando el Agente de la Cerca de Azure
Al usar el agente Azure Fence Agent, el clúster puede aislar nodos llamando directamente a la API de Azure para reiniciar los nodos que hayan fallado.
Ventajas
- No hacen falta recursos adicionales.
- Las Identidades Gestionadas eliminan cualquier mantenimiento de credenciales.
Consideraciones importantes
- Utiliza Identidades Gestionadas para la autenticación. Si actualmente usas un principal de servicio, actualiza el Azure Fence Agent de SPN a MSI.
- El agente de protección de Azure requiere conectividad saliente hacia puntos de conexión públicos de Azure. Para obtener más información junto con las posibles soluciones, consulte Conectividad del punto de conexión público para las máquinas virtuales que usan el ILB estándar.
- Las operaciones de supervisión y barrera se deserializan. Como resultado, si hay una operación de supervisión más larga y un evento de barrera simultánea, no habrá ningún retraso en la conmutación por error del clúster porque la operación de supervisión ya se está ejecutando.
Despliega un disco compartido de Azure para SBD
Para crear y conectar un disco compartido de Azure usando PowerShell, ejecuta los siguientes comandos. Si quieres desplegar recursos usando la CLI de Azure o el portal de Azure, consulta Desplegar 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
}
Usar destinos iSCSI
Construir servidores host de destino iSCSI
Implemente tres máquinas virtuales que ejecuten una versión compatible del sistema operativo SLES. Las máquinas virtuales no necesitan ser grandes. Tamaños de VM como Standard_E2s o Standard_D2s son suficientes.
Nota
No necesitas usar SLES para la imagen del sistema operativo de aplicaciones SAP para el servidor objetivo iSCSI. Puedes usar una imagen estándar de SLES OS en su lugar. Sin embargo, el ciclo de vida de soporte varía entre las distintas versiones del producto del sistema operativo.
Instala las últimas actualizaciones y reinicia si es necesario.
sudo zypper -n updateInstala el paquete de destino iSCSI.
sudo zypper -n install targetcli-fbActiva y inicia el servicio iSCSI.
sudo systemctl start targetcli sudo systemctl enable targetcli
Crear destinos iSCSI
Para cada clúster, necesitas provisionar un disco iSCSI en cada servidor anfitrión iSCSI y luego conceder acceso a ese disco a cada nodo del clúster. En este ejemplo, creas discos para dos clústeres diferentes:
- ascsnw1: El clúster ASCS/ERS para NW1
- hdbnw1: El clúster de bases de datos HANA para NW1
- sap-cl1 y sap-cl2: Nombres de host para los nodos del clúster ASCS/ERS de NW1
- sap-db1 y sap-db2: Nombres de host para los nodos del clúster HANA de NW1
- Cree la carpeta raíz para todos los dispositivos SBD.
sudo mkdir /sbd - Crea el dispositivo SBD para el primer clúster (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 el dispositivo SBD para el segundo clúster (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 - Guarde la configuración.
sudo targetcli saveconfig - Verifica la configuración.
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]
Configurar Azure Fence Agent
Crear identidad
Para crear una identidad gestionada (MSI), crea una identidad gestionada asignada por el sistema para cada VM del clúster. Por ahora no se admiten identidades gestionadas asignadas por usuarios.
Crear un rol personalizado.
Tu identidad necesita permisos a través de RBAC de Azure para realizar acciones de protección en tus máquinas virtuales. Para cumplir con el Modelo de Seguridad de Acceso Mínimo Privilegiado (LPA), crea un rol RBAC personalizado.
Utiliza la siguiente definición para tu puesto, reemplazando tu(s) ID(s) de suscripción donde sea necesario:
{ "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": [] }Asigna el rol personalizado a tus identidades.
Para cada VM de tu clúster, asigna su identidad gestionada al rol personalizado "Linux Fence Agent" para cada VM del clúster, incluida ella misma. Para conocer los pasos detallados, consulte Asignación de acceso de una identidad administrada a un recurso mediante Azure Portal.
Importante
Ten en cuenta que la asignación y eliminación de autorizaciones con identidades gestionadas puede retrasarse hasta que entren en vigor.
Crear y configurar el clúster
[A] Actualizar el sistema operativo y reiniciar si es necesario.
sudo zypper -n update[A] Instalar los paquetes de clúster necesarios.
sudo zypper -n install socat pacemaker resource-agents[A] Instalar los paquetes de vallas necesarios.
sudo zypper -n install sbdsudo zypper -n install sbd open-iscsisudo zypper -n install fence-agents-azure-arm[A] Configurar el DNS.
Puede usar un servidor DNS o modificar
/etc/hostsen todos los nodos. En este ejemplo se muestra cómo utilizar el archivo/etc/hosts.Actualiza las entradas para que coincidan con tus IPs y nombres de 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] Intercambie claves SSH de root entre los nodos.
sudo ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_ed25519 sudo cat /root/.ssh/id_ed25519.pub sudo vi /root/.ssh/authorized_keys [...] <Contents from cat command on other server>[A] Configure el sistema operativo.
- Ajusta la caché sucia para clientes NFS en sistemas de alta memoria. Consulta este artículo para más información.
sudoedit /etc/sysctl.d/30-nfs.conf && sudo sysctl --systemvm.dirty_bytes = 629145600 vm.dirty_background_bytes = 314572800 - Asegúrate
vm.swappinessde que esté en 10 para reducir el uso de swaps y favorecer la memoria.sudoedit /etc/sysctl.d/31-memswap.conf && sudo sysctl --systemvm.swappiness = 10 -
Solo SLES 12 SP 5: Pacemaker crea ocasionalmente muchos procesos, que pueden agotar el número permitido. Cuando esto ocurre, un latido entre los nodos del clúster podría producir un error y dar lugar a la conmutación por error de los recursos. Aumenta el número máximo de procesos permitidos estableciendo el siguiente parámetro:
# Edit the configuration file sudo vi /etc/systemd/system.conf [...] DefaultTasksMax=4096 [...] # Activate this setting sudo systemctl daemon-reload # Test to ensure that the change was successful sudo systemctl --no-pager show | grep DefaultTasksMax
- Ajusta la caché sucia para clientes NFS en sistemas de alta memoria. Consulta este artículo para más información.
[1] Crea el clúster.
sudo crm cluster init --yes --name ascsnw1 --node sap-cl1 --node sap-cl2[1] Configurar la configuración del clúster.
sudo crm corosync set totem.token 30000 sudo csync2 -xv sudo crm cluster run "corosync-cfgtool -R"Configura un retardo de arranque para Pacemaker.
Iniciar Pacemaker inmediatamente después del arranque puede permitir que un nodo se reincorpore al clúster antes de que se complete la conmutación por error, evitando la conmutación por error o retrasando la recuperación. Para solucionar este problema, utiliza un servicio de temporizador para retrasar el arranque del marcapasos al reiniciar.
-
[R] Configurar el servicio de temporizador.
sudo vi /etc/systemd/system/pacemaker.timer[Unit] Description=Delay start of pacemaker.service after boot [Timer] OnBootSec=216 Unit=pacemaker.service [Install] WantedBy=timers.target -
[A] Activar el servicio de temporizador.
sudo systemctl daemon-reload sudo systemctl enable pacemaker.timer -
[1] Desactivar los servicios de Pacemaker.
sudo crm cluster disable --all
-
[R] Configurar el servicio de temporizador.
Valida el clúster.
-
[1] Validar el clúster de Pacemaker.
sudo crm status Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: sap-cl1 (version 2.1.7+20231219.0f7f88312-150600.6.15.1-2.1.7+20231219.0f7f88312) - partition with quorum * Last updated: Tue Aug 4 17:50:24 2026 on sap-cl1 * Last change: Thu Jul 30 19:02:56 2026 by hacluster via hacluster on sap-cl1 * 2 nodes configured * 0 resource instances configured Node List: * Online: [ sap-cl1 sap-cl2 ] Full List of Resources: -
[A] Validar servicios.
systemctl list-unit-files pacemaker.timer pacemaker.service corosync.serviceUNIT FILE STATE PRESET corosync.service disabled disabled pacemaker.service disabled disabled pacemaker.timer enabled disabled
-
[1] Validar el clúster de Pacemaker.
Configurar la valla
-
[A] Habilitar el servicio SBD.
sudo systemctl enable sbd -
[A] Activar el vigilante de software.
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[A] Descubre el ID del dispositivo iSCSI.
- Determinar el punto de montaje en función del número LUN
ls -l /dev/disk/azure/scsi1/lun1 lrwxrwxrwx. 1 root root 12 Apr 16 20:22 /dev/disk/azure/scsi1/lun1 -> ../../../sdb - Obtén el ID del dispositivo iSCSI a partir del montaje.
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
- Determinar el punto de montaje en función del número LUN
-
[1] Cree el dispositivo SBD.
sudo sbd -d /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -1 60 -4 120 create
-
[1] Añadir el dispositivo SBD al clúster.
sudo crm cluster init --yes sbd -s /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -
[1] Cambiar la configuración de SBD.
sudo crm configure property stonith-timeout=210 sudo crm configure property stonith-enabled=true # For the below command, 600 is the interval, and 120 is the timeout sudo crm configure monitor stonith-sbd 600:120 sudo crm configure set stonith-sbd.pcmk_delay_max 15 -
[A] Validar el archivo de configuración SBD.
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
-
[A] Habilitar los servicios necesarios.
sudo systemctl enable sbd iscsi iscsid -
[A] Activar el vigilante de software.
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[1] Actualizar el
InitiatorNamepara el nodo 1.sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl1.local:sap-cl1 -
[2] Actualizar el
InitiatorNamepara el nodo 2.# Node 2 sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl2.local:sap-cl2 -
[A] Reinicia los servicios iSCSI.
sudo systemctl restart iscsi iscsid -
[A] Monta los destinos iSCSI desde todos los servidores 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] Descubre los IDs de los dispositivos iSCSI.
- Determina los puntos de montaje de 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 - Consigue los identificadores de dispositivos 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 los puntos de montaje de iSCSI.
-
[1] Crear los dispositivos 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] Añadir los dispositivos SBD al clúster.
sudo crm cluster init --yes sbd \ -s /dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528 \ -s /dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff \ -s /dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 -
[1] Cambiar la configuración de SBD.
sudo crm configure property stonith-timeout=210 sudo crm configure property stonith-enabled=true # For the below command, 600 is the interval, and 120 is the timeout sudo crm configure monitor stonith-sbd 600:120 sudo crm configure set stonith-sbd.pcmk_delay_max 15 -
[A] Validar el archivo de configuración SBD.
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
[1] Configurar Azure Fence Agent.
Nota
Al usar Azure Government Cloud, debes especificar la
cloud=opción al configurar el Agente de Cerca de Azure. Por ejemplo,cloud=usgovpara la nube del gobierno de Azure en Estados Unidos.sudo crm configure primitive rsc_st_azure stonith:fence_azure_arm params 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 el clúster para Azure Fence Agent.
sudo crm configure property stonith-enabled=true sudo crm configure property stonith-timeout=900
Configuración de un clúster Pacemaker con más de dos nodos
Si estás construyendo un clúster más grande, ten en cuenta estas consideraciones:
[1] Ajustar la configuración del clúster.
Los
quorum.two_nodevalores yquorum.expected_votesse actualizan automáticamente cuando añades un tercer nodo o más. Valida quequorum.two_nodees0yquorum.expected_voteses igual al número de nodos en tu clúster.sudo crm corosync get quorum.two_node sudo crm corosync get quorum.expected_votesAjusta la configuración de la valla.
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
Configuración de Pacemaker para eventos programados de Azure
Scheduled Events es un servicio de metadatos de Azure que da tiempo a tu aplicación para prepararse para el mantenimiento de la máquina virtual. Proporciona información sobre eventos de mantenimiento próximos, como un reinicio, para que tu aplicación pueda prepararse para ellos y limitar interrupciones.
El agente de recurso azure-events-az monitoriza este servicio de metadatos. Cuando el agente detecta eventos y determina que hay otro nodo del clúster disponible, establece un atributo #health-azure de salud a nivel de nodo como -1000000. Este valor hace que el clúster considere el nodo insalubre y migra recursos lejos del nodo afectado. La restricción de ubicación garantiza que los recursos que empiezan con health- quedan excluidos, ya que el agente azure-events-az aún debe ejecutarse en ambos nodos. Una vez que el nodo afectado del clúster está libre de recursos en funcionamiento, el agente notifica al servicio de metadatos y el evento programado puede continuar. Cuando todos los eventos se completan, el agente de recursos devuelve el #health-azure atributo a 0, marcando el nodo como saludable de nuevo.
Importante
Anteriormente, en este documento se describía el uso de azure-events del agente de recursos. El nuevo agente de recursos azure-events-az es totalmente compatible con los entornos de Azure implementados en diferentes zonas de disponibilidad. Utiliza el agente azure-events-az más reciente para todos los sistemas SAP de alta disponibilidad con Pacemaker.
Solo SLES 12 SP5 Revisa tu versión del
resource-agentspaquete y actualiza si es necesario. SLES 15 y superiores lo incluyen por defecto en sus versiones instaladas.zypper info resource-agentsLa versión mínima es
resource-agents-4.3.018.a7fb5035-3.98.1.[1] Coloca el grupo en modo mantenimiento.
sudo crm configure property maintenance-mode=true[1] Configure la estrategia y la restricción de nodos de estado del clúster de Pacemaker.
Importante
No definas ningún otro recurso en el clúster que empiece por
health-, aparte de los recursos descritos en los siguientes pasos.sudo crm configure property node-health-strategy=custom sudo crm configure location loc_azure_health \ /'!health-.*'/ rule '#health-azure': defined '#uname'[1] Establezca el valor inicial de los atributos del clúster.
Ejecuta un comando para cada nodo del clúster. En entornos de escalabilidad horizontal, incluye la máquina virtual 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] Configure los recursos en Pacemaker. Los recursos deben comenzar con
health-azure.sudo crm configure primitive health-azure-events ocf:heartbeat:azure-events-az \ meta failure-timeout=120s \ op start start-delay=60s \ op monitor interval=10s sudo crm configure clone health-azure-events-cln health-azure-events \ meta allow-unhealthy-nodes=trueNota
Cuando configuras el
health-azure-eventsrecurso, puedes ignorar el siguiente mensaje de advertencia.ADVERTENCIA: health-azure-events: atributo desconocido ”allow-unhealthy-nodes”.
Quite el clúster de Pacemaker del modo de mantenimiento y borre cualquier error.
sudo crm configure property maintenance-mode=false sudo crm resource cleanupVerifica que
health-azure-eventsse inicia correctamente en todos los nodos.crm status Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: sap-cl1 (version 3.0.0+20250218.64cd85422c-160000.4.1-3.0.0+20250218.64cd85422c) - partition with quorum * Last updated: Thu Jul 30 19:07:49 2026 on sap-cl1 * Last change: Thu Jul 30 19:06:01 2026 by root via root on sap-cl1 * 2 nodes configured * 3 resource instances configured Node List: * Online: [ z04ascs3 z04ascs4 ] Full List of Resources: * stonith-sbd (stonith:fence_sbd): Started sap-cl1 * Clone Set: health-azure-events-cln [health-azure-events]: * Started: [ sap-cl1 sap-cl2 ]La primera ejecución de consultas para eventos programados puede tardar hasta 2 minutos. Las pruebas de Pacemaker con eventos programados pueden usar acciones de reinicio o reimplementación para las máquinas virtuales del clúster. Para más información, consulte los eventos programados.
Nota
Después de configurar los recursos de Pacemaker para el agente azure-events, si colocas el clúster en modo de mantenimiento o fuera de él, podrías recibir mensajes de advertencia como:
ADVERTENCIA: cib-bootstrap-options: atributo desconocido ”hostName_hostname”
ADVERTENCIA: cib-bootstrap-options: atributo desconocido "azure-events_globalPullState"
ADVERTENCIA: cib-bootstrap-options: atributo desconocido "hostName_ hostname"
Puedes ignorar estos mensajes de advertencia.
Pasos siguientes
- Planeación e implementación de Azure Virtual Machines para SAP.
- Implementación de Azure Virtual Machines para SAP.
- Implementación de DBMS de Azure Virtual Machines para SAP.
- Alta disponibilidad para NFS Simple Mount en máquinas virtuales de Azure en SUSE Linux Enterprise Server.
- Para obtener información sobre cómo establecer alta disponibilidad y planear la recuperación ante desastres de SAP HANA en máquinas virtuales de Azure, consulte Alta disponibilidad de SAP HANA en Azure Virtual Machines.