Alta disponibilidad para el sistema de escalabilidad horizontal de SAP HANA con HSR en SUSE Linux Enterprise Server

En este artículo se describe cómo implementar un sistema SAP HANA de alta disponibilidad en una configuración de escalabilidad horizontal con replicación del sistema HANA (HSR) y Pacemaker en máquinas virtuales (VM) de Azure SUSE Linux Enterprise Server. Los sistemas de archivos compartidos de la arquitectura presentada se montan en NFS y los proporciona Azure NetApp Files o recurso compartido NFS en Azure Files.

En las configuraciones de ejemplo, como en los comandos de instalación, la instancia de HANA es 03 y el identificador del sistema de HANA es HN1.

Antes de comenzar, consulte las siguientes notas y documentos de SAP:

Información general

Un método para lograr la alta disponibilidad de HANA para las instalaciones de escalabilidad horizontal de HANA es configurar la replicación del sistema HANA y proteger la solución con el clúster de Pacemaker para permitir la conmutación por error automática. Cuando se produce un error en un nodo activo, el clúster conmuta por error los recursos de HANA al otro sitio.
La configuración presentada muestra tres nodos de HANA en cada sitio, más el nodo para lograr la mayoría que sirve para evitar el escenario de split-brain. Las instrucciones se pueden adaptar para incluir más máquinas virtuales como nodos de base de datos HANA.

El sistema /hana/shared de archivos compartidos de HANA en la arquitectura presentada se puede proporcionar mediante Azure NetApp Files o el recurso compartido NFS en Azure Files. El sistema de archivos compartidos de HANA está montado en NFS en cada nodo de HANA en el mismo sitio de replicación del sistema de HANA. Los sistemas de archivos /hana/data y /hana/log son sistemas de archivos locales y no se comparten entre los nodos de la base de datos HANA. SAP HANA se instalará en modo no compartido.

Para las configuraciones de almacenamiento de SAP HANA recomendadas, consulte Configuraciones de almacenamiento de máquinas virtuales de Azure en SAP HANA.

Importante

Si se implementan todos los sistemas de archivos de HANA en Azure NetApp Files, en el caso de los sistemas de producción, donde el rendimiento es una clave, se recomienda evaluar y considerar el uso de un grupo de volúmenes de aplicación de Azure NetApp Files para SAP HANA.

Advertencia

No se admite la implementación de /hana/data y /hana/log en NFS en Azure Files.

SAP HANA scale-out with HSR and Pacemaker cluster on SLES

En el diagrama anterior, se representan tres subredes dentro de una red virtual de Azure, siguiendo las recomendaciones de la red de SAP HANA:

  • Para la comunicación del cliente: client 10.23.0.0/24
  • Para la comunicación interna entre nodos de HANA: inter 10.23.1.128/26
  • Para la replicación del sistema HANA: hsr 10.23.1.192/26

Como /hana/data y /hana/log se han implementado en discos locales, no es necesario implementar una subred independiente ni tarjetas de red virtual independientes para la comunicación con el almacenamiento.

Si usa Azure NetApp Files, los volúmenes NFS para /hana/shared, se implementan en una subred independiente, delegada en Azure NetApp Files: anf 10.23.1.0/26.

Preparación de la infraestructura

En las instrucciones siguientes, se supone que ya ha creado el grupo de recursos, la red virtual de Azure con tres subredes de la red de Azure: client, inter y hsr.

Implementación de máquinas virtuales Linux en Azure Portal

  1. Implemente las máquinas virtuales de Azure.

    Para la configuración presentada en este documento, implemente siete máquinas virtuales:

    • tres máquinas virtuales que actúan como nodos de la base de datos HANA para la replicación del sitio 1 de HANA: hana-s1-db1, hana-s1-db2 y hana-s1-db3
    • tres máquinas virtuales que actúan como nodos de la base de datos HANA para la replicación del sitio 2 de HANA: hana-s2-db1, hana-s2-db2 y hana-s2-db3
    • una máquina virtual pequeña que sirve para obtener la mayoría: hana-s-mm

    Las máquinas virtuales, implementadas como nodos de base de datos de SAP HANA, deben tener la certificación de SAP para HANA, tal como se publica en el directorio de hardware de SAP HANA. Al implementar los nodos de base de datos HANA, asegúrese de que se ha seleccionado la red acelerada.

    Para el nodo que sirve para lograr la mayoría, puede implementar una máquina virtual pequeña, ya que esta máquina virtual no ejecuta ninguno de los recursos de SAP HANA. La máquina virtual para lograr la mayoría se usa en la configuración del clúster para obtener un número impar de nodos de clúster en un escenario de split-brain. La máquina virtual para lograr la mayoría solo necesita una interfaz de red virtual en la subred client en este ejemplo.

    Implemente discos administrados locales para /hana/data y /hana/log. La configuración de almacenamiento mínima recomendada para /hana/data y /hana/log se describe en Configuraciones de almacenamiento de máquinas virtuales de Azure en SAP HANA.

    Implemente la interfaz de red principal para cada máquina virtual en la subred de la red virtual client.
    Cuando la máquina virtual se implementa mediante Azure Portal, el nombre de la interfaz de red se genera automáticamente. Para simplificar, en estas instrucciones haremos referencia a las interfaces de red principales, generadas automáticamente, que están conectadas a la subred de la red virtual de Azure client como hana-s1-db1-client, hana-s1-db2-client, hana-s1-db3-client, etcétera.

    Importante

    • Asegúrese de que el sistema operativo seleccionado esté certificado por SAP para SAP HANA en los tipos específicos de VM que use. Para obtener una lista de los tipos de VM certificados para SAP HANA y las versiones de sistema operativo correspondientes, consulte el sitio Plataformas de IaaS certificadas para SAP HANA. Haga clic en los detalles del tipo de VM de la lista para obtener la lista completa de las versiones de sistema operativo compatibles con SAP HANA para ese tipo.
    • Si decide implementar /hana/shared en NFS en Azure Files, se recomienda implementar en SLES 15 SP2 y versiones posteriores.
  2. Cree seis interfaces de red, una para cada máquina virtual de base de datos HANA, en la subred de la red virtual inter (en este ejemplo, hana-s1-db1-inter, hana-s1-db2-inter, hana-s1-db3-inter, hana-s2-db1-inter, hana-s2-db2-inter y hana-s2-db3-inter).

  3. Cree seis interfaces de red, una para cada máquina virtual de base de datos HANA, en la subred de la red virtual hsr (en este ejemplo, hana-s1-db1-hsr, hana-s1-db2-hsr, hana-s1-db3-hsr, hana-s2-db1-hsr, hana-s2-db2-hsr y hana-s2-db3-hsr).

  4. Conexión de las interfaces de red virtual recién creadas a las máquinas virtuales correspondientes:

    1. Vaya a la máquina virtual en Azure Portal.
    2. En el menú de la izquierda, seleccione Máquinas virtuales. Filtre por el nombre de máquina virtual (por ejemplo, hana-s1-db1) y luego seleccione la máquina virtual.
    3. En el panel Información general, seleccione Detener para desasignar la máquina virtual.
    4. Seleccione Redes y adjunte la interfaz de red. En la lista desplegable Adjuntar interfaz de red, seleccione las interfaces de red ya creadas para las subredes inter y hsr.
    5. Seleccione Guardar.
    6. Repita los pasos del b al e para las demás máquinas virtuales (en nuestro ejemplo, hana-s1-db2, hana-s1-db3, hana-s2-db1, hana-s2-db2 y hana-s2-db3).
    7. Deje las máquinas virtuales en estado detenido por ahora. A continuación, habilitaremos la opción Redes aceleradas para todas las interfaces de red que se acaban de conectar.
  5. Habilite redes aceleradas para las interfaces de red adicionales de las subredes inter y hsr. Para ello, siga estos pasos:

    1. Abra Azure Cloud Shell en Azure Portal.

    2. Ejecute los siguientes comandos para habilitar las redes aceleradas para las interfaces de red adicionales, conectadas a las subredes inter y hsr.

      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db1-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db2-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db3-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db1-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db2-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db3-inter --accelerated-networking true
      
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db1-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db2-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db3-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db1-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db2-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db3-hsr --accelerated-networking true
      
  6. Inicie las máquinas virtuales de base de datos HANA.

Configurar Azure Load Balancer

Durante la configuración de la máquina virtual, tiene una opción para crear o seleccionar salir del equilibrador de carga en la sección de redes. Siga estos pasos para configurar el equilibrador de carga estándar para la configuración de alta disponibilidad de la base de datos de HANA.

Nota:

  • Para el escalado horizontal de HANA, seleccione la NIC para la subred client al agregar las máquinas virtuales en el grupo de back-end.
  • El conjunto completo de comandos en la CLI de Azure y PowerShell agrega las máquinas virtuales con la NIC principal en el grupo de back-end.

Siga los pasos descritos en Creación de un equilibrador de carga para configurar un equilibrador de carga estándar para un sistema SAP de alta disponibilidad mediante Azure Portal. Durante la configuración del equilibrador de carga, tenga en cuenta los siguientes puntos:

  1. Configuración de IP de front-end: cree una dirección IP de front-end. Seleccione el mismo nombre de red virtual y subred que las máquinas virtuales de la base de datos.
  2. Grupo de back-end: cree un grupo de back-end y agregue máquinas virtuales de base de datos.
  3. Reglas de entrada: cree una regla de equilibrio de carga. Siga los mismos pasos para ambas reglas de equilibrio de carga.
    • Dirección IP de front-end: seleccione una dirección IP de front-end.
    • Grupo de back-end: seleccione un grupo de back-end.
    • Puertos de alta disponibilidad: seleccione esta opción.
    • Protocolo: seleccione TCP.
    • Sondeo de estado: cree un sondeo de estado con los detalles siguientes:
      • Protocolo: seleccione TCP.
      • Puerto: por ejemplo, 625<instance-no.>.
      • Intervalo: escriba 5.
      • Umbral de sondeo: escriba 2.
    • Tiempo de espera de inactividad (minutos): escriba 30.
    • Habilitar IP flotante: seleccione esta opción.

Nota:

No se respeta la propiedad de configuración del sondeo de estado numberOfProbes, lo que se conoce como Umbral incorrecto en el portal. Para controlar el número de sondeos consecutivos correctos o erróneos, establezca la propiedad probeThreshold en 2. Actualmente no es posible establecer esta propiedad mediante Azure Portal, por lo que debe usar la CLI de Azure o el comando de PowerShell.

Importante

La dirección IP flotante no se admite en una configuración de IP secundaria de NIC para los escenarios de equilibrio de carga. Para ver detalles, consulte Limitaciones de Azure Load Balancer. Si necesita una dirección IP adicional para la VM, implemente una segunda NIC.

Nota

Cuando las máquinas virtuales sin direcciones IP públicas se colocan en el grupo de back-end de Standard Load Balancer interno (sin dirección IP pública), no hay conectividad saliente de Internet, a menos que se realice una configuración adicional para permitir el enrutamiento a puntos de conexión públicos. Para obtener más información sobre cómo obtener conectividad saliente, vea Conectividad de punto de conexión público para máquinas virtuales con Azure Standard Load Balancer en escenarios de alta disponibilidad de SAP.

Importante

  • No habilite las marcas de tiempo TCP en VM de Azure que se encuentren detrás de Azure Load Balancer. Si habilita las marcas de tiempo TCP provocará un error en los sondeos de estado. Establezca el parámetro net.ipv4.tcp_timestamps en 0. Para más información, consulte Sondeos de estado de Load Balancer y la nota de SAP 2382421.
  • Para evitar que saptune cambie el valor net.ipv4.tcp_timestamps establecido manualmente de 0 a nuevamente 1, actualice la versión de saptune a la versión 3.1.1 o posterior. Para más información, consulte saptune 3.1.1: ¿Necesito actualizar?

Implementar NFS

Hay dos opciones para implementar el NFS nativo de Azure para /hana/shared. Puede implementar un volumen NFS en Azure NetApp Files o un recurso compartido NFS en Azure Files. Azure Files admite el protocolo NFSv4.1, NFS en Azure NetApp Files admite NFSv4.1 y NFSv3.

En las secciones siguientes se describen los pasos para implementar NFS: tendrá que seleccionar solo una de las opciones.

Sugerencia

Eligió implementar /hana/shared en recurso NFS en Azure Files o volumen NFS en Azure NetApp Files.

Implementación de la infraestructura de Azure NetApp Files

Implemente volúmenes de ANF para el sistema de archivos /hana/shared. Necesita un volumen /hana/shared independiente para cada sitio de replicación del sistema HANA. Para más información, consulte Configuración de la infraestructura de Azure NetApp Files.

En este ejemplo, se usan los siguientes volúmenes de Azure NetApp Files:

  • volumen HN1-shared-s1 (nfs://10.23.1.7/HN1-shared-s1)
  • volumen HN1-shared-s2 (nfs://10.23.1.7/HN1-shared-s2)

Implementación de NFS en infraestructura de Azure Files

Implemente recursos compartidos NFS de Azure Files para el sistema de archivos /hana/shared. Necesitará un recurso compartido NFS de Azure Files /hana/shared independiente para cada sitio de replicación del sistema HANA. Para más información, consulte Creación de un recurso compartido NFS.

En este ejemplo, se usaron los siguientes recursos compartidos NFS de Azure Files:

  • share hn1-shared-s1 (sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s1)
  • share hn1-shared-s2 (sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s2)

Configuración y preparación del sistema operativo

Las instrucciones de las secciones siguientes tienen como prefijo una de las siguientes abreviaturas:

  • [A]: aplicable a todos los nodos, incluido el creador de mayoría
  • [AH]: Aplicable a todos los nodos de base de datos HANA
  • [M]: aplicable solo al nodo creador de mayoría
  • [AH1]: Aplicable a todos los nodos de base de datos HANA en el sitio 1
  • [AH1]: Aplicable a todos los nodos de base de datos HANA en el sitio 2
  • [1]: Aplicable solo al nodo 1 de base de datos HANA, sitio 1
  • [2]: Aplicable solo al nodo 1 de base de datos HANA, sitio 2

Configure y prepare el sistema operativo. Para ello, siga estos pasos:

  1. [A] Mantenga los archivos de host en las máquinas virtuales. Incluya las entradas para todas las subredes. En este ejemplo se agregaron las siguientes entradas a /etc/hosts.

    # Client subnet
    10.23.0.19      hana-s1-db1
    10.23.0.20      hana-s1-db2
    10.23.0.21      hana-s1-db3
    10.23.0.22      hana-s2-db1
    10.23.0.23      hana-s2-db2
    10.23.0.24      hana-s2-db3
    10.23.0.25      hana-s-mm    
    
    # Internode subnet
    10.23.1.132     hana-s1-db1-inter
    10.23.1.133     hana-s1-db2-inter
    10.23.1.134     hana-s1-db3-inter
    10.23.1.135     hana-s2-db1-inter
    10.23.1.136     hana-s2-db2-inter
    10.23.1.137     hana-s2-db3-inter
    
    # HSR subnet
    10.23.1.196     hana-s1-db1-hsr
    10.23.1.197     hana-s1-db2-hsr
    10.23.1.198     hana-s1-db3-hsr
    10.23.1.199     hana-s2-db1-hsr
    10.23.1.200     hana-s2-db2-hsr
    10.23.1.201     hana-s2-db3-hsr
    
  2. [A] Cree el archivo de configuración /etc/sysctl.d/MS-AZ.conf con las opciones de configuración de Microsoft para Azure.

    vi /etc/sysctl.d/ms-az.conf
    
    # Add the following entries in the configuration file
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv4.tcp_max_syn_backlog = 16348
    net.ipv4.conf.all.rp_filter = 0
    sunrpc.tcp_slot_table_entries = 128
    vm.swappiness=10
    

    Sugerencia

    Evite establecer net.ipv4.ip_local_port_range y net.ipv4.ip_local_reserved_ports explícitamente en los archivos de configuración de sysctl para permitir que el agente de host de SAP administre los intervalos de puertos. Para más información, vea la nota 2382421.

  3. [A] SUSE ofrece agentes de recursos especiales para SAP HANA y, de forma predeterminada, los agentes para la escalabilidad vertical de SAP HANA están instalados. Desinstale los paquetes para el escalado vertical, si están instalados, e instale los paquetes para el escenario de escalabilidad horizontal de SAP HANA. El paso debe realizarse en todas las máquinas virtuales del clúster, incluido el creador de mayoría.

    Nota:

    Se debe instalar la versión 0.181 o posterior de SAPHanaSR-ScaleOut.

    # Uninstall scale-up packages and patterns
    sudo zypper remove patterns-sap-hana
    sudo zypper remove SAPHanaSR SAPHanaSR-doc yast2-sap-ha
    
    # Install the scale-out packages and patterns
    sudo zypper in SAPHanaSR-ScaleOut SAPHanaSR-ScaleOut-doc 
    sudo zypper in -t pattern ha_sles
    
  4. [AH] Preparación de las VM: aplique la configuración recomendada según la nota de SAP 2205917 para las aplicaciones de SAP de SUSE Linux Enterprise Server.

Preparación de los sistemas de archivos

Ha elegido implementar los directorios compartidos de SAP en un recurso compartido NFS en Azure Files o volumen NFS en Azure NetApp Files.

Montaje de los sistemas de archivos compartidos (NFS de Azure NetApp Files)

En este ejemplo, los sistemas de archivos de HANA compartidos se implementan en Azure NetApp Files y se montan en NFSv4.1. Siga los pasos de esta sección, solo si usa NFS en Azure NetApp Files.

  1. [AH] Prepare el sistema operativo para ejecutar SAP HANA en sistemas NetApp con NFS, tal como se describe en la nota de SAP 3024346 - Configuración de Linux Kernel para NetApp NFS. Cree el archivo de configuración /etc/sysctl.d/91-NetApp-HANA.conf para la configuración de NetApp.

    vi /etc/sysctl.d/91-NetApp-HANA.conf
    
    # Add the following entries in the configuration file
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_rmem = 4096 131072 16777216
    net.ipv4.tcp_wmem = 4096 16384 16777216
    net.core.netdev_max_backlog = 300000
    net.ipv4.tcp_slow_start_after_idle=0
    net.ipv4.tcp_no_metrics_save = 1
    net.ipv4.tcp_moderate_rcvbuf = 1
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_sack = 1
    
  2. [AH] Ajuste la configuración de sunrpc, como se recomienda en la nota de SAP 3024346 - Configuración de Linux Kernel para NetApp NFS.

    vi /etc/modprobe.d/sunrpc.conf
    
    # Insert the following line
    options sunrpc tcp_max_slot_table_entries=128
    
  3. [AH] Cree puntos de montaje para los volúmenes de bases de datos HANA.

    mkdir -p /hana/shared
    
  4. [AH] Compruebe la configuración del dominio NFS. Asegúrese de que el dominio esté configurado como dominio predeterminado de Azure NetApp Files, es decir, defaultv4iddomain.com, y que la asignación se haya establecido en nobody.
    Este paso solo es necesario si usa Azure NetAppFiles NFSv4.1.

    Importante

    Asegúrese de establecer el dominio NFS de /etc/idmapd.conf en la máquina virtual para que coincida con la configuración de dominio predeterminada en Azure NetApp Files: defaultv4iddomain.com . Si hay alguna discrepancia entre la configuración de dominio del cliente NFS (es decir, la máquina virtual) y el servidor NFS (es decir la configuración de Azure NetApp), los permisos de archivos en volúmenes de Azure NetApp que estén montados en las máquinas virtuales se mostrarán como nobody.

    sudo cat /etc/idmapd.conf
    # Example
    [General]
    Domain = defaultv4iddomain.com
    [Mapping]
    Nobody-User = nobody
    Nobody-Group = nobody
    
  5. [AH] Compruebe nfs4_disable_idmapping. Debe establecerse en S. Para crear la estructura de directorio en la que se encuentra nfs4_disable_idmapping, ejecute el comando mount. No podrá crear manualmente el directorio en /sys/modules, ya que el acceso está reservado para el kernel o los controladores.
    Este paso solo es necesario si usa Azure NetAppFiles NFSv4.1.

    # Check nfs4_disable_idmapping 
    cat /sys/module/nfs/parameters/nfs4_disable_idmapping
    # If you need to set nfs4_disable_idmapping to Y
    mkdir /mnt/tmp
    mount 10.23.1.7:/HN1-share-s1 /mnt/tmp
    umount  /mnt/tmp
    echo "Y" > /sys/module/nfs/parameters/nfs4_disable_idmapping
    # Make the configuration permanent
    echo "options nfs nfs4_disable_idmapping=Y" >> /etc/modprobe.d/nfs.conf
    
  6. [AH1] Monte los volúmenes de Azure NetApp Files compartidos en las máquinas virtuales de base de datos HANA del sitio 1.

    sudo vi /etc/fstab
    # Add the following entry
    10.23.1.7:/HN1-shared-s1 /hana/shared nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    # Mount all volumes
    sudo mount -a 
    
  7. [AH2] Monte los volúmenes de Azure NetApp Files compartidos en las máquinas virtuales de base de datos HANA del sitio 2.

    sudo vi /etc/fstab
    # Add the following entry
    10.23.1.7:/HN1-shared-s2 /hana/shared nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    # Mount the volume
    sudo mount -a 
    
  8. [AH] Compruebe que los sistemas de archivos /hana/shared/ correspondientes estén montados en todas las máquinas virtuales de base de datos HANA con la versión del protocolo NFS NFSv4.1.

    sudo nfsstat -m
    # Verify that flag vers is set to 4.1 
    # Example from SITE 1, hana-s1-db1
    /hana/shared from 10.23.1.7:/HN1-shared-s1
     Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.0.19,local_lock=none,addr=10.23.1.7
    # Example from SITE 2, hana-s2-db1
    /hana/shared from 10.23.1.7:/HN1-shared-s2
     Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.0.22,local_lock=none,addr=10.23.1.7
    

Montaje de los sistemas de archivos compartidos (NFS de Azure Files)

En este ejemplo, los sistemas de archivos de HANA compartidos se implementan en NFS de Azure Files. Siga los pasos de esta sección, solo si usa NFS en Azure Files.

  1. [AH] Cree puntos de montaje para los volúmenes de bases de datos HANA.

    mkdir -p /hana/shared
    
  2. [AH1] Monte los volúmenes de Azure NetApp Files compartidos en las máquinas virtuales de base de datos HANA del sitio 1.

    sudo vi /etc/fstab
    # Add the following entry
    sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s1 /hana/shared  nfs nfsvers=4.1,sec=sys  0  0
    # Mount all volumes
    sudo mount -a 
    
  3. [AH2] Monte los volúmenes de Azure NetApp Files compartidos en las máquinas virtuales de base de datos HANA del sitio 2.

    sudo vi /etc/fstab
    # Add the following entries
    sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s2 /hana/shared  nfs nfsvers=4.1,sec=sys  0  0
    # Mount the volume
    sudo mount -a 
    
  4. [AH] Compruebe que los sistemas de archivos /hana/shared/ correspondientes estén montados en todas las máquinas virtuales de base de datos HANA con la versión del protocolo NFS NFSv4.1.

    sudo nfsstat -m
    # Example from SITE 1, hana-s1-db1
    sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s1
     Flags: rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.0.19,local_lock=none,addr=10.23.0.35
    # Example from SITE 2, hana-s2-db1
    sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s2
     Flags: rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.0.22,local_lock=none,addr=10.23.0.35
    

Preparación de los sistemas de archivos locales de registro y datos

En la configuración presentada, los sistemas de archivos /hana/data y /hana/log están implementados en el disco administrado y conectados localmente a cada máquina virtual de base de datos HANA. Tendrá que ejecutar los pasos necesarios para crear los volúmenes locales de datos y de registro en cada máquina virtual de base de datos HANA.

Configure el diseño de disco con el Administrador de volúmenes lógicos (LVM) . En el ejemplo siguiente se supone que cada máquina virtual HANA tiene tres discos de datos conectados que se usan para crear dos volúmenes.

  1. [AH] Enumere todos los discos disponibles:

    ls /dev/disk/azure/scsi1/lun*
    

    Salida de ejemplo:

    /dev/disk/azure/scsi1/lun0  /dev/disk/azure/scsi1/lun1  /dev/disk/azure/scsi1/lun2 
    
  2. [AH] Cree volúmenes físicos para todos los discos que quiera usar:

    sudo pvcreate /dev/disk/azure/scsi1/lun0
    sudo pvcreate /dev/disk/azure/scsi1/lun1
    sudo pvcreate /dev/disk/azure/scsi1/lun2
    
  3. [AH] Cree un grupo de volúmenes para los archivos de datos. Use un grupo de volúmenes para los archivos de registro y otro para el directorio compartido de SAP HANA:\

    sudo vgcreate vg_hana_data_HN1 /dev/disk/azure/scsi1/lun0 /dev/disk/azure/scsi1/lun1
    sudo vgcreate vg_hana_log_HN1 /dev/disk/azure/scsi1/lun2
    
  4. [AH] Cree los volúmenes lógicos.

    Cuando se usa lvcreate sin el modificador -i, se crea un volumen lineal. Se recomienda crear un volumen seccionado para mejorar el rendimiento de E/S y, después, alinear los tamaños de sección con los valores documentados en Configuraciones de almacenamiento de máquinas virtuales de Azure en SAP HANA. El argumento -i debe ser el número de volúmenes físicos subyacentes y -I, el tamaño de la sección. En este documento, se usan dos volúmenes físicos para el volumen de datos, por lo que el modificador -i se establece en 2. El tamaño de sección para el volumen de datos es 256 KiB. Se usa un volumen físico para el volumen de registro, así que no se usa explícitamente ningún modificador -i o -I para los comandos del volumen de registro.

    Importante

    Use el modificador -i y establézcalo en el número del volumen físico subyacente cuando se usa más de un volumen físico para cada volumen de datos o de registro. Use el modificador -I para especificar el tamaño de las secciones al crear un volumen seccionado.
    Consulte Configuraciones de almacenamiento de máquinas virtuales de Azure en SAP HANA para conocer las configuraciones de almacenamiento recomendadas, incluidos los tamaños de sección y el número de discos.

    sudo lvcreate -i 2 -I 256 -l 100%FREE -n hana_data vg_hana_data_HN1
    sudo lvcreate -l 100%FREE -n hana_log vg_hana_log_HN1
    sudo mkfs.xfs /dev/vg_hana_data_HN1/hana_data
    sudo mkfs.xfs /dev/vg_hana_log_HN1/hana_log
    
  5. [AH] Cree los directorios de montaje y copie el UUID de todos los volúmenes lógicos:

    sudo mkdir -p /hana/data/HN1
    sudo mkdir -p /hana/log/HN1
    # Write down the ID of /dev/vg_hana_data_HN1/hana_data and /dev/vg_hana_log_HN1/hana_log
    sudo blkid
    
  6. [AH] Cree entradas fstab para los volúmenes lógicos y móntelos:

    sudo vi /etc/fstab
    

    Inserte la siguiente línea en el archivo /etc/fstab:

    /dev/disk/by-uuid/UUID of /dev/mapper/vg_hana_data_HN1-hana_data /hana/data/HN1 xfs  defaults,nofail  0  2
    /dev/disk/by-uuid/UUID of /dev/mapper/vg_hana_log_HN1-hana_log /hana/log/HN1 xfs  defaults,nofail  0  2
    

    Monte los nuevos volúmenes:

    sudo mount -a
    

Creación de un clúster de Pacemaker

Siga los pasos de Configuración de Pacemaker en SUSE Linux Enterprise Server en Azure para crear un clúster de Pacemaker básico para este servidor HANA. Incluya todas las máquinas virtuales, inclusive la que sirve para obtener la mayoría en el clúster.

Importante

No establezca quorum expected-votes en 2, ya que no es un clúster de dos nodos.
Asegúrese de que la propiedad de clúster concurrent-fencing esté habilitada, de modo que se deserialicen las barreras de nodo.

Instalación

En este ejemplo para implementar SAP HANA en la configuración de escalabilidad horizontal con HSR en máquinas virtuales de Azure, usamos HANA 2.0 SP5.

Preparación de la instalación de HANA

  1. [AH] Antes de realizar la instalación de HANA, establezca la contraseña raíz. Puede deshabilitar la contraseña raíz una vez completada la instalación. Ejecute como passwd del comando root.

  2. [1,2] Cambie los permisos para /hana/shared.

    chmod 775 /hana/shared
    
  3. [1] Compruebe que puede iniciar sesión a través de SSH en las máquinas virtuales de base de datos HANA en hana-s1-db2 y hana-s1-db3 del sitio, sin que se le pida una contraseña. Si ese no es el caso, intercambie las claves SSH tal como se describe en Habilitación del acceso SSH a través de la clave pública.

    ssh root@hana-s1-db2
    ssh root@hana-s1-db3
    
  4. [2] Compruebe que puede iniciar sesión a través de SSH en las máquinas virtuales de base de datos HANA en hana-s2-db2 y hana-s2-db3 del sitio, sin que se le pida una contraseña.
    Si ese no es el caso, intercambie las claves ssh.

    ssh root@hana-s2-db2
    ssh root@hana-s2-db3
    
  5. [AH] Instale paquetes adicionales, necesarios para HANA 2.0 SP4 y versiones posteriores. Para obtener más información, consulte las notas de SAP 2593824 para la versión de SLES.

    # In this example, using SLES12 SP5
    sudo zypper install libgcc_s1 libstdc++6 libatomic1
    

Instalación de HANA en el primer nodo de cada sitio

  1. [1] Instale SAP HANA. Para ello, siga las instrucciones de la guía de instalación y actualización de SAP HANA 2.0. En las instrucciones que se indican a continuación, se muestra la instalación de SAP HANA en el primer nodo del sitio 1.

    a. Inicie el programa hdblcm como root desde el directorio de software de instalación de HANA. Use el parámetro internal_network y pase el espacio de direcciones a la subred que se usa para la comunicación interna entre nodos de HANA.

    ./hdblcm --internal_network=10.23.1.128/26
    

    b. Escriba los siguientes valores en el símbolo del sistema:

    • En Elegir una acción: escriba 1 (para la instalación)
    • En Additional components for installation (Componentes adicionales para la instalación): especifique 2, 3
    • Para la ruta de instalación: presione Entrar (el valor predeterminado es/Hana/Shared).
    • En Local Host Name (Nombre de host local): presione Entrar para aceptar el valor predeterminado.
    • En Do you want to add hosts to the system? (¿Desea agregar hosts al sistema): escriba y.
    • En SAP HANA ID (Id. de SAP HANA) del sistema: escriba HN1.
    • En Instance number (Número de instancia) [00]: escriba 03.
    • En Local Host Worker Group (Grupo de trabajo de host local) [valor predeterminado]: presione Entrar para aceptar el valor predeterminado.
    • En Select System Usage / Enter index [4] (Seleccionar uso del sistema o especificar el índice [4]): escriba 4 (para personalizar).
    • En Location of Data Volumes (Ubicación de los volúmenes de datos) [/hana/data/HN1]: presione Entrar para aceptar el valor predeterminado.
    • En Location of Log Volumes (Ubicación de los volúmenes de registro) [/hana/log/HN1]: presione Entrar para aceptar el valor predeterminado.
    • En Restrict maximum memory allocation? [n]: escriba n
    • En Certificate Host Name For Host hana-s1-db1 (Nombre de host del certificado para el host hana-s1-db1) [hana-s1-db1]: presione Entrar para aceptar el valor predeterminado.
    • En SAP Host Agent User (sapadm) Password [Contraseña del usuario del agente de host de SAP (sapadm)]: escriba la contraseña.
    • En Confirm SAP Host Agent User (sapadm) Password [Confirmar contraseña de usuario del agente de host de SAP (sapadm)]: escriba la contraseña.
    • En System Administrator (hn1adm) Password (Contraseña del administrador del sistema (hn1adm)): escriba la contraseña.
    • En System Administrator Home Directory (Directorio principal de administrador del sistema) [/usr/sap/HN1/home]: presione Entrar para aceptar el valor predeterminado.
    • En System Administrator Login Shell (Shell de inicio de sesión de administrador del sistema) [/bin/sh]: presione Entrar para aceptar el valor predeterminado.
    • En System Administrator User ID (Id. de usuario de administrador del sistema) [1001]: presione Entrar para aceptar el valor predeterminado.
    • En Enter ID of User Group (sapsys) [Escriba el id. del grupo de usuarios (sapsys)] [79]: presione Entrar para aceptar el valor predeterminado.
    • En System Database User (system) Password (Contraseña de usuario de base de datos del sistema (sistema)): escriba la contraseña del sistema.
    • En Confirm System Database User (system) Password (Confirmar la contraseña del usuario (sistema) de la base de datos del sistema): escriba la contraseña del sistema.
    • En ¿Reiniciar el sistema tras el reinicio de la máquina? [n]: escriba n
    • En Do you want to continue (y/n) (¿Desea continuar (sí/no)?): valide el resumen y, si todo es correcto, especifique s.
  2. [2] Repita el paso anterior para instalar SAP HANA en el primer nodo del sitio 2.

  3. [1,2] Compruebe global.ini.

    Muestre global.ini y asegúrese de que la configuración de la comunicación interna entre nodos de SAP HANA esté presente. Compruebe la sección de communication. Debe tener el espacio de direcciones para la subred inter, y listeninterface debe estar establecido en .internal. Compruebe la sección internal_hostname_resolution. Debe tener las direcciones IP de las máquinas virtuales de HANA que pertenezcan a la subred inter.

      sudo cat /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini
      # Example from SITE1 
      [communication]
      internal_network = 10.23.1.128/26
      listeninterface = .internal
      [internal_hostname_resolution]
      10.23.1.132 = hana-s1-db1
      10.23.1.133 = hana-s1-db2
      10.23.1.134 = hana-s1-db3
    
  4. [1,2] Prepare global.ini para la instalación en un entorno no compartido, como se describe en la nota de SAP 2080991.

     sudo vi /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini
     [persistence]
     basepath_shared = no
    
  5. [1,2] Reinicie SAP HANA para activar los cambios.

     sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StopSystem
     sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StartSystem
    
  6. [1,2] Compruebe que la interfaz de cliente utilizará las direcciones IP de la subred client para la comunicación.

    # Execute as hn1adm
    /usr/sap/HN1/HDB03/exe/hdbsql -u SYSTEM -p "password" -i 03 -d SYSTEMDB 'select * from SYS.M_HOST_INFORMATION'|grep net_publicname
    # Expected result - example from SITE 2
    "hana-s2-db1","net_publicname","10.23.0.22"
    

    Para más información sobre cómo comprobar la configuración, consulte la nota de SAP 2183363 - Configuration of SAP HANA internal network (Configuración de la red interna de SAP HANA).

  7. [AH] Cambie los permisos en los directorios de datos y de registro para evitar errores de instalación de HANA.

     sudo chmod o+w -R /hana/data /hana/log
    
  8. [1] Instale los nodos secundarios de HANA. Las instrucciones de ejemplo de este paso son para el sitio 1.

    a. Inicie el programa residente hdblcm como root.

     cd /hana/shared/HN1/hdblcm
     ./hdblcm 
    

    b. Escriba los siguientes valores en el símbolo del sistema:

    • En Elegir una acción: escriba 2 (para agregar hosts).
    • En Enter comma-separated host names to add (Escriba los nombres de host separados por comas que se deben agregar): hana-s1-db2, hana-s1-db3.
    • En Additional components for installation (Componentes adicionales para la instalación): especifique 2, 3
    • En Enter Root User Name [root] (Escriba el nombre de usuario raíz [raíz]): presione Entrar para aceptar el valor predeterminado.
    • En Select roles for host 'hana-s1-db2' [1] (Seleccione los roles para el host "hana-s1-db2" [1]): 1 (para trabajo)
    • En Enter Host Failover Group for host 'hana-s1-db2' [default] (Escriba el grupo de conmutación por error de host para el host "hana-s1-db2" [predeterminado]): presione Entrar para aceptar el valor predeterminado.
    • En Enter Storage Partition Number for host 'hana-s1-db2' [<<asignar automáticamente>>], presione Introducir para aceptar el valor predeterminado.
    • En Enter Worker Group for host 'hana-s1-db2' [default] (Escriba el grupo de trabajo para el host "hana-s1-db2" [predeterminado]): presione Entrar para aceptar el valor predeterminado.
    • En Select roles for host 'hana-s1-db3' [1] (Seleccione los roles para el host "hana-s1-db3" [1]): 1 (para trabajo)
    • En Enter Host Failover Group for host 'hana-s1-db3' [default] (Escriba el grupo de conmutación por error de host para el host "hana-s1-db3" [predeterminado]): presione Entrar para aceptar el valor predeterminado.
    • En Enter Storage Partition Number for host 'hana-s1-db3' [<<asignar automáticamente>>], presione Introducir para aceptar el valor predeterminado.
    • En Enter Worker Group for host 'hana-s1-db3' [default] (Escriba el grupo de trabajo para el host "hana-s1-db3" [predeterminado]): presione Entrar para aceptar el valor predeterminado.
    • En System Administrator (hn1adm) Password (Contraseña del administrador del sistema (hn1adm)): escriba la contraseña.
    • En Enter SAP Host Agent User (sapadm) Password [Escriba la contraseña del usuario del agente de host de SAP (sapadm)]: escriba la contraseña.
    • En Confirm SAP Host Agent User (sapadm) Password [Confirmar contraseña de usuario del agente de host de SAP (sapadm)]: escriba la contraseña.
    • En Certificate Host Name For Host hana-s1-db2 (Nombre de host del certificado para el host hana-s1-db2) [hana-s1-db2]: presione Entrar para aceptar el valor predeterminado.
    • En Certificate Host Name For Host hana-s1-db3 (Nombre de host del certificado para el host hana-s1-db3) [hana-s1-db3]: presione Entrar para aceptar el valor predeterminado.
    • En Do you want to continue (y/n) (¿Desea continuar (sí/no)?): valide el resumen y, si todo es correcto, especifique s.
  9. [2] Repita el paso anterior para instalar los nodos de SAP HANA secundarios en el sitio 2.

Configuración de la Replicación del sistema de SAP HANA 2.0

  1. [1] Configure la replicación del sistema en el sitio 1:

    Haga una copia de seguridad de las bases de datos como hn1adm:

    hdbsql -d SYSTEMDB -u SYSTEM -p "passwd" -i 03 "BACKUP DATA USING FILE ('initialbackupSYS')"
    hdbsql -d HN1 -u SYSTEM -p "passwd" -i 03 "BACKUP DATA USING FILE ('initialbackupHN1')"
    

    Copie los archivos PKI de sistema en el sitio secundario:

    scp /usr/sap/HN1/SYS/global/security/rsecssfs/data/SSFS_HN1.DAT hana-s2-db1:/usr/sap/HN1/SYS/global/security/rsecssfs/data/
    scp /usr/sap/HN1/SYS/global/security/rsecssfs/key/SSFS_HN1.KEY  hana-s2-db1:/usr/sap/HN1/SYS/global/security/rsecssfs/key/
    

    Cree el sitio principal:

    hdbnsutil -sr_enable --name=HANA_S1
    
  2. [2] Configure la replicación del sistema en el sitio 2:

    Registre el segundo sitio para iniciar la replicación del sistema. Ejecute el siguiente comando como <hanasid>adm:

    sapcontrol -nr 03 -function StopWait 600 10
    hdbnsutil -sr_register --remoteHost=hana-s1-db1 --remoteInstance=03 --replicationMode=sync --name=HANA_S2
    sapcontrol -nr 03 -function StartSystem
    
  3. [1] Comprobación del estado de replicación

    Compruebe el estado de replicación y espere hasta que todas las bases de datos estén sincronizadas.

    sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
    
    # | Database | Host          | Port  | Service Name | Volume ID | Site ID | Site Name | Secondary     | Secondary | Secondary | Secondary | Secondary     | Replication | Replication | Replication    |
    # |          |               |       |              |           |         |           | Host          | Port      | Site ID   | Site Name | Active Status | Mode        | Status      | Status Details |
    # | -------- | ------------- | ----- | ------------ | --------- | ------- | --------- | ------------- | --------- | --------- | --------- | ------------- | ----------- | ----------- | -------------- |
    # | HN1      | hana-s1-db3   | 30303 | indexserver  |         5 |       1 | HANA_S1   | hana-s2-db3   |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    # | SYSTEMDB | hana-s1-db1   | 30301 | nameserver   |         1 |       1 | HANA_S1   | hana-s2-db1   |     30301 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    # | HN1      | hana-s1-db1   | 30307 | xsengine     |         2 |       1 | HANA_S1   | hana-s2-db1   |     30307 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    # | HN1      | hana-s1-db1   | 30303 | indexserver  |         3 |       1 | HANA_S1   | hana-s2-db1   |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    # | HN1      | hana-s1-db2   | 30303 | indexserver  |         4 |       1 | HANA_S1   | hana-s2-db2   |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #
    # status system replication site "2": ACTIVE
    # overall system replication status: ACTIVE
    #
    # Local System Replication State
    #
    # mode: PRIMARY
    # site id: 1
    # site name: HANA_S1
    
  4. [1,2] Cambie la configuración de HANA para que la comunicación para la replicación del sistema HANA se direccione a través de las interfaces de red virtual de replicación del sistema HANA.

    • Detenga HANA en ambos sitios

      sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StopSystem HDB
      
    • Edite global. ini para agregar la asignación de host para la replicación del sistema HANA: use las direcciones IP de la subred hsr.

      sudo vi /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini
      #Add the section
      [system_replication_hostname_resolution]
      10.23.1.196 = hana-s1-db1
      10.23.1.197 = hana-s1-db2
      10.23.1.198 = hana-s1-db3
      10.23.1.199 = hana-s2-db1
      10.23.1.200 = hana-s2-db2
      10.23.1.201 = hana-s2-db3
      
    • Inicie HANA en ambos sitios

      sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StartSystem HDB
      

    Para más información, vea Resolución del nombre de host para la replicación del sistema.

Creación de recursos del sistema de archivos

Cree un recurso de clúster de un sistema de archivos ficticio, que supervisará y notificará los errores, en caso de que haya un problema al acceder al sistema de archivos /hana/shared montado en NFS. Esto permite que el clúster desencadene la conmutación por error, en caso de que se produzca un problema al acceder a /hana/shared. Para más información, vea Control de recursos compartidos de NFS con errores en el clúster de alta disponibilidad de SUSE para la replicación del sistema HANA.

  1. [1] Coloque Pacemaker en modo de mantenimiento, como preparación para la creación de los recursos de clúster de HANA.

    crm configure property maintenance-mode=true
    
  2. [1,2] Cree el directorio en el sistema de archivos montado en NFS /hana/compartido, que se usará en el recurso de supervisión del sistema de archivos especial. Los directorios deben crearse en ambos sitios.

    mkdir -p /hana/shared/HN1/check
    
  3. [AH] Cree el directorio que se usará para montar el recurso de supervisión del sistema de archivos especial. El directorio debe crearse en todos los nodos del clúster de HANA.

    mkdir -p /hana/check
    
  4. [1] Cree los recursos de clúster del sistema de archivos.

    crm configure primitive fs_HN1_HDB03_fscheck Filesystem \
      params device="/hana/shared/HN1/check" \
      directory="/hana/check" fstype=nfs4 \
      options="bind,defaults,rw,hard,proto=tcp,noatime,nfsvers=4.1,lock" \
      op monitor interval=120 timeout=120 on-fail=fence \
      op_params OCF_CHECK_LEVEL=20 \
      op start interval=0 timeout=120 op stop interval=0 timeout=120
    
    crm configure clone cln_fs_HN1_HDB03_fscheck fs_HN1_HDB03_fscheck \
      meta clone-node-max=1 interleave=true
    
    crm configure location loc_cln_fs_HN1_HDB03_fscheck_not_on_mm \
      cln_fs_HN1_HDB03_fscheck -inf: hana-s-mm    
    

    El atributo OCF_CHECK_LEVEL=20 se agrega a la operación de supervisión, de modo que las operaciones de supervisión realicen una prueba de lectura/escritura en el sistema de archivos. Sin este atributo, la operación de supervisión solo comprueba que el sistema de archivos esté montado. Esto puede ser un problema porque, cuando se pierde la conectividad, el sistema de archivos puede permanecer montado, a pesar de que no se pueda acceder.

    El atributo on-fail=fence también se agrega a la operación de supervisión. Con esta opción, si se produce un error en la operación de supervisión en un nodo, ese nodo se delimita inmediatamente.

Implementación de los enlaces de alta disponibilidad de HANA SAPHanaSrMultiTarget y susChkSrv

Este paso importante sirve para optimizar la integración con el clúster y la detección cuando es posible realizar una conmutación por error del clúster. Se recomienda encarecidamente configurar el enlace de Python SAPHanaSrMultiTarget. Para HANA 2.0 SP5 y versiones posteriores, se recomienda implementar los enlaces SAPHanaSrMultiTarget y susChkSrv.

Nota:

El proveedor de alta disponibilidad SAPHanaSrMultiTarget reemplaza SAPHanaSR para el escalado horizontal de HANA. SAPHanaSR se describió en la versión anterior de este documento.
Consulte la entrada de blog de SUSE sobre los cambios con el nuevo enlace de alta disponibilidad de HANA.

Los pasos proporcionados para el enlace SAPHanaSrMultiTarget son para una nueva instalación. La actualización de un entorno existente desde SAPHanaSR al proveedor SAPHanaSrMultiTarget requiere varios cambios y no se describen en este documento. Si el entorno existente no usa ningún tercer sitio para la recuperación ante desastres y no se usa la replicación del sistema de varios destinos de HANA, el proveedor de alta disponibilidad SAPHanaSR puede permanecer en uso.

SusChkSrv amplía la funcionalidad del proveedor de alta disponibilidad SAPHanaSrMultiTarget principal. Actúa en la situación en la que se bloquea el proceso de HANA hdbindexserver. Si un único proceso se bloquea, normalmente HANA intenta reiniciarlo. El reinicio del proceso de indexserver puede tardar mucho tiempo, durante el cual la base de datos de HANA no responde. Con susChkSrv implementado, se ejecuta una acción inmediata y configurable en lugar de esperar a que el proceso de hdbindexserver se reinicie en el mismo nodo. En el escalado horizontal de HANA, susChkSrv actúa para cada máquina virtual de HANA de forma independiente. La acción configurada eliminará HANA o cercará la máquina virtual afectada, lo que desencadenará una conmutación por error en el período de tiempo de espera configurado.

Se requiere SUSE SLES 15 SP1 o superior para el funcionamiento de ambos enlaces de alta disponibilidad de HANA. En la tabla siguiente se muestran otras dependencias.

Enlace de alta disponibilidad de SAP HANA Versión de HANA necesaria SAPHanaSR-ScaleOut necesario
SAPHanaSrMultiTarget HANA 2.0 SPS4 o superior 0.180 o superior
susChkSrv HANA 2.0 SPS5 o superior 0.184.1 o superior

Pasos para implementar ambos enlaces:

  1. [1,2] Detenga HANA en ambos sitios de replicación del sistema. Ejecute como <sid>adm:

    sapcontrol -nr 03 -function StopSystem
    
  2. [1,2] Ajuste global.ini en cada uno de los sitios del clúster. Si no se cumplen los requisitos previos para el enlace susChkSrv, no se debe configurar todo el bloque [ha_dr_provider_suschksrv].
    Puede ajustar el comportamiento de susChkSrv con el parámetro action_on_lost. Los valores válidos son [ ignore | stop | kill | fence ].

    # add to global.ini on both sites. Do not copy global.ini between sites.
    [ha_dr_provider_saphanasrmultitarget]
    provider = SAPHanaSrMultiTarget
    path = /usr/share/SAPHanaSR-ScaleOut
    execution_order = 1
    
    [ha_dr_provider_suschksrv]
    provider = susChkSrv
    path = /usr/share/SAPHanaSR-ScaleOut
    execution_order = 3
    action_on_lost = kill
    
    [trace]
    ha_dr_saphanasrmultitarget = info
    

    La ubicación predeterminada de los enlaces de alta disponibilidad tal y como la entrega SUSE es /usr/share/SAPHanaSR-ScaleOut. El uso de la ubicación estándar aporta una ventaja, que el código de enlace de Python se actualiza automáticamente mediante las actualizaciones del sistema operativo o del paquete y que HANA lo usa en el siguiente reinicio. Con una ruta de acceso opcional propia, como /hana/shared/myHooks, puede desacoplar las actualizaciones del sistema operativo de la versión de enlace usada.

  3. [AH] El clúster requiere la configuración de sudoers en los nodos de clúster para <sid>adm. En este ejemplo, esto se consigue mediante la creación de un archivo nuevo. Ejecute el comando como root y adapte los valores de hn1 con el SID correcto en minúscula.

    cat << EOF > /etc/sudoers.d/20-saphana
    # SAPHanaSR-ScaleOut needs for HA/DR hook scripts
    so1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_hn1_site_srHook_*
    so1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_hn1_gsh *
    so1adm ALL=(ALL) NOPASSWD: /usr/sbin/SAPHanaSR-hookHelper --sid=hn1 *
    EOF
    
  4. [1,2] Inicie SAP HANA en ambos sitios de replicación. Ejecute como <sid>adm.

    sapcontrol -nr 03 -function StartSystem 
    
  5. [A] Compruebe que la instalación del enlace está activa en todos los nodos del clúster. Ejecute como <sid>adm.

    cdtrace
    grep HADR.*load.*SAPHanaSrMultiTarget nameserver_*.trc | tail -3
    # Example output
    # nameserver_hana-s1-db1.31001.000.trc:[14162]{-1}[-1/-1] 2023-01-26 12:53:55.728027 i ha_dr_provider   HADRProviderManager.cpp(00083) : loading HA/DR Provider 'SAPHanaSrMultiTarget' from /usr/share/SAPHanaSR-ScaleOut/
    grep SAPHanaSr.*init nameserver_*.trc | tail -3
    # Example output
    # nameserver_hana-s1-db1.31001.000.trc:[17636]{-1}[-1/-1] 2023-01-26 16:30:19.256705 i ha_dr_SAPHanaSrM SAPHanaSrMultiTarget.py(00080) : SAPHanaSrMultiTarget.init() CALLING CRM: <sudo /usr/sbin/crm_attribute -n hana_hn1_gsh -v 2.2  -l reboot> rc=0
    # nameserver_hana-s1-db1.31001.000.trc:[17636]{-1}[-1/-1] 2023-01-26 16:30:19.256739 i ha_dr_SAPHanaSrM SAPHanaSrMultiTarget.py(00081) : SAPHanaSrMultiTarget.init() Running srHookGeneration 2.2, see attribute hana_hn1_gsh too
    

    Compruebe la instalación del enlace susChkSrv. Ejecute como <sid>adm.

    cdtrace
    egrep '(LOST:|STOP:|START:|DOWN:|init|load|fail)' nameserver_suschksrv.trc
    # Example output
    # 2023-01-19 08:23:10.581529  [1674116590-10005] susChkSrv.init() version 0.7.7, parameter info: action_on_lost=fence stop_timeout=20 kill_signal=9
    # 2023-01-19 08:23:31.553566  [1674116611-14022] START: indexserver event looks like graceful tenant start
    # 2023-01-19 08:23:52.834813  [1674116632-15235] START: indexserver event looks like graceful tenant start (indexserver started)
    

Creación de recursos de clúster de SAP HANA

  1. [1] Cree recursos de clúster de HANA. Ejecute los siguientes comandos como root.

    1. Asegúrese de que el clúster ya esté en modo de mantenimiento.

    2. A continuación, cree el recurso de topología de HANA.

      sudo crm configure primitive rsc_SAPHanaTopology_HN1_HDB03 ocf:suse:SAPHanaTopology \
        op monitor interval="10" timeout="600" \
        op start interval="0" timeout="600" \
        op stop interval="0" timeout="300" \
        params SID="HN1" InstanceNumber="03"
      
      sudo crm configure clone cln_SAPHanaTopology_HN1_HDB03 rsc_SAPHanaTopology_HN1_HDB03 \
       meta clone-node-max="1" target-role="Started" interleave="true"
      
    3. A continuación, cree el recurso de instancia de HANA.

      Nota:

      Este artículo contiene referencias a términos que Microsoft ya no utiliza. Cuando se eliminen estos términos del software, se eliminarán de este artículo.

      sudo crm configure primitive rsc_SAPHana_HN1_HDB03 ocf:suse:SAPHanaController \
        op start interval="0" timeout="3600" \
        op stop interval="0" timeout="3600" \
        op promote interval="0" timeout="3600" \
        op monitor interval="60" role="Master" timeout="700" \
        op monitor interval="61" role="Slave" timeout="700" \
        params SID="HN1" InstanceNumber="03" PREFER_SITE_TAKEOVER="true" \
        DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="false"
      
      sudo crm configure ms msl_SAPHana_HN1_HDB03 rsc_SAPHana_HN1_HDB03 \
        meta clone-node-max="1" master-max="1" interleave="true"
      

      Importante

      Se recomienda como procedimiento recomendado que solo establezca AUTOMATED_REGISTER en no mientras realice pruebas de conmutación por error exhaustivas, para evitar que la instancia principal con errores se registre automáticamente como secundaria. Una vez que las pruebas de conmutación por error se hayan completado correctamente, establezca AUTOMATED_REGISTER en yes, de modo que, después de la toma de control, la replicación del sistema se pueda reanudar automáticamente.

    4. Cree una dirección IP virtual y los recursos asociados.

      sudo crm configure primitive rsc_ip_HN1_HDB03 ocf:heartbeat:IPaddr2 \
        op monitor interval="10s" timeout="20s" \
        params ip="10.23.0.27"
      
      sudo crm configure primitive rsc_nc_HN1_HDB03 azure-lb port=62503 \
        op monitor timeout=20s interval=10 \
        meta resource-stickiness=0
      
      sudo crm configure group g_ip_HN1_HDB03 rsc_ip_HN1_HDB03 rsc_nc_HN1_HDB03
      
    5. Cree las restricciones de clúster.

      # Colocate the IP with HANA master
      sudo crm configure colocation col_saphana_ip_HN1_HDB03 4000: g_ip_HN1_HDB03:Started \
        msl_SAPHana_HN1_HDB03:Master  
      
      # Start HANA Topology before HANA  instance
      sudo crm configure order ord_SAPHana_HN1_HDB03 Optional: cln_SAPHanaTopology_HN1_HDB03 \
        msl_SAPHana_HN1_HDB03
      
      # HANA resources don't run on the majority maker node
      sudo crm configure location loc_SAPHanaCon_not_on_majority_maker msl_SAPHana_HN1_HDB03 -inf: hana-s-mm
      sudo crm configure location loc_SAPHanaTop_not_on_majority_maker cln_SAPHanaTopology_HN1_HDB03 -inf: hana-s-mm
      
  2. [1] Configure las propiedades de clúster adicionales.

    sudo crm configure rsc_defaults resource-stickiness=1000
    sudo crm configure rsc_defaults migration-threshold=50
    
  3. [1] Coloque el clúster fuera del modo de mantenimiento. Asegúrese de que el estado del clúster sea el correcto y de que se iniciaron todos los recursos.

    # Cleanup any failed resources - the following command is example 
    crm resource cleanup rsc_SAPHana_HN1_HDB03
    
    # Place the cluster out of maintenance mode
    sudo crm configure property maintenance-mode=false
    
  4. [1] Compruebe la comunicación entre el enlace de alta disponibilidad de HANA y el clúster, mostrando la SOK de estado para el SID y ambos sitios de replicación con el estado P(rimary) o S(econdary).

    sudo /usr/sbin/SAPHanaSR-showAttr
    # Expected result
    # Global cib-time                 maintenance prim  sec sync_state upd
    # ---------------------------------------------------------------------
    # HN1    Fri Jan 27 10:38:46 2023 false       HANA_S1 -   SOK        ok
    # 
    # Sites     lpt        lss mns        srHook srr
    # -----------------------------------------------
    # HANA_S1     1674815869 4   hana-s1-db1 PRIM   P
    # HANA_S2     30         4   hana-s2-db1 SWAIT  S
    

    Nota

    Los tiempos de espera de la configuración anterior son solo ejemplos y puede ser necesario adaptarlos a la configuración específica de HANA. Por ejemplo, puede que necesite aumentar el tiempo de espera de inicio si la base de datos de SAP HANA tarda más en iniciarse.

Prueba de la conmutación por error de SAP HANA

Nota:

Este artículo contiene referencias a términos que Microsoft ya no utiliza. Cuando se eliminen estos términos del software, se eliminarán también de este artículo.

  1. Antes de iniciar una prueba, compruebe el estado del clúster y de la replicación del sistema SAP HANA.

    a. Compruebe que no haya acciones de clúster con errores.

    #Verify that there are no failed cluster actions
    crm status
    # Example 
    #7 nodes configured
    #24 resource instances configured
    #
    #Online: [ hana-s-mm hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #
    #Full list of resources:
    #
    # stonith-sbd    (stonith:external/sbd): Started hana-s-mm
    # Clone Set: cln_fs_HN1_HDB03_fscheck [fs_HN1_HDB03_fscheck]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #     Stopped: [ hana-s-mm ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #     Stopped: [ hana-s-mm ]
    # Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
    #     Masters: [ hana-s1-db1 ]
    #     Slaves: [ hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #     Stopped: [ hana-s-mm ]
    # Resource Group: g_ip_HN1_HDB03
    #     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hana-s1-db1
    #     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hana-s1-db1
    

    b. Compruebe que la replicación del sistema SAP HANA esté sincronizada.

    # Verify HANA HSR is in sync
    sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
    #| Database | Host         | Port  | Service Name | Volume ID | Site ID | Site Name | Secondary    | Secondary | Secondary | Secondary | Secondary     | Replication | Replication | Replication    |
    #|          |              |       |              |           |         |           | Host         | Port      | Site ID   | Site Name | Active Status | Mode        | Status      | Status Details |
    #| -------- | ------------ | ----- | ------------ | --------- | ------- | --------- | ------------ | --------- | --------- | --------- | ------------- | ----------- | ----------- | -------------- |
    #| SYSTEMDB | hana-s1-db1  | 30301 | nameserver   |         1 |       1 | HANA_S1   | hana-s2-db1  |     30301 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #| HN1      | hana-s1-db1  | 30307 | xsengine     |         2 |       1 | HANA_S1   | hana-s2-db1  |     30307 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #| HN1      | hana-s1-db1  | 30303 | indexserver  |         3 |       1 | HANA_S1   | hana-s2-db1  |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #| HN1      | hana-s1-db3  | 30303 | indexserver  |         4 |       1 | HANA_S1   | hana-s2-db3  |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #| HN1      | hana-s1-db2  | 30303 | indexserver  |         5 |       1 | HANA_S1   | hana-s2-db2  |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #
    #status system replication site "1": ACTIVE
    #overall system replication status: ACTIVE
    #
    #Local System Replication State
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #
    #mode: PRIMARY
    #site id: 1
    #site name: HANA_S1
    
  2. Le recomendamos validar exhaustivamente la configuración del clúster de SAP HANA; para ello, realice pruebas documentadas en alta disponibilidad para SAP HANA en las VM de Azure en SLES y en el escenario de rendimiento optimizado para la escalabilidad horizontal de replicación de SLES.

  3. Compruebe la configuración del clúster para un escenario de error, cuando un nodo pierde el acceso al recurso compartido de NFS (/hana/shared).

    Los agentes de recursos de SAP HANA dependen de los archivos binarios, almacenados en /hana/shared para realizar operaciones durante la conmutación por error. El sistema de archivos /hana/shared se monta en NFS en la configuración presentada. Una prueba que puede realizar, es crear una regla de firewall temporal para bloquear el acceso al sistema de archivos montado en NFS /hana/shared en una de las VM del sitio principal. Este enfoque valida que el clúster va a poder realizar la conmutación por error, si se pierde el acceso a /hana/shared en el sitio de replicación del sistema activo.

    Resultado esperado: al bloquear el acceso al sistema de archivos /hana/shared montado en NFS en una de las VM del sitio principal, se producirá un error en la operación de supervisión que realiza la operación de lectura y escritura en el sistema de archivos, ya que no puede acceder al sistema de archivos y desencadenará la conmutación por error de recursos de HANA. Se espera el mismo resultado cuando el nodo de HANA pierde el acceso al recurso compartido de NFS.

    Puede comprobar el estado de los recursos del clúster ejecutando crm_mon o crm status. Estado del recurso antes de iniciar la prueba:

    # Output of crm_mon
    #7 nodes configured
    #24 resource instances configured
    #
    #Online: [ hana-s-mm hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #
    #Active resources:
    #
    #stonith-sbd     (stonith:external/sbd): Started hana-s-mm
    # Clone Set: cln_fs_HN1_HDB03_fscheck [fs_HN1_HDB03_fscheck]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
    #     Masters: [ hana-s1-db1 ]
    #     Slaves: [ hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Resource Group: g_ip_HN1_HDB03
    #     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hana-s2-db1
    #     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hana-s2-db1     
    

    Para simular un error para /hana/shared:

    • Si usa NFS en ANF, confirme primero la dirección IP del volumen ANF /hana/shared en el sitio primario. Para hacerlo, ejecute df -kh|grep /hana/shared.
    • Si usa NFS en Azure Files, determine primero la dirección IP del punto de conexión privado de la cuenta de almacenamiento.

    A continuación, configure una regla de firewall temporal para bloquear el acceso a la dirección IP del sistema de archivos NFS /hana/shared mediante la ejecución del siguiente comando en una de las VM del sitio de replicación del sistema principal de HANA.

    En este ejemplo, el comando se ejecutó en hana-s1-db1 para el volumen /hana/shared de ANF.

    iptables -A INPUT -s 10.23.1.7 -j DROP; iptables -A OUTPUT -d 10.23.1.7 -j DROP
    

    Los recursos del clúster se migran a otro sitio de replicación del sistema HANA.

    Si establece AUTOMATED_REGISTER = "false", tendrá que configurar la replicación del sistema SAP HANA en el sitio secundario. En este caso, puede ejecutar estos comandos para volver a configurar SAP HANA como secundario.

    # Execute on the secondary 
    su - hn1adm
    # Make sure HANA is not running on the secondary site. If it is started, stop HANA
    sapcontrol -nr 03 -function StopWait 600 10
    # Register the HANA secondary site
    hdbnsutil -sr_register --name=HANA_S1 --remoteHost=hana-s2-db1 --remoteInstance=03 --replicationMode=sync
    # Switch back to root and cleanup failed resources
    crm resource cleanup SAPHana_HN1_HDB03
    

    El estado de los recursos, después de la prueba:

    # Output of crm_mon
    #7 nodes configured
    #24 resource instances configured
    #
    #Online: [ hana-s-mm hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #
    #Active resources:
    #
    #stonith-sbd     (stonith:external/sbd): Started hana-s-mm
    # Clone Set: cln_fs_HN1_HDB03_fscheck [fs_HN1_HDB03_fscheck]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
    #     Masters: [ hana-s2-db1 ]
    #     Slaves: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db2 hana-s2-db3 ]
    # Resource Group: g_ip_HN1_HDB03
    #     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hana-s2-db1
    #     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hana-s2-db1
    

Pasos siguientes