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.
- Instale y configure el clúster complementario RHEL HA de acuerdo con Implementación de un clúster complementario de alta disponibilidad Red Hat Enterprise Linux.
- Configure y verifique el vallado como se describe en el documento anterior.
- 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
yInstance 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ámetroglobal_allocation_limit
en la sección[memorymanager]
del archivo de configuraciónglobal.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.
-
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\';
-
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.
-
Detener el clúster.
En cualquier nodo del clúster, ejecute el siguiente comando.
pcs cluster stop --all
-
Establece la propiedad del archivo del script gancho.
En NODE2, ejecute el siguiente comando.
chown -R ${sid}adm:sapsys /hana/shared/myHooks
-
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
-
Compruebe el contenido del archivo
global.ini
.cat /hana/shared/${SID}/global/hdb/custom/config/global.ini
-
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.
-
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 conAUTOMATED_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
).
- Se reduce la
- 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
ypreload_column_tables
se restablecen a los valores predeterminados.
- El clúster detiene la base de datos de no producción
- 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 conAUTOMATED_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.
-
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
-
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
-
En NODE2, ejecute los siguientes comandos para comprobar que
global_allocation_limit
ypreload_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
-
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 conAUTOMATED_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
).
- Se reduce la
- 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
ypreload_column_tables
de SAP HANA${SID}
.
- El clúster detiene la base de datos de no producción
- 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 conAUTOMATED_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