IBM Cloud Docs
Configuración de la replicación de sistemas de escalado optimizado de costes SAP HANA en un clúster Red Hat Enterprise Linux High Availability Add-On

Configuración de la replicación de sistemas de escalado optimizado de costes SAP HANA en un clúster Red Hat Enterprise Linux High Availability Add-On

La siguiente información describe la configuración de un clúster Red Hat Enterprise Linux (RHEL) High Availability Add-On para gestionar SAP HANA Cost-Optimized Scale-Up System Replication. El clúster utiliza instancias de servidor virtual en IBM® Power® Virtual Server como nodos del clúster.

En una configuración de costes optimizados, un sistema SAP HANA no productivo se ejecuta en el nodo secundario durante el funcionamiento normal. Los recursos de hardware del nodo secundario se comparten entre el sistema que no es de producción y el secundario de Replicación del Sistema SAP HANA. El uso de memoria del secundario de Replicación del Sistema de producción se reduce desactivando la precarga de datos de tablas de columnas.

Si se produce una conmutación por error, la instancia de no producción se detiene automáticamente antes de que el nodo asuma la carga de trabajo de producción. El tiempo de recuperación es mayor en comparación con una configuración de rendimiento optimizado.

Esta información va dirigida a arquitectos y especialistas que estén planificando una implantación de alta disponibilidad de SAP HANA en Power Virtual Server.

Antes de empezar

Revise los requisitos generales, la documentación del producto, los artículos de soporte y las notas de SAP que aparecen en Implementación de alta disponibilidad para aplicaciones de SAP en IBM Power Virtual Server Referencias.

Requisitos previos

  • Se despliega un clúster de alta disponibilidad Red Hat en dos instancias de servidor virtual en Power Virtual Server.
  • Las instancias de servidor virtual deben cumplir los requisitos de hardware y recursos de los sistemas SAP HANA en cuestión. Siga las directrices del documento Planificación de la implantación.
  • Los nombres de host de las instancias del servidor virtual deben cumplir el requisito SAP HANA.
  • SAP HANA está instalado en ambas instancias del servidor virtual y SAP HANA System Replication está configurado. La instalación de SAP HANA y la configuración de HANA System Replication no son específicas del entorno Power Virtual Server, y es necesario seguir los procedimientos estándar.
  • Un sistema SAP HANA que no es de producción está instalado en NODE2 con un SID y Instance Number diferentes a los del sistema de producción. El sistema de no producción necesita sus propios volúmenes de almacenamiento y sistemas de archivos dedicados. Restrinja el Límite de asignación de memoria global para el sistema que no es de producción a fin de garantizar memoria suficiente para la carga de trabajo de replicación del sistema HANA en el secundario. El límite se establece con el parámetro global_allocation_limit en la sección [memorymanager] del archivo de configuración global.ini.
  • Opcionalmente, se reserva una dirección IP virtual para el sistema que no es de producción, tal y como se describe en Reserva de direcciones IP virtuales.

Configuración del escenario de optimización de costes

El escenario de optimización de costes es una extensión de la configuración que se describe en Configuración de la replicación del sistema de escalado SAP HANA en un clúster Red Hat Enterprise Linux High Availability Add-On. Complete la configuración del clúster System Replication del sistema de producción antes de continuar con los pasos siguientes.

Preparación de las variables de entorno

Para simplificar la configuración, prepare las siguientes variables de entorno para el ID de usuario root en NODE2. Estas variables de entorno se utilizan con comandos posteriores del sistema operativo en esta información.

En NODE2, configure las siguientes variables de entorno.

# General settings
export SID_NP=<SID>            # SAP HANA System ID of non-production system (uppercase)
export sid_np=<sid>            # SAP HANA System ID of non-production system (lowercase)
export INSTNO_NP=<INSTNO>      # SAP HANA Instance Number of non-production system

# Cluster nodes
export NODE1=<Hostname 1>      # Hostname of virtual server instance 1 (production primary)
export NODE2=<Hostname 2>      # Hostname of virtual server instance 2 (non-production, production secondary)

# Optional virtual IP address
export VIP_NP=<IP address>     # Virtual IP address for the non-production system

Configuración del gancho de proveedor de HA/DR de SAP HANA

El servidor de nombres SAP HANA proporciona una API basada en Python a la que se llama en puntos importantes durante el proceso de traspaso de la replicación del sistema HANA. Estas llamadas a la API se utilizan para ejecutar operaciones específicas del cliente (Implementación de un proveedor de HA/DR ).

En el escenario de optimización de costes, el hook del proveedor SAP HANA HA/DR se utiliza para reconfigurar automáticamente la instancia SAP HANA durante el evento de toma de control.

La siguiente sección muestra un ejemplo de configuración de un script hook para un entorno de Replicación del Sistema SAP HANA de coste optimizado. Cuando implemente la automatización del entorno SAP HANA System Replication HA de coste optimizado en el clúster, el script del gancho de toma de control debe probarse exhaustivamente. Ejecute las pruebas manualmente. Apague la instancia no productiva de SAP HANA en el nodo secundario, realice una toma de control y compruebe que el script hook reconfigura correctamente la base de datos HANA primaria.

Creación de un usuario de base de datos en la base de datos de producción SAP HANA

Siga estos pasos para crear un usuario de base de datos en la base de datos de producción SAP HANA.

  1. Crear un usuario de base de datos en el SystemDB del sistema de producción SAP HANA, o proporcione las credenciales de un usuario existente. El script gancho utiliza este usuario de base de datos para conectarse a la base de datos de producción y modificar los parámetros de configuración.

    Inicie sesión en el SystemDB de la instancia primaria utilizando el terminal interactivo de base de datos SAP HANA hdbsql o SAP HANA Cockpit, y cree un nuevo usuario.

    Por ejemplo, conéctese a la base de datos utilizando hdbsql en una sesión de terminal.

    sudo -i -u ${sid}adm -- hdbsql -i ${INSTNO} -d SYSTEMDB -u SYSTEM
    

    Crea un usuario de .

    CREATE USER HA_HOOK PASSWORD <Password> no force_first_password_change;
    

    Concede los privilegios necesarios al usuario.

    Conceder privilegio INIFILE ADMIN para permitir cambios en los parámetros del perfil.

    GRANT INIFILE ADMIN TO HA_HOOK;
    

    Verifique el usuario HA_HOOK.

     sudo -i -u ${sid}adm -- hdbsql -d SYSTEMDB -u SYSTEM select \* from users where user_name = \'HA_HOOK\';
    
  2. Añade las credenciales de usuario al almacén seguro de usuarios hdbuserstore.

    En ambos nodos, ejecute el siguiente comando. Utilice la contraseña que estableció en el paso anterior.

    sudo -i -u ${sid}adm -- hdbuserstore SET HA_HOOK_KEY localhost:3${INSTNO}13 HA_HOOK <Password>
    

    Comprueba la actualización del hdbuserstore.

    sudo -i -u ${sid}adm -- hdbuserstore list
    

    En la instancia primaria, pruebe la conexión con la clave de usuario almacenada.

    sudo -i -u ${sid}adm  -- hdbsql -U HA_HOOK_KEY select \* from m_inifiles;
    

Creación del script gancho

Python como parte de la instalación de SAP HANA se suministran archivos de ejemplo para crear scripts de gancho. Las muestras se encuentran en el directorio $DIR_INSTANCE/exe/python_support/hdb_ha_dr.

El directorio de destino /hana/shared/myHooks ya fue creado para el hook SAPHanaSR.py. Cree un gancho de proveedor HA/DR en /hana/shared/myHooks. El siguiente script hook está basado en el ejemplo de HADRdummy.py.

En NODE2, edite el archivo /hana/shared/myHooks/SAPHanaCostOptSR.py y añada el siguiente contenido.

"""
Sample for a HA/DR hook provider.

When using your own code in here, please copy this file to location on /hana/shared outside the HANA installation.
This file will be overwritten with each hdbupd call! To configure your own changed version of this file, please add
to your global.ini lines similar to this:

    [ha_dr_provider_<className>]
    provider = <className>
    path = /hana/shared/haHook
    execution_order = 1


For all hooks, 0 must be returned in case of success.
"""

from __future__ import absolute_import
from hdb_ha_dr.client import HADRBase, Helper
from hdbcli import dbapi
import os, time

class SAPHanaCostOptSR(HADRBase):

    def __init__(self, *args, **kwargs):
        # delegate construction to base class
        super(SAPHanaCostOptSR, self).__init__(*args, **kwargs)

    def about(self):
        return {"provider_company" :        "SAP",
                "provider_name" :           "SAPHanaCostOptSR", # provider name = class name
                "provider_description" :    "Handle reconfiguration event for cost-optimized system replication",
                "provider_version" :        "1.0"}

    def postTakeover(self, rc, **kwargs):
        """Post takeover hook."""

        # prepared SQL statements to remove memory allocation limit and pre-load of column tables
        stmnt1 = "ALTER SYSTEM ALTER CONFIGURATION ('global.ini','SYSTEM') UNSET ('memorymanager','global_allocation_limit') WITH RECONFIGURE"
        stmnt2 = "ALTER SYSTEM ALTER CONFIGURATION ('global.ini','SYSTEM') UNSET ('system_replication','preload_column_tables') WITH RECONFIGURE"

        myPort = int('3' + os.environ.get('DIR_INSTANCE')[-2:] + '15')
        myKey = self.config.get("userkey") if self.config.hasKey("userkey") else "HA_HOOK_KEY"

        self.tracer.info("%s.postTakeover method called with rc=%s" % (self.__class__.__name__, rc))
        self.tracer.info("%s.postTakeover method: userkey: %s, port: %s" % (self.__class__.__name__, myKey, myPort))

        if rc in (0, 1):
            # rc == 0: normal takeover succeeded
            # rc == 1: waiting for force takeover
            conn = dbapi.connect(userkey=myKey, address='localhost', port=myPort)
            self.tracer.info("%s: Connect using userkey %s - %s" % (self.__class__.__name__, myKey, conn.isconnected()))
            cursor = conn.cursor()
            rc1 = cursor.execute(stmnt1)
            self.tracer.info("%s: (%s) - %s" % (self.__class__.__name__, stmnt1, rc1))
            rc2 = cursor.execute(stmnt2)
            self.tracer.info("%s: (%s) - %s" % (self.__class__.__name__, stmnt2, rc2))
            return 0
        elif rc == 2:
            # rc == 2: error, something went wrong
            return 0

Activar el gancho de optimización de costes

Siga los siguientes pasos para activar el gancho de optimización de costes.

  1. Detener el clúster.

    En cualquier nodo del clúster, ejecute el siguiente comando.

    pcs cluster stop --all
    
  2. Establece la propiedad del archivo del script gancho.

    En NODE2, ejecute el siguiente comando.

    chown -R ${sid}adm:sapsys /hana/shared/myHooks
    
  3. Actualice el archivo de configuración de global.ini en NODE2 para habilitar el script hook.

    En NODE2, ejecute el siguiente comando para añadir los parámetros necesarios al archivo global.ini.

    sudo -i -u ${sid}adm -- <<EOT
        python \$DIR_INSTANCE/exe/python_support/setParameter.py \
          -set SYSTEM/global.ini/ha_dr_provider_SAPHanaCostOptSR/provider=SAPHanaCostOptSR \
          -set SYSTEM/global.ini/ha_dr_provider_SAPHanaCostOptSR/path=/hana/shared/myHooks \
          -set SYSTEM/global.ini/ha_dr_provider_SAPHanaCostOptSR/userkey=HA_HOOK_KEY \
          -set SYSTEM/global.ini/ha_dr_provider_SAPHanaCostOptSR/execution_order=2 \
          -set SYSTEM/global.ini/trace/ha_dr_saphanacostoptsr=info
    EOT
    
  4. Compruebe el contenido del archivo global.ini.

    cat /hana/shared/${SID}/global/hdb/custom/config/global.ini
    
  5. Compruebe que el gancho funciona.

    • Reinicie la instancia de HANA en NODE2 y compruebe que el script de gancho funciona como se espera.
    • Activa el gancho con una operación de toma de posesión en SAP HANA.
    • Comprueba si el gancho ha registrado algo en los archivos de rastreo.
    sudo -i -u ${sid}adm -- \
        sh -c 'grep SAPHanaCostOptSR $DIR_INSTANCE/$VTHOSTNAME/trace/nameserver_*.trc'
    

    Tras comprobar que el gancho funciona, puede reiniciar el clúster de HA.

  6. Inicie el clúster de HA.

    En cualquier nodo del clúster, ejecute el siguiente comando.

    pcs cluster start --all
    

    Compruebe el estado del clúster.

    pcs status --full
    

Definición de límites para el uso de recursos SAP HANA en el nodo secundario

Todos los sistemas SAP HANA que se ejecutan en NODE2 comparten la memoria disponible del nodo. La configuración de la memoria del sistema secundario SAP HANA $ {SID} debe limitarse a la cantidad necesaria para la replicación del sistema, de modo que los sistemas que no son de producción puedan utilizar la memoria restante.

SAP la documentación Uso del Sistema Secundario describe los diferentes escenarios y proporciona recomendaciones sobre los parámetros.

La precarga de tablas de columnas en el sistema secundario se desactiva para restringir su consumo de memoria estableciendo el parámetro de configuración de la base de datos preload_column_tables = false. Este parámetro se encuentra en la sección [system_replication] del archivo de configuración de instancia para el sistema de producción SAP HANA en NODE2.

El global_allocation_limit se establece en la sección [memorymanager] para limitar la asignación de memoria para el sistema de producción SAP HANA y el sistema que no es de producción que se está ejecutando en NODE2.

En NODE2, defina una variable de entorno con el límite de memoria deseado para la instancia de producción secundaria de HANA.

export GLOBAL_ALLOCATION_LIMIT=<memory_size_in_mb_for_hana_secondary>

A continuación, ejecute el siguiente comando para actualizar el archivo de configuración global.ini.

sudo -i -u ${sid}adm -- <<EOT
    python \$DIR_INSTANCE/exe/python_support/setParameter.py \
      -set SYSTEM/global.ini/system_replication/preload_column_tables=false \
      -set SYSTEM/global.ini/memorymanager/global_allocation_limit=$GLOBAL_ALLOCATION_LIMIT
EOT

Verifique el archivo de configuración.

cat /hana/shared/${SID}/global/hdb/custom/config/global.ini

No se pueden utilizar las sentencias hdbsql y ALTER SYSTEM ALTER CONFIGURATION ... en el secundario, no es posible ninguna conexión SQL en este estado. Active el cambio mediante el comando hdbnsutil –reconfig.

sudo -i -u ${sid}adm -- hdbnsutil -reconfig

Actualice el archivo de configuración global.ini de la instancia de no producción para tener en cuenta el uso de recursos de memoria del secundario.

En NODE2, defina una variable de entorno con el límite de memoria deseado para la instancia HANA de no producción.

export NON_PROD_GLOBAL_ALLOCATION_LIMIT=<memory_size_in_mb_for_non_prod_hana>

A continuación, ejecute el siguiente comando para actualizar el archivo de configuración global.ini.

sudo -i -u ${sid_np}adm -- <<EOT
    python \$DIR_INSTANCE/exe/python_support/setParameter.py \
      -set SYSTEM/global.ini/memorymanager/global_allocation_limit=$NON_PROD_GLOBAL_ALLOCATION_LIMIT \
      -reconfigure
EOT

Verifique el archivo de configuración.

cat /hana/shared/${SID_NP}/global/hdb/custom/config/global.ini

Ejecute el siguiente comando para comprobar el límite actual de memoria de la base de datos.

sudo -i -u ${sid_np}adm -- hdbcons "mm globallimit" | grep limit

Configuración de los recursos del clúster para la instancia que no es de producción

Utilice la siguiente información para configurar los recursos del clúster para la instancia que no es de producción.

Instalación del agente de recursos SAPInstance

El paquete resource-agents-sap incluye el agente de recursos de clúster SAPInstance, que se utiliza para gestionar la instancia adicional no de producción SAP HANA.

En NODE2, ejecute el siguiente comando para instalar el agente de recursos.

dnf install -y resource-agents-sap

Si es necesario, utilice subscription-manager para activar el SAP NetWeaver repositorio.

subscription-manager repos --enable="rhel-8-for-ppc64le-sap-netweaver-e4s-rpms"

Creación del recurso de clúster para gestionar la instancia de no producción

En NODE2, ejecute el siguiente comando.

pcs resource create SAPHana_np_${SID_NP}_HDB${INSTNO_NP} SAPInstance \
    InstanceName="${SID_NP}_HDB${INSTNO_NP}_${NODE2}" \
    MONITOR_SERVICES="hdbindexserver|hdbnameserver" \
    START_PROFILE="/usr/sap/${SID_NP}/SYS/profile/${SID_NP}_HDB${INSTNO_NP}_${NODE2}" \
    op start timeout=600 op stop timeout=600 op monitor interval=60 timeout=600 \
    --group group_${sid_np}_non_prod

Si desea asignar una dirección IP virtual a la instancia que no es de producción, añada un recurso de clúster IPaddr2.

pcs resource create vip_np IPaddr2 \
    ip="${VIP_NP}" \
    --group group_${sid_np}_non_prod

Cree una restricción de clúster para evitar que el sistema que no es de producción se inicie en NODE1.

pcs constraint location add loc-${sid_np}-avoid-${NODE1} \
    group_${sid_np}_non_prod ${NODE1} -INFINITY resource-discovery=never

Cuando el sistema de producción asume el rol PRIMARIO en NODE2 si se produce una toma de control, el sistema de no producción se detiene y se liberan sus recursos de memoria. Las siguientes restricciones de clúster garantizan que la instancia de producción primaria y la instancia de no producción nunca se ejecuten juntas en un nodo, y que la instancia de no producción se detenga antes de que se promocione la instancia de producción.

pcs constraint colocation add group_${sid_np}_non_prod with master SAPHana_${SID}_${INSTNO}-clone score=-INFINITY
pcs constraint order stop group_${sid_np}_non_prod then promote SAPHana_${SID}_${INSTNO}-clone

La configuración del clúster se ha completado.

Ejecute el siguiente comando para comprobar el estado de los recursos de clúster definidos.

pcs status --full

Salida de ejemplo:

# pcs status --full
Cluster name: SAP_PRD
Cluster Summary:
  * Stack: corosync
  * Current DC: cl-prd-2 (2) (version 2.0.5-9.el8_4.5-ba59be7122) - partition with quorum
  * Last updated: Fri Apr 28 16:38:00 2023
  * Last change:  Fri Apr 28 16:37:49 2023 by hacluster via crmd on cl-prd-1
  * 2 nodes configured
  * 8 resource instances configured

Node List:
  * Online: [ cl-prd-1 (1) cl-prd-2 (2) ]

Full List of Resources:
  * res_fence_ibm_powervs	(stonith:fence_ibm_powervs):	 Started cl-prd-2
  * Clone Set: SAPHanaTopology_PRD_00-clone [SAPHanaTopology_PRD_00]:
    * SAPHanaTopology_PRD_00	(ocf::heartbeat:SAPHanaTopology):	 Started cl-prd-2
    * SAPHanaTopology_PRD_00	(ocf::heartbeat:SAPHanaTopology):	 Started cl-prd-1
  * Clone Set: SAPHana_PRD_00-clone [SAPHana_PRD_00] (promotable):
    * SAPHana_PRD_00	(ocf::heartbeat:SAPHana):	 Slave cl-prd-2
    * SAPHana_PRD_00	(ocf::heartbeat:SAPHana):	 Master cl-prd-1
  * vip_PRD_00	(ocf::heartbeat:IPaddr2):	 Started cl-prd-1
  * Resource Group: group_dev_non_prod:
    * vip_np	(ocf::heartbeat:IPaddr2):	 Started cl-prd-2
    * SAPHana_np_DEV_HDB10	(ocf::heartbeat:SAPInstance):	 Started cl-prd-2

Node Attributes:
  * Node: cl-prd-1 (1):
    * hana_prd_clone_state            	: PROMOTED
    * hana_prd_op_mode                	: logreplay
    * hana_prd_remoteHost             	: cl-prd-2
    * hana_prd_roles                  	: 4:P:master1:master:worker:master
    * hana_prd_site                   	: SiteA
    * hana_prd_srmode                 	: syncmem
    * hana_prd_sync_state             	: PRIM
    * hana_prd_version                	: 2.00.070.00.1679989823
    * hana_prd_vhost                  	: cl-prd-1
    * lpa_prd_lpt                     	: 1682692638
    * master-SAPHana_PRD_00           	: 150
  * Node: cl-prd-2 (2):
    * hana_prd_clone_state            	: DEMOTED
    * hana_prd_op_mode                	: logreplay
    * hana_prd_remoteHost             	: cl-prd-1
    * hana_prd_roles                  	: 4:S:master1:master:worker:master
    * hana_prd_site                   	: SiteB
    * hana_prd_srmode                 	: syncmem
    * hana_prd_sync_state             	: SOK
    * hana_prd_version                	: 2.00.070.00.1679989823
    * hana_prd_vhost                  	: cl-prd-2
    * lpa_prd_lpt                     	: 30
    * master-SAPHana_PRD_00           	: 100

Migration Summary:

Tickets:

PCSD Status:
  cl-prd-1: Online
  cl-prd-2: Online

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

Ejecute el siguiente comando para comprobar las restricciones definidas.

Salida de ejemplo:

# pcs constraint --full
Location Constraints:
  Resource: group_dev_non_prod
    Disabled on:
      Node: cl-prd-1 (score:-INFINITY) (resource-discovery=never) (id:loc-dev-avoid-cl-prd-1)
Ordering Constraints:
  start SAPHanaTopology_PRD_00-clone then start SAPHana_PRD_00-clone (kind:Mandatory) (non-symmetrical) (id:order-SAPHanaTopology_PRD_00-clone-SAPHana_PRD_00-clone-mandatory)
  stop group_dev_non_prod then promote SAPHana_PRD_00-clone (kind:Mandatory) (id:order-group_dev_non_prod-SAPHana_PRD_00-clone-mandatory)
Colocation Constraints:
  vip_PRD_00 with SAPHana_PRD_00-clone (score:2000) (rsc-role:Started) (with-rsc-role:Master) (id:colocation-vip_PRD_00-SAPHana_PRD_00-clone-2000)
  group_dev_non_prod with SAPHana_PRD_00-clone (score:-INFINITY) (rsc-role:Started) (with-rsc-role:Master) (id:colocation-group_dev_non_prod-SAPHana_PRD_00-clone-INFINITY)
Ticket Constraints:

Activar el registro automático de la instancia secundaria

Debe ajustar el parámetro AUTOMATED_REGISTER en función de sus necesidades operativas. Si desea mantener la capacidad de volver al estado de la instancia primaria anterior SAP HANA, entonces AUTOMATED_REGISTER=false evita un registro automático del primario anterior como nuevo secundario.

Si experimenta un problema con los datos después de una toma de control desencadenada por el clúster, puede revertirlo manualmente si AUTOMATED_REGISTER está configurado en false.

Si AUTOMATED_REGISTER se establece en true, la instancia primaria anterior SAP HANA se registra automáticamente como secundaria, y no puede activarse en su historial anterior. La ventaja de AUTOMATED_REGISTER=true es que la alta disponibilidad se restablece automáticamente tras la reaparición del nodo averiado en el clúster.

Por ahora, se recomienda mantener AUTOMATED_REGISTER en el valor predeterminado false hasta que el clúster esté completamente probado y se verifique que los escenarios de conmutación por error funcionan como se espera.

El comando pcs resource update se utiliza para modificar los atributos de los recursos y pcs resource update SAPHana_${SID}_${INSTNO} AUTOMATED_REGISTER=true establece el atributo en true.

Pruebas del clúster de replicación del sistema SAP HANA

Es fundamental probar a fondo la configuración del clúster para asegurarse de que funciona correctamente. La siguiente información proporciona algunos ejemplos de escenarios de prueba de conmutación por error, pero no es una lista completa de escenarios de prueba.

Por ejemplo, la descripción de cada caso de prueba incluye la siguiente información.

  • Qué componente se está comprobando
  • Descripción de la prueba
  • Requisitos previos y estado inicial antes de iniciar la prueba de conmutación por error
  • Procedimiento de ensayo
  • Comportamiento y resultados esperados
  • Procedimiento de recuperación

Test1- Comprobación del fallo de la instancia primaria de la base de datos

Utilice la siguiente información para probar el fallo de la instancia de base de datos primaria.

Test1- Descripción

Simule una caída de la instancia primaria de la base de datos HANA que se ejecuta en NODE1.

Test1- Requisitos previos

  • Un clúster funcional RHEL HA Add-On de dos nodos para la replicación de sistemas HANA.
  • Ambos nodos del clúster están activos.
  • El clúster se inicia en NODE1 y NODE2.
  • Cluster Resource SAPHana_${SID}_${INSTNO} está configurado con AUTOMATED_REGISTER=false.
  • Compruebe el estado de la replicación del sistema SAP HANA:
    • La base de datos primaria SAP HANA se ejecuta en NODE1.
    • La base de datos secundaria SAP HANA se ejecuta en NODE2.
    • La replicación del sistema HANA está activada y sincronizada.
  • La base de datos secundaria SAP HANA en NODE2 funciona con una configuración de memoria reducida.
    • Se reduce la global_allocation_limit.
    • La precarga de las tablas de columnas está desactivada (preload_column_tables = false).
  • Un sistema SAP HANA que no es de producción ${SID_NP} se está ejecutando en NODE2.

Test1- Procedimiento de ensayo

Crash SAP HANA primaria mediante el envío de una señal SIGKILL como usuario ${sid}adm.

En NODE1, ejecute el siguiente comando.

sudo -i -u ${sid}adm -- HDB kill-9

Test1- Comportamiento esperado

  • SAP HANA la instancia primaria en NODE1 se bloquea.
  • El clúster detecta la base de datos HANA primaria detenida y marca el recurso como failed.
  • El clúster promueve la base de datos HANA secundaria en NODE2 para que asuma el papel de nueva primaria.
    • El clúster detiene la base de datos de no producción ${SID_NP} en NODE2.
    • Durante la activación, los parámetros global_allocation_limit y preload_column_tables se restablecen a los valores predeterminados.
  • El clúster libera la dirección IP virtual en NODE1, y la adquiere en el nuevo primario en NODE2.
  • Si una aplicación, como SAP NetWeaver, se conecta a una base de datos tenant de SAP HANA, la aplicación se reconecta automáticamente al nuevo primario.

En NODE2, ejecute los siguientes comandos para comprobar que global_allocation_limit y preload_column_tables no están configurados.

sudo -i -u ${sid}adm -- hdbcons "mm globallimit" | grep limit
grep -E "global_allocation_limit|preload_column_tables" \
     /hana/shared/${SID}/global/hdb/custom/config/global.ini

Test1- Procedimiento de recuperación

Como el recurso de cluster SAPHana_${SID}_${INSTNO} está configurado con AUTOMATED_REGISTER=false, el cluster no reinicia la base de datos HANA fallida, y no la registra contra el nuevo primario. El estado en el nuevo primario ( NODE2 ) muestra al secundario en estado 'CONNECTION TIMEOUT'.

En NODE1, ejecute los siguientes comandos para registrar el primario anterior como nuevo secundario.

sudo -i -u ${sid}adm -- <<EOT
    hdbnsutil -sr_register \
        --name=${DC1} \
        --remoteHost=${NODE2} \
        --remoteInstance=${INSTNO} \
        --replicationMode=sync \
        --operationMode=logreplay \
        --online
EOT

Verificar el estado de replicación del sistema.

sudo -i -u ${sid}adm -- <<EOT
    hdbnsutil -sr_state
    HDBSettings.sh systemReplicationStatus.py
EOT

En NODE1, ejecute el siguiente comando para iniciar el nodo de clúster.

pcs cluster start

La nueva instancia secundaria se reinicia y aparece en estado sincronizado (SOK).

pcs status --full

Configure el recurso de clúster SAPHana_${SID}_${INSTNO} con AUTOMATED_REGISTER=true.

En NODE1, ejecute el siguiente comando.

pcs resource update SAPHana_${SID}_${INSTNO} AUTOMATED_REGISTER=true
pcs resource config SAPHana_${SID}_${INSTNO}

Test2- Prueba del traslado manual del recurso SAPHana a otro nodo

Utilice la siguiente información para probar el traslado manual del recurso SAPHana a otro nodo.

Test2- Descripción

Utilice los comandos de clúster para mover la instancia primaria de nuevo al otro nodo.

Test2- Requisitos previos

  • Un clúster funcional RHEL HA Add-On de dos nodos para la replicación de sistemas HANA.
  • Ambos nodos del clúster están activos.
  • El clúster se inicia en NODE1 y NODE2.
  • Cluster Resource SAPHana_${SID}_${INSTNO} está configurado con AUTOMATED_REGISTER=true.
  • Compruebe el estado de la replicación del sistema SAP HANA:
    • La base de datos primaria SAP HANA se ejecuta en NODE2.
    • La base de datos secundaria SAP HANA se ejecuta en NODE1.
    • La replicación del sistema HANA está activada y sincronizada.
  • El sistema de no producción SAP HANA ${SID_NP} se detiene en NODE2.

Test2- Preparación de exámenes

Desgestione el recurso de cluster para el sistema SAP HANA que no es de producción para evitar que se inicie cuando los recursos de memoria del secundario no estén restringidos.

En NODE1, ejecute el siguiente comando.

pcs resource unmanage group_${sid_np}_non_prod

Test2- Procedimiento de ensayo

En NODE1, ejecute el siguiente comando para mover el SAP HANA primario de nuevo a NODE1.

pcs resource move SAPHana_${SID}_${INSTNO}-clone

Test2- Comportamiento esperado

  • El clúster crea una restricción de ubicación para mover el recurso.
  • El clúster activa una transferencia a la base de datos HANA secundaria en NODE1.
  • Si una aplicación, como SAP NetWeaver, se conecta a una base de datos tenant de SAP HANA, la aplicación se reconecta automáticamente al nuevo primario.
  • El recurso del sistema SAP HANA que no está en producción ${SID_NP} está en estado no gestionado y no se inicia automáticamente.

Test2- Procedimiento de recuperación

Es necesario seguir varios pasos para restablecer el escenario completo de HA.

  1. Espere hasta que la instancia primaria de HANA esté activa. A continuación, reduzca la huella de memoria del secundario.

    En NODE2, ejecute los siguientes comandos para reducir la memoria.

    export GLOBAL_ALLOCATION_LIMIT=<size_in_mb_for_hana_secondary>
    
    sudo -i -u ${sid}adm -- <<EOT
        python \$DIR_INSTANCE/exe/python_support/setParameter.py \
          -set SYSTEM/global.ini/system_replication/preload_column_tables=false \
          -set SYSTEM/global.ini/memorymanager/global_allocation_limit=$GLOBAL_ALLOCATION_LIMIT
    EOT
    
  2. Elimina la restricción de ubicación, lo que desencadena el inicio de la instancia secundaria.

    pcs resource clear SAPHana_${SID}_${INSTNO}-clone
    

    Compruebe que la restricción está eliminada.

    pcs constraint
    

    Compruebe el estado del clúster.

    pcs status --full
    
  3. En NODE2, ejecute los siguientes comandos para comprobar que global_allocation_limit y preload_column_tables están configurados.

    sudo -i -u ${sid}adm -- hdbcons "mm globallimit" | grep limit
    
    grep -E "global_allocation_limit|preload_column_tables" \
         /hana/shared/${SID}/global/hdb/custom/config/global.ini
    
  4. Reactivar el recurso para el sistema SAP HANA que no está en producción.

    En NODE2, ejecute el siguiente comando.

    pcs resource manage group_${sid_np}_non_prod
    

    Se gestiona el recurso del sistema de no producción SAP HANA ${SID_NP} y se inicia el sistema de no producción en NODE2.

    pcs status --full
    

Test3- Fallo de prueba del nodo que ejecuta la base de datos primaria

Utilice la siguiente información para probar el fallo del nodo que está ejecutando la base de datos primaria.

Test3- Descripción

Simule una caída del nodo que ejecuta la base de datos HANA primaria.

Test3- Requisitos previos

  • Un clúster funcional RHEL HA Add-On de dos nodos para la replicación de sistemas HANA.
  • Ambos nodos del clúster están activos.
  • El clúster se inicia en NODE1 y NODE2.
  • Cluster Resource SAPHana_${SID}_${INSTNO} está configurado con AUTOMATED_REGISTER=true.
  • Compruebe el estado de la replicación del sistema SAP HANA:
    • La base de datos primaria SAP HANA se ejecuta en NODE1.
    • La base de datos secundaria SAP HANA se ejecuta en NODE2.
    • La replicación del sistema HANA está activada y sincronizada.
  • La base de datos secundaria SAP HANA en NODE2 funciona con una configuración de memoria reducida.
    • Se reduce la global_allocation_limit.
    • La precarga de las tablas de columnas está desactivada (preload_column_tables = false).
  • Un sistema SAP HANA que no es de producción ${SID_NP} se está ejecutando en NODE2.

Test3- Procedimiento de ensayo

Bloquea el sistema primario en NODE1 enviando una petición de bloqueo del sistema.

En NODE1, ejecute el siguiente comando.

sync; echo c > /proc/sysrq-trigger

Test3- Comportamiento esperado

  • NODE1 se apaga.
  • El clúster detecta el nodo que ha fallado y establece su estado en OFFLINE.
  • El clúster promueve la base de datos HANA secundaria en NODE2 para que asuma el papel de nueva primaria.
    • El clúster detiene la base de datos de no producción ${SID_NP} en NODE2.
    • Durante la activación, se restablecen los parámetros global_allocation_limit y preload_column_tables de SAP HANA ${SID}.
  • El clúster adquiere la dirección IP virtual en NODE2 en el nuevo primario.
  • Si una aplicación, como SAP NetWeaver, se conecta a una base de datos tenant de SAP HANA, la aplicación se reconecta automáticamente al nuevo primario.

Test3- Procedimiento de recuperación

Acceda a la consola IBM Cloud® e inicie NODE1. Espere hasta que NODE1 vuelva a estar disponible y, a continuación, reinicie el marco del clúster.

En NODE1, ejecute el siguiente comando.

pcs cluster start
pcs status --full

Como el recurso de clúster SAPHana_${SID}_${INSTNO} está configurado con AUTOMATED_REGISTER=true, SAP HANA se reinicia cuando NODE1 se une al clúster y el antiguo primario se registra como secundario.

A continuación, vuelva a ejecutar los pasos en Test2- Prueba del movimiento manual del recurso SAPHana a otro nodo para volver a la situación inicial.

Test4- Prueba de fallo de la instancia secundaria de la base de datos

Utilice la siguiente información para probar el fallo de la instancia de base de datos secundaria.

Test4- Descripción

Simular una caída de la base de datos secundaria HANA.

Test4- Requisitos previos

  • Un clúster funcional RHEL HA Add-On de dos nodos para la replicación de sistemas HANA.
  • Ambos nodos activos.
  • El clúster se inicia en NODE1 y NODE2.
  • Cluster Resource SAPHana_${SID}_${INSTNO} está configurado con AUTOMATED_REGISTER=true.
  • Compruebe el estado de la replicación del sistema SAP HANA:
    • La base de datos primaria SAP HANA se ejecuta en NODE1.
    • La base de datos secundaria SAP HANA se ejecuta en NODE2.
    • La replicación del sistema HANA está activada y sincronizada.

Test4- Procedimiento de ensayo

Crash SAP HANA secundaria mediante el envío de una señal SIGKILL como usuario ${sid}adm.

En NODE2, ejecute el siguiente comando.

sudo -i -u ${sid}adm -- HDB kill-9

Test4- Comportamiento esperado

  • SAP HANA secundario en NODE2 accidentes.
  • El clúster detecta la base de datos HANA secundaria detenida y marca el recurso como failed.
  • El clúster reinicia la base de datos HANA secundaria.
  • El clúster detecta que la replicación del sistema vuelve a estar sincronizada.

Test4- Procedimiento de recuperación

Espere hasta que la instancia secundaria de HANA se inicie y sincronice de nuevo (SOK), luego limpie las acciones de recursos fallidos como se muestra en pcs status.

En NODE2, ejecute el siguiente comando.

pcs resource refresh SAPHana_${SID}_${INSTNO}
pcs status --full