Configuración de Pacemaker en Red Hat Enterprise Linux en Azure
Lea primero las notas y los documentos de SAP siguientes:
- Nota de SAP 1928533, que incluye:
- La lista de tamaños de máquina virtual de Azure que se admiten para la implementación del software de SAP.
- Información importante sobre capacidad para los tamaños de máquina virtual de Azure.
- El software de SAP admitido y combinaciones de sistema operativo y base de datos.
- La versión del kernel de SAP necesaria para Windows y Linux en Microsoft Azure.
- La nota de SAP 2015553 enumera los requisitos previos para las implementaciones de software de SAP admitidas por SAP en Azure.
- La nota de SAP 2002167 recomienda la configuración del sistema operativo para Red Hat Enterprise Linux
- La nota de SAP 2009879 contiene las instrucciones de SAP HANA para Red Hat Enterprise Linux
- La nota de SAP 2178632 contiene información detallada sobre todas las métricas de supervisión notificadas para SAP en Azure.
- La nota de SAP 2191498 incluye la versión de SAP Host Agent necesaria para Linux en Azure.
- La nota de SAP 2243692 incluye información acerca de las licencias de SAP en Linux en Azure.
- La nota de SAP 1999351 contiene más soluciones de problemas de la extensión de supervisión mejorada de Azure para SAP.
- La WIKI de la comunidad SAP contiene todas las notas de SAP que se necesitan para Linux.
- Planeación e implementación de Azure Virtual Machines para SAP en Linux
- Implementación de Azure Virtual Machines para SAP en Linux (este artículo)
- Implementación de DBMS de Azure Virtual Machines para SAP en Linux
- Replicación del sistema de SAP HANA en un clúster de Pacemaker
- Documentación general de RHEL
- Documentación de RHEL específica para Azure:
- Directivas de compatibilidad para clústeres de alta disponibilidad RHEL: instancias de Microsoft Azure Virtual Machines como miembros del clúster
- Instalación y configuración de un clúster de alta disponibilidad de Red Hat Enterprise Linux 7.4 (y versiones posteriores) en Microsoft Azure
- Consideraciones para adoptar la disponibilidad y los clústeres de RHEL 8
- Configuración de SAP S/4HANA ASCS/ERS con el servidor 2 de puesta en cola independiente (ENSA2) en Pacemaker en RHEL 7.6
- RHEL para ofertas SAP en Azure
Instalación del clúster

Nota
Red Hat no es compatible con el guardián emulado por software. Red Hat no es compatible con SBD en plataformas en la nube. Para más información, consulte Directivas de soporte para clústeres de alta disponibilidad de RHEL: sbd y fence_sbd. El único mecanismo de barrera compatible para clústeres de Pacemaker en Red Hat Enterprise Linux en Azure es el agente de barrera de Azure.
Los elementos siguientes tienen el prefijo [A] : aplicable a todos los nodos, [1] : aplicable solo al nodo 1 o [2] : aplicable solo al nodo 2.
[A] Registro. Este paso no es necesario si se usan imágenes habilitadas para alta disponibilidad de RHEL SAP.
Registre las máquinas virtuales y asócielas a un grupo que contenga repositorios para RHEL 7.
sudo subscription-manager register # List the available pools sudo subscription-manager list --available --matches '*SAP*' sudo subscription-manager attach --pool=<pool id>Tenga en cuenta que si adjunta un grupo a una imagen de RHEL de pago por uso de Azure Marketplace, se le facturará el doble por el uso de RHEL, una vez por la imagen de pago por uso y otra, por el derecho de RHEL en el grupo que adjunta. Para mitigar esto, Azure ahora proporciona imágenes de RHEL de BYOS. Para más información, consulte Imágenes Gold de tipo "Bring-your-own-subscription" (BYOS) de Red Hat Enterprise Linux en Azure.
[A] Habilitación de RHEL para los repositorios SAP. Este paso no es necesario si se usan imágenes habilitadas para alta disponibilidad de RHEL SAP.
Para instalar los paquetes necesarios, habilite los siguientes repositorios.
sudo subscription-manager repos --disable "*" sudo subscription-manager repos --enable=rhel-7-server-rpms sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms sudo subscription-manager repos --enable=rhel-sap-for-rhel-7-server-rpms sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-eus-rpms[A] Instalación del complemento de alta disponibilidad de RHEL
sudo yum install -y pcs pacemaker fence-agents-azure-arm nmap-ncatImportante
Se recomiendan las siguientes versiones del agente de delimitación de Azure (o posterior) para que los clientes puedan beneficiarse de un tiempo de conmutación por error más rápido, si se produce un error en la detención de un recurso o los nodos del clúster no pueden comunicarse entre sí:
RHEL 7.7 o superior usan la versión más reciente disponible del paquete fence-agents
RHEL 7.6: fence-agents-4.2.1-11.el7_6.8
RHEL 7.5: fence-agents-4.0.11-86.el7_5.8
RHEL 7.4: fence-agents-4.0.11-66.el7_4.12
Para más información, consulte La máquina virtual de Azure que se ejecuta como un miembro del clúster de alta disponibilidad de RHEL tarda mucho tiempo en delimitarse, ocurre un error en la delimitación o se agota el tiempo de espera antes de que la máquina virtual se apague.Compruebe la versión del agente de delimitación de Azure. Si es necesario, actualícelo a una versión igual o posterior a la indicada anteriormente.
# Check the version of the Azure Fence Agent sudo yum info fence-agents-azure-armImportante
Si necesita actualizar el agente de barrera de Azure y, si usa un rol personalizado, asegúrese de actualizar el rol personalizado para incluir la acción powerOff. Para más información, consulte Creación de un rol personalizado para el agente de barrera.
[A] Configure la resolución nombres de host
Puede usar un servidor DNS o modificar /etc/hosts en todos los nodos. En este ejemplo se muestra cómo utilizar el archivo /etc/hosts. Reemplace la dirección IP y el nombre de host en los siguientes comandos.
Importante
Si usa nombres de host en la configuración del clúster, es fundamental tener una resolución de nombres de host confiable. Si los nombres no están disponibles, se producirá un error en la comunicación con el clúster y esto puede provocar retrasos en la conmutación por error del clúster. La ventaja de usar /etc/hosts es que el clúster es independiente de DNS, lo que también podría representar un único punto de error.
sudo vi /etc/hostsInserte las siguientes líneas en /etc/hosts. Cambie la dirección IP y el nombre de host para que coincida con su entorno
# IP address of the first cluster node 10.0.0.6 prod-cl1-0 # IP address of the second cluster node 10.0.0.7 prod-cl1-1[A] Haga que la contraseña de hacluster coincida
sudo passwd hacluster[A] Adición de reglas de firewall para Pacemaker
Agregue las siguientes reglas de firewall para todas las comunicaciones entre los nodos del clúster.
sudo firewall-cmd --add-service=high-availability --permanent sudo firewall-cmd --add-service=high-availability[A] Habilitación de los servicios básicos del clúster
Ejecute los comandos siguientes para habilitar el servicio de Pacemaker e inícielo.
sudo systemctl start pcsd.service sudo systemctl enable pcsd.service[1] Creación del clúster de Pacemaker
Ejecute los comandos siguientes para autenticar los nodos y crear el clúster. Establezca el token en 30000 para permitir el mantenimiento con conservación de memoria. Para más información, consulte este artículo para Linux.
Si va a compilar un clúster en RHEL 7.x, use los comandos siguientes:
sudo pcs cluster auth prod-cl1-0 prod-cl1-1 -u hacluster sudo pcs cluster setup --name nw1-azr prod-cl1-0 prod-cl1-1 --token 30000 sudo pcs cluster start --allSi va a compilar un clúster en RHEL 8.x, use los comandos siguientes:
sudo pcs host auth prod-cl1-0 prod-cl1-1 -u hacluster sudo pcs cluster setup nw1-azr prod-cl1-0 prod-cl1-1 totem token=30000 sudo pcs cluster start --allCompruebe el estado de clúster con el comando siguiente:
# Run the following command until the status of both nodes is online sudo pcs status # Cluster name: nw1-azr # WARNING: no stonith devices and stonith-enabled is not false # Stack: corosync # Current DC: prod-cl1-1 (version 1.1.18-11.el7_5.3-2b07d5c5a9) - partition with quorum # Last updated: Fri Aug 17 09:18:24 2018 # Last change: Fri Aug 17 09:17:46 2018 by hacluster via crmd on prod-cl1-1 # # 2 nodes configured # 0 resources configured # # Online: [ prod-cl1-0 prod-cl1-1 ] # # No resources # # Daemon Status: # corosync: active/disabled # pacemaker: active/disabled # pcsd: active/enabled[A] Establecimiento de votos esperados.
# Check the quorum votes pcs quorum status # If the quorum votes are not set to 2, execute the next command sudo pcs quorum expected-votes 2Sugerencia
Si crea un clúster de varios nodos, que es un clúster con más de dos nodos, no establezca los votos en 2.
[1] Permitir acciones de barrera simultáneas
sudo pcs property set concurrent-fencing=true
Creación de un dispositivo STONITH
El dispositivo STONITH usa una entidad de servicio para la autorización de Microsoft Azure. Siga estos pasos para crear una entidad de servicio.
- Vaya a https://portal.azure.com.
- Abra la hoja Azure Active Directory
Vaya a Propiedades y anote el identificador del directorio. Se trata del id. de inquilino. - Haga clic en Registros de aplicaciones
- Haga clic en Nuevo registro
- Escriba un nombre y seleccione "Solo las cuentas de este directorio organizativo"
- Seleccione el tipo de aplicación "Web", escriba una dirección URL de inicio de sesión (por ejemplo, http://localhost) y haga clic en Agregar
La dirección URL de inicio de sesión no se usa y puede ser cualquier dirección URL válida - Seleccione Certificados y secretos, y luego haga clic en Nuevo secreto de cliente
- Escriba una descripción para la nueva clave, seleccione "Nunca expira" y haga clic en Agregar
- Anote el valor. Se utiliza como contraseña para la entidad de servicio
- Seleccione Información general. Anote el identificador de la aplicación. Se utiliza como nombre de usuario (Id. de inicio de sesión en los pasos siguientes) de la entidad de servicio
[1] Creación de un rol personalizado para el agente de barrera
La entidad de servicio no tiene permiso para tener acceso a los recursos de Azure de forma predeterminada. Debe concedérselos para iniciar y detener (apagar) todas las máquinas virtuales del clúster. Si no ha creado aún el rol personalizado, puede crearlo mediante PowerShell o la CLI de Azure.
Utilice el siguiente contenido para el archivo de entrada. Debe adaptar el contenido a sus suscripciones; esto es, reemplace c276fc76-9cd4-44c9-99a7-4fd71546436e y e91d47c4-76f3-4271-a796-21b4ecfe3624 por los identificadores de su suscripción. Si solo tiene una suscripción, quite la segunda entrada en AssignableScopes.
{
"Name": "Linux Fence Agent Role",
"description": "Allows to power-off and start virtual machines",
"assignableScopes": [
"/subscriptions/e663cc2d-722b-4be1-b636-bbd9e4c60fd9",
"/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624"
],
"actions": [
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/powerOff/action",
"Microsoft.Compute/virtualMachines/start/action"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
[A] Asignación del rol personalizado a la entidad de servicio
Asigne el rol personalizado "Rol del agente de barrera de Linux" que se creó en el último capítulo a la entidad de servicio. Deje de utilizar el rol de propietario. Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.
Asegúrese de asignar el rol para ambos nodos de clúster.
[1] Cree los dispositivos STONITH
Después de editar los permisos para las máquinas virtuales, puede configurar los dispositivos STONITH en el clúster.
sudo pcs property set stonith-timeout=900
Nota
La opción "pcmk_host_map" SOLO es necesaria en el comando si los nombres de host RHEL y los nombres de VM de Azure NO son idénticos. Especifique la asignación en el formato hostname:nombre-VM. Consulte la sección en negrita en el comando. Para obtener más información, consulte el artículo sobre el formato que se debe usar para especificar las asignaciones de nodo en los dispositivos stonith en pcmk_host_map
Para configurar al agente de delimitación en RHEL 7.X, use el comando siguiente:
sudo pcs stonith create rsc_st_azure fence_azure_arm login="login ID" passwd="password" resourceGroup="resource group" tenantId="tenant ID" subscriptionId="subscription id" pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \
power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 pcmk_monitor_retries=4 pcmk_action_limit=3 pcmk_delay_max=15 \
op monitor interval=3600
Para configurar al agente de delimitación en RHEL 8.X, use el comando siguiente:
sudo pcs stonith create rsc_st_azure fence_azure_arm username="login ID" password="password" resourceGroup="resource group" tenantId="tenant ID" subscriptionId="subscription id" pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \
power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 pcmk_monitor_retries=4 pcmk_action_limit=3 pcmk_delay_max=15 \
op monitor interval=3600
Sugerencia
Configure el atributo pcmk_delay_max solo en clústeres de Pacemaker de dos nodos. Para más información sobre cómo evitar carreras de barrera en un clúster de Pacemaker de dos nodos, consulte Retraso de barreras en un clúster de dos nodos para evitar escenarios de carreras de barrera de "muerte por barrera".
Importante
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 debido a la operación de supervisión que ya se está ejecutando.
[1] Habilite el uso de un dispositivo STONITH
sudo pcs property set stonith-enabled=true
Sugerencia
El agente de barrera de Azure requiere conectividad saliente a los punto de conexión públicos como se documenta, junto con las posibles soluciones, en Conectividad del punto de conexión público para las máquinas virtuales que usan el ILB estándar.
Configuración opcional de STONITH
Sugerencia
Esta sección solo es aplicable si se desea configurar un dispositivo de barrera especial para fence_kdump.
Si es necesario recopilar información de diagnóstico dentro de la máquina virtual, puede ser útil configurar un dispositivo STONITH adicional basado en el agente de barrera fence_kdump. El agente fence_kdump puede detectar que un nodo ha entrado en la recuperación de bloqueos de kdump y puede permitir que se complete el servicio de recuperación de bloqueos antes de que se invoque a otros métodos de barrera. Tenga en cuenta que fence_kdump no sustituye a los mecanismos de barrera tradicionales, como el agente de barrera de Azure, cuando se usan máquinas virtuales de Azure.
Importante
Tenga en cuenta que cuando fence_kdump se configura como un stonith de primer nivel, introducirá retrasos en las operaciones de barrera y, respectivamente, retrasos en la conmutación por error de los recursos de la aplicación.
Si se detecta correctamente un volcado de memoria, la creación de barreras se retrasará hasta que se complete el servicio de recuperación de bloqueos. Si no se puede acceder al nodo con errores o este no responde, la creación de barreras se retrasará según el tiempo determinado por el número configurado de iteraciones y el tiempo de espera de fence_kdump. Para más información, consulte Configuración de fence_kdump en un clúster de Pacemaker de Red Hat.
Es posible que el tiempo de espera propuesto de fence_kdump deba adaptarse al entorno específico.
Se recomienda configurar un stonith de fence_kdump solo cuando sea necesario para recopilar diagnósticos dentro de la máquina virtual y siempre en combinación con el método de barrera tradicional, como el agente de barrera de Azure.
Las siguientes KB de Red Hat contienen información importante sobre la configuración de un stonith de fence_kdump:
- Configuración de fence_kdump en un clúster de Pacemaker de Red Hat
- Configuración y administración de niveles de STONITH en un clúster de RHEL con Pacemaker
- Error de fence_kdump con el mensaje "tiempo de espera después de X segundos" en un clúster de alta disponibilidad de RHEL 6 o 7 con una versión de kexec-tools anterior a la versión 2.0.14
- Para obtener información sobre cómo cambiar el tiempo de espera predeterminado, consulte Configuración de kdump para su uso con el complemento de alta disponibilidad de RHEL 6, 7 y 8.
- Para obtener información sobre cómo reducir el retraso de la conmutación por error al usar
fence_kdump, consulte ¿Puedo reducir el retraso esperado de la conmutación por error al agregar la configuración de fence_kdump?
Ejecute los siguientes pasos opcionales para agregar fence_kdump como una configuración de STONITH de primer nivel, además de la configuración del agente de barrera de Azure.
[A] Compruebe que kdump esté activo y configurado.
systemctl is-active kdump # Expected result # active[A] Instale el agente de barrera
fence_kdump.yum install fence-agents-kdump[1] Cree un dispositivo stonith de
fence_kdumpen el clúster.pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="prod-cl1-0 prod-cl1-1" timeout=30[1] Configure los niveles de stonith de modo que el mecanismo de barrera
fence_kdumpse establezca primero.pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="prod-cl1-0 prod-cl1-1" pcs stonith level add 1 prod-cl1-0 rsc_st_kdump pcs stonith level add 1 prod-cl1-1 rsc_st_kdump pcs stonith level add 2 prod-cl1-0 rsc_st_azure pcs stonith level add 2 prod-cl1-1 rsc_st_azure # Check the stonith level configuration pcs stonith level # Example output # Target: prod-cl1-0 # Level 1 - rsc_st_kdump # Level 2 - rsc_st_azure # Target: prod-cl1-1 # Level 1 - rsc_st_kdump # Level 2 - rsc_st_azure[A] Permita los puertos necesarios para
fence_kdumpen el firewall.firewall-cmd --add-port=7410/udp firewall-cmd --add-port=7410/udp --permanent[A] Asegúrese de que el archivo de imagen
initramfscontenga los archivosfence_kdumpyhosts. Para más información, consulte Configuración de fence_kdump en un clúster de Pacemaker de Red Hat.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[A] Realice la configuración de
fence_kdump_nodesen el archivo/etc/kdump.confpara evitar quefence_kdumpgenere errores de tiempo de espera para algunas versiones dekexec-tools. Para más información, consulte Error de tiempo de espera de fence_kdump cuando no se especifica fence_kdump_nodes con la versión 2.0.15 o posterior de kexec-tools y Error de fence_kdump con el mensaje "tiempo de espera después de X segundos" en un clúster de alta disponibilidad de RHEL 6 o 7 con una versión de kexec-tools anterior a la versión 2.0.14. A continuación, se muestra la configuración de ejemplo para un clúster de dos nodos. Después de realizar un cambio en el archivo/etc/kdump.conf, se debe volver a generar la imagen de kdump. Esto se puede lograr mediante un reinicio del serviciokdump.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 kdumpPruebe la configuración bloqueando un nodo. Para más información, consulte Configuración de fence_kdump en un clúster de Pacemaker de Red Hat.
Importante
Si el clúster ya está en uso productivo, planee la prueba en consecuencia, ya que bloquear un nodo tendrá un impacto en la aplicación.
echo c > /proc/sysrq-trigger
Pasos siguientes
- Planeamiento 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
- Para más información sobre cómo establecer la alta disponibilidad y planear la recuperación ante desastres de SAP HANA en Azure Virtual Machines, consulte Alta disponibilidad de SAP HANA en las máquinas virtuales de Azure.