IBM Cloud Docs
Konfigurieren von SAP HANA kostenoptimierter Scale-up-Systemreplikation in einem Red Hat Enterprise Linux High Availability Add-On-Cluster

Konfigurieren von SAP HANA kostenoptimierter Scale-up-Systemreplikation in einem Red Hat Enterprise Linux High Availability Add-On-Cluster

Die folgenden Informationen beschreiben die Konfiguration eines Red Hat Enterprise Linux (RHEL) High Availability Add-On-Clusters für die Verwaltung von SAP HANA Cost-Optimized Scale-Up System Replication. Der Cluster verwendet virtuelle Serverinstanzen in IBM® Power® Virtual Server als Clusterknoten.

In einer kostenoptimierten Konfiguration läuft auf dem sekundären Knoten im Normalbetrieb ein nicht produktives System SAP HANA. Die Hardwareressourcen auf dem sekundären Knoten werden zwischen dem nicht produktiven System und dem sekundären SAP HANA System Replication geteilt. Der Speicherverbrauch des sekundären Produktionssystems Replication wird durch die Deaktivierung des Vorladens von Spaltentabellendaten reduziert.

Bei einem Failover wird die nicht produktive Instanz automatisch gestoppt, bevor der Knoten die Produktionsarbeitslast übernimmt. Die Übernahmezeit ist im Vergleich zu einer leistungsoptimierten Konfiguration länger.

Diese Informationen sind für Architekten und Spezialisten gedacht, die eine Hochverfügbarkeitsbereitstellung von SAP HANA auf Power Virtual Server planen.

Vorbereitende Schritte

Lesen Sie die allgemeinen Anforderungen, die Produktdokumentation, die Support-Artikel und die SAP Hinweise, die unter Implementieren von Hochverfügbarkeit für SAP Anwendungen auf IBM Power Virtual Server Referenzen aufgeführt sind.

Voraussetzungen

  • Ein Red Hat Hochverfügbarkeitscluster wird auf zwei virtuellen Serverinstanzen in Power Virtual Server bereitgestellt.
  • Die virtuellen Serverinstanzen müssen die Hardware- und Ressourcenanforderungen für die SAP HANA Systeme im Anwendungsbereich erfüllen. Befolgen Sie die Richtlinien im Dokument Planung Ihrer Bereitstellung.
  • Die Hostnamen der virtuellen Serverinstanzen müssen die Anforderung SAP HANA erfüllen.
  • SAP HANA ist auf beiden virtuellen Serverinstanzen installiert und SAP HANA Systemreplikation ist konfiguriert. Die Installation von SAP HANA und die Einrichtung der HANA-Systemreplikation ist nicht spezifisch für die Umgebung Power Virtual Server, und Sie müssen die Standardverfahren befolgen.
  • Ein nicht produktives SAP HANA System wird auf NODE2 mit einem anderen SID und Instance Number als das Produktivsystem installiert. Das nicht-produktive System benötigt seine eigenen dedizierten Speicher-Volumes und Dateisysteme. Schränken Sie das globale Speicherzuweisungslimit für das nicht produktive System ein, um genügend Speicher für die HANA-Systemreplikationslast auf dem sekundären System zu gewährleisten. Der Grenzwert wird mit dem Parameter global_allocation_limit im Abschnitt [memorymanager] der Konfigurationsdatei global.ini festgelegt.
  • Optional wird eine virtuelle IP-Adresse für das Nicht-Produktionssystem reserviert, wie unter Reservieren virtueller IP-Adressen beschrieben.

Aufbau des kostenoptimierten Szenarios

Das kostenoptimierte Szenario ist eine Erweiterung der Einrichtung, die in Konfigurieren der SAP HANA Scale-up-Systemreplikation in einem Red Hat Enterprise Linux High Availability Add-On-Cluster beschrieben ist. Schließen Sie die Einrichtung des Systemreplikationsclusters für das Produktionssystem ab, bevor Sie mit den folgenden Schritten fortfahren.

Vorbereiten von Umgebungsvariablen

Um die Einrichtung zu vereinfachen, bereiten Sie die folgenden Umgebungsvariablen für die Benutzer-ID root auf NODE2 vor. Diese Umgebungsvariablen werden bei späteren Betriebssystembefehlen in diesen Informationen verwendet.

Setzen Sie unter NODE2 die folgenden Umgebungsvariablen.

# 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

Konfigurieren des SAP HANA HA/DR-Provider-Hooks

Der SAP HANA Nameserver stellt eine Python-basierte API zur Verfügung, die an wichtigen Punkten während des HANA System Replication Übernahmeprozesses aufgerufen wird. Diese API-Aufrufe werden verwendet, um kundenspezifische Vorgänge auszuführen (Implementieren eines HA/DR-Providers ).

Im kostenoptimierten Szenario wird der SAP HANA HA/DR-Provider-Hook verwendet, um die Instanz SAP HANA während des Übernahmeereignisses automatisch neu zu konfigurieren.

Der folgende Abschnitt zeigt ein Beispiel für die Einrichtung eines Hook-Skripts für eine kostenoptimierte SAP HANA Systemreplikationsumgebung. Wenn Sie die Automatisierung der kostenoptimierten SAP HANA System Replication HA-Umgebung im Cluster implementieren, muss das Takeover Hook Script gründlich getestet werden. Führen Sie die Tests manuell durch. Fahren Sie die nicht produktive Instanz SAP HANA auf dem sekundären Knoten herunter, führen Sie eine Übernahme durch und überprüfen Sie, ob das Hook-Skript die primäre HANA-DB korrekt neu konfiguriert.

Anlegen eines Datenbankbenutzers in der Produktionsdatenbank SAP HANA

Gehen Sie wie folgt vor, um einen Datenbankbenutzer in der Produktionsdatenbank SAP HANA anzulegen.

  1. Legen Sie einen Datenbankbenutzer im Verzeichnis SystemDB des Produktionssystems SAP HANA an, oder geben Sie die Anmeldedaten eines bestehenden Benutzers an. Das Hook-Skript verwendet diesen Datenbankbenutzer, um sich mit der Produktionsdatenbank zu verbinden und die Konfigurationsparameter zu ändern.

    Melden Sie sich an die SystemDB der primären Instanz an, indem Sie das interaktive Datenbankterminal hdbsql von SAP HANA oder das SAP HANA Cockpit verwenden, und legen Sie einen neuen Benutzer an.

    Verbinden Sie sich zum Beispiel mit der Datenbank, indem Sie hdbsql in einer Terminalsitzung verwenden.

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

    Einen Benutzer erstellen.

    CREATE USER HA_HOOK PASSWORD <Password> no force_first_password_change;
    

    Gewähren Sie dem Benutzer die erforderlichen Berechtigungen.

    Erteilen Sie das Privileg INIFILE ADMIN, um Änderungen der Profilparameter zu ermöglichen.

    GRANT INIFILE ADMIN TO HA_HOOK;
    

    Überprüfen Sie den Benutzer HA_HOOK.

     sudo -i -u ${sid}adm -- hdbsql -d SYSTEMDB -u SYSTEM select \* from users where user_name = \'HA_HOOK\';
    
  2. Fügen Sie die Benutzeranmeldedaten dem sicheren Benutzerspeicher hdbuserstore hinzu.

    Führen Sie auf beiden Knoten den folgenden Befehl aus. Verwenden Sie das Passwort, das Sie im vorherigen Schritt festgelegt haben.

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

    Überprüfen Sie die Aktualisierung des hdbuserstore.

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

    Testen Sie auf der primären Instanz die Verbindung mit dem gespeicherten Benutzerschlüssel.

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

Erstellen des Hook-Skripts

Python beispieldateien für die Erstellung von Hook-Skripten werden als Teil der SAP HANA Installation mitgeliefert. Die Beispiele befinden sich im Verzeichnis $DIR_INSTANCE/exe/python_support/hdb_ha_dr.

Das Zielverzeichnis /hana/shared/myHooks wurde bereits für den Hook SAPHanaSR.py angelegt. Erstellen Sie einen HA/DR-Provider-Haken in /hana/shared/myHooks. Das folgende Hook-Skript basiert auf dem Beispiel von HADRdummy.py.

Bearbeiten Sie auf NODE2 die Datei /hana/shared/myHooks/SAPHanaCostOptSR.py und fügen Sie den folgenden Inhalt hinzu.

"""
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

Aktivieren des kostenoptimierten Hakens

Gehen Sie wie folgt vor, um den kostenoptimierten Haken zu aktivieren.

  1. Halten Sie den Cluster an.

    Führen Sie auf einem beliebigen Clusterknoten den folgenden Befehl aus.

    pcs cluster stop --all
    
  2. Legen Sie die Dateibesitzrechte für das Hook-Skript fest.

    Führen Sie unter NODE2 den folgenden Befehl aus.

    chown -R ${sid}adm:sapsys /hana/shared/myHooks
    
  3. Aktualisieren Sie die Konfigurationsdatei global.ini auf NODE2, um das Hook-Skript zu aktivieren.

    Führen Sie auf NODE2 den folgenden Befehl aus, um der Datei global.ini die erforderlichen Parameter hinzuzufügen.

    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. Überprüfen Sie den Inhalt der Datei global.ini.

    cat /hana/shared/${SID}/global/hdb/custom/config/global.ini
    
  5. Überprüfen Sie, ob der Haken funktioniert.

    • Starten Sie die HANA-Instanz auf NODE2 neu und überprüfen Sie, ob das Hook-Skript wie erwartet funktioniert.
    • Lösen Sie den Haken mit einer SAP HANA Übernahmeoperation aus.
    • Prüfen Sie, ob der Hook etwas in den Trace-Dateien protokolliert hat.
    sudo -i -u ${sid}adm -- \
        sh -c 'grep SAPHanaCostOptSR $DIR_INSTANCE/$VTHOSTNAME/trace/nameserver_*.trc'
    

    Nachdem Sie überprüft haben, dass der Hook funktioniert, können Sie den HA-Cluster neu starten.

  6. Starten Sie den HA-Cluster.

    Führen Sie auf einem beliebigen Clusterknoten den folgenden Befehl aus.

    pcs cluster start --all
    

    Überprüfen Sie den Status des Clusters.

    pcs status --full
    

Festlegung von Grenzen für die Ressourcennutzung SAP HANA auf dem sekundären Knoten

Alle SAP HANA Systeme, die auf NODE2 laufen, teilen sich den verfügbaren Speicher des Knotens. Die Speicherkonfiguration des sekundären Systems SAP HANA $ {SID} muss auf die für die Systemreplikation erforderliche Menge begrenzt werden, damit die nicht produktiven Systeme den restlichen Speicher nutzen können.

SAP die Dokumentation Secondary System Usage beschreibt die verschiedenen Szenarien und gibt Empfehlungen zu den Parametern.

Das Vorladen von Spaltentabellen auf dem sekundären System wird deaktiviert, um den Speicherverbrauch zu begrenzen, indem der Datenbankkonfigurationsparameter preload_column_tables = false gesetzt wird. Dieser Parameter befindet sich im Abschnitt [system_replication] der Instanzkonfigurationsdatei für das Produktionssystem SAP HANA auf NODE2.

Die global_allocation_limit wird im Abschnitt [memorymanager] eingestellt, um die Speicherzuweisung für das Produktionssystem SAP HANA und das Nicht-Produktionssystem, das auf NODE2 läuft, zu begrenzen.

Definieren Sie auf NODE2 eine Umgebungsvariable mit dem gewünschten Speicherlimit für die sekundäre HANA-Produktionsinstanz.

export GLOBAL_ALLOCATION_LIMIT=<memory_size_in_mb_for_hana_secondary>

Führen Sie dann den folgenden Befehl aus, um die Konfigurationsdatei global.ini zu aktualisieren.

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

Überprüfen Sie die Konfigurationsdatei.

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

Sie können keine hdbsql und ALTER SYSTEM ALTER CONFIGURATION ... Anweisungen auf dem sekundären Rechner verwenden, da in diesem Zustand keine SQL-Verbindung möglich ist. Aktivieren Sie die Änderung mit dem Befehl hdbnsutil –reconfig.

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

Aktualisieren Sie die Konfigurationsdatei global.ini der nicht produktiven Instanz, um die Nutzung der Speicherressourcen der sekundären Instanz zu berücksichtigen.

Definieren Sie auf NODE2 eine Umgebungsvariable mit dem gewünschten Speicherlimit für die nicht-produktive HANA-Instanz.

export NON_PROD_GLOBAL_ALLOCATION_LIMIT=<memory_size_in_mb_for_non_prod_hana>

Führen Sie dann den folgenden Befehl aus, um die Konfigurationsdatei global.ini zu aktualisieren.

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

Überprüfen Sie die Konfigurationsdatei.

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

Führen Sie den folgenden Befehl aus, um das aktuelle Speicherlimit der Datenbank zu überprüfen.

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

Konfigurieren der Cluster-Ressourcen für die Nicht-Produktionsinstanz

Verwenden Sie die folgenden Informationen, um Cluster-Ressourcen für die Nicht-Produktionsinstanz zu konfigurieren.

Installation des SAPInstance-Ressourcen-Agenten

Das Paket resource-agents-sap enthält den SAPInstance-Cluster-Ressourcen-Agenten, der für die Verwaltung der zusätzlichen, nicht produktiven Instanz SAP HANA verwendet wird.

Führen Sie unter NODE2 den folgenden Befehl aus, um den Ressourcen-Agenten zu installieren.

dnf install -y resource-agents-sap

Falls erforderlich, verwenden Sie subscription-manager, um das SAP NetWeaver repository zu aktivieren.

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

Erstellen der Cluster-Ressource für die Verwaltung der nicht produktiven Instanz

Führen Sie unter NODE2 den folgenden Befehl aus.

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

Wenn Sie der nicht produktiven Instanz eine virtuelle IP-Adresse zuweisen möchten, fügen Sie eine IPaddr2 Cluster-Ressource hinzu.

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

Erstellen Sie eine Cluster-Beschränkung, um zu verhindern, dass das Nicht-Produktionssystem auf NODE1 startet.

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

Wenn das Produktivsystem bei einer Übernahme die PRIMARY-Rolle auf NODE2 übernimmt, wird das Nicht-Produktionssystem angehalten und seine Speicherressourcen werden freigegeben. Die folgenden Cluster-Einschränkungen stellen sicher, dass die primäre Produktionsinstanz und die Nicht-Produktionsinstanz nie gemeinsam auf einem Knoten laufen und dass die Nicht-Produktionsinstanz anhält, bevor die Produktionsinstanz befördert wird.

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

Die Konfiguration des Clusters ist abgeschlossen.

Führen Sie den folgenden Befehl aus, um den Status der definierten Cluster-Ressourcen zu überprüfen.

pcs status --full

Beispielausgabe:

# 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

Führen Sie den folgenden Befehl aus, um die definierten Beschränkungen zu überprüfen.

Beispielausgabe:

# 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:

Ermöglichung der automatischen Registrierung der sekundären Instanz

Sie müssen den Parameter AUTOMATED_REGISTER entsprechend Ihren betrieblichen Anforderungen einstellen. Wenn Sie die Möglichkeit behalten wollen, zum Status der vorherigen primären SAP HANA Instanz zurückzukehren, dann vermeidet AUTOMATED_REGISTER=false eine automatische Registrierung der vorherigen primären als neue sekundäre Instanz.

Wenn nach einer Übernahme, die durch den Cluster ausgelöst wurde, ein Problem mit den Daten auftritt, können Sie manuell zurückkehren, wenn AUTOMATED_REGISTER auf false eingestellt ist.

Wenn AUTOMATED_REGISTER auf true gesetzt wird, wird die vorherige primäre Instanz SAP HANA automatisch als sekundäre Instanz registriert und kann nicht über ihre vorherige Geschichte aktiviert werden. Der Vorteil von AUTOMATED_REGISTER=true ist, dass die Hochverfügbarkeit automatisch wiederhergestellt wird, sobald der ausgefallene Knoten wieder im Cluster erscheint.

Es wird empfohlen, AUTOMATED_REGISTER vorerst auf dem Standardwert false zu belassen, bis der Cluster vollständig getestet ist und Sie überprüfen, ob die Failover-Szenarien wie erwartet funktionieren.

Der Befehl pcs resource update wird zur Änderung von Ressourcenattributen verwendet und pcs resource update SAPHana_${SID}_${INSTNO} AUTOMATED_REGISTER=true setzt das Attribut auf true.

Testen des SAP HANA Systemreplikationsclusters

Es ist wichtig, die Clusterkonfiguration gründlich zu testen, um sicherzustellen, dass der Cluster korrekt funktioniert. Die folgenden Informationen enthalten einige beispielhafte Failover-Testszenarien, sind jedoch keine vollständige Liste der Testszenarien.

Die Beschreibung jedes Testfalls enthält zum Beispiel folgende Informationen

  • Welche Komponente wird getestet?
  • Beschreibung des Tests
  • Voraussetzungen und Ausgangszustand vor dem Start des Failover-Tests
  • Testverfahren
  • Erwartetes Verhalten und Ergebnisse
  • Wiederherstellungsprozedur

Test1- Testen des Ausfalls der primären Datenbankinstanz

Verwenden Sie die folgenden Informationen, um den Ausfall der primären Datenbankinstanz zu testen.

Test1- Beschreibung

Simulieren Sie einen Absturz der primären HANA-Datenbankinstanz, die auf NODE1 ausgeführt wird.

Test1- Voraussetzungen

  • Ein funktionsfähiger RHEL HA Add-On-Cluster mit zwei Knoten für die HANA-Systemreplikation.
  • Beide Clusterknoten sind aktiv.
  • Der Cluster wird auf NODE1 und NODE2 gestartet.
  • Cluster Resource SAPHana_${SID}_${INSTNO} wird mit AUTOMATED_REGISTER=false konfiguriert.
  • Prüfen Sie den Status der SAP HANA Systemreplikation:
    • Die primäre Datenbank SAP HANA läuft auf NODE1.
    • Die sekundäre Datenbank SAP HANA läuft auf NODE2.
    • Die HANA-Systemreplikation ist aktiviert und synchronisiert.
  • Die sekundäre Datenbank SAP HANA auf NODE2 wird mit reduzierter Speicherkonfiguration ausgeführt.
    • Die global_allocation_limit wird reduziert.
    • Das Vorladen von Spaltentabellen ist deaktiviert (preload_column_tables = false).
  • Ein nicht produktives System SAP HANA ${SID_NP} läuft auf NODE2.

Test1- Testverfahren

Absturz von SAP HANA primary durch Senden eines SIGKILL-Signals als Benutzer ${sid}adm.

Führen Sie unter NODE1 den folgenden Befehl aus.

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

Test1- Erwartetes Verhalten

  • SAP HANA die primäre Instanz auf NODE1 stürzt ab.
  • Der Cluster erkennt die gestoppte primäre HANA-Datenbank und markiert die Ressource als failed.
  • Der Cluster fördert die sekundäre HANA-Datenbank auf NODE2, um sie als neue primäre Datenbank zu übernehmen.
    • Der Cluster stoppt die nicht produktive Datenbank ${SID_NP} auf NODE2.
    • Bei der Aktivierung werden die Parameter global_allocation_limit und preload_column_tables auf die Standardwerte zurückgesetzt.
  • Der Cluster gibt die virtuelle IP-Adresse auf NODE1 frei und erwirbt sie auf der neuen primären Adresse auf NODE2.
  • Wenn eine Anwendung, z. B. SAP NetWeaver, mit einer Mieterdatenbank von SAP HANA verbunden wird, stellt die Anwendung automatisch eine neue Verbindung zur neuen Primärdatenbank her.

Führen Sie auf NODE2 die folgenden Befehle aus, um zu überprüfen, ob global_allocation_limit und preload_column_tables nicht gesetzt sind.

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- Einziehungsverfahren

Da die Cluster-Ressource SAPHana_${SID}_${INSTNO} mit AUTOMATED_REGISTER=false konfiguriert ist, startet der Cluster die ausgefallene HANA-Datenbank nicht neu und registriert sie nicht bei der neuen Primärdatenbank. Der Status auf der neuen Primärseite ( NODE2 ) zeigt die Sekundärseite im Status 'CONNECTION TIMEOUT'.

Führen Sie auf NODE1 die folgenden Befehle aus, um den vorherigen Primärserver als neuen Sekundärserver zu registrieren.

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

Überprüfen Sie den Status der Systemreplikation.

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

Führen Sie auf NODE1 den folgenden Befehl aus, um den Clusterknoten zu starten.

pcs cluster start

Die neue sekundäre Instanz startet neu und wird im Status synchronisiert angezeigt (SOK).

pcs status --full

Konfigurieren Sie die Cluster-Ressource SAPHana_${SID}_${INSTNO} mit AUTOMATED_REGISTER=true.

Führen Sie unter NODE1 den folgenden Befehl aus.

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

Test2- Testen des manuellen Verschiebens von SAPHana-Ressourcen auf einen anderen Knoten

Verwenden Sie die folgenden Informationen, um die manuelle Verschiebung von SAPHana-Ressourcen auf einen anderen Knoten zu testen.

Test2- Beschreibung

Verwenden Sie Cluster-Befehle, um die primäre Instanz zurück auf den anderen Knoten zu verschieben.

Test2- Voraussetzungen

  • Ein funktionsfähiger RHEL HA Add-On-Cluster mit zwei Knoten für die HANA-Systemreplikation.
  • Beide Clusterknoten sind aktiv.
  • Der Cluster wird auf NODE1 und NODE2 gestartet.
  • Cluster Resource SAPHana_${SID}_${INSTNO} wird mit AUTOMATED_REGISTER=true konfiguriert.
  • Prüfen Sie den Status der SAP HANA Systemreplikation:
    • Die primäre Datenbank SAP HANA läuft auf NODE2.
    • Die sekundäre Datenbank SAP HANA läuft auf NODE1.
    • Die HANA-Systemreplikation ist aktiviert und synchronisiert.
  • Das nicht-produktive System SAP HANA ${SID_NP} wird auf NODE2 gestoppt.

Test2- Vorbereitung auf den Test

Heben Sie die Verwaltung der Cluster-Ressource für das nicht produktive System SAP HANA auf, um zu verhindern, dass es startet, wenn die Speicherressourcen des sekundären Systems nicht beschränkt sind.

Führen Sie unter NODE1 den folgenden Befehl aus.

pcs resource unmanage group_${sid_np}_non_prod

Test2- Testverfahren

Führen Sie auf NODE1 den folgenden Befehl aus, um die Primärdatei SAP HANA zurück nach NODE1 zu verschieben.

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

Test2- Erwartetes Verhalten

  • Der Cluster erstellt eine Ortsbeschränkung, um die Ressource zu verschieben.
  • Der Cluster löst einen Takeover auf die sekundäre HANA-Datenbank auf NODE1 aus.
  • Wenn eine Anwendung, z. B. SAP NetWeaver, mit einer Mieterdatenbank von SAP HANA verbunden wird, stellt die Anwendung automatisch eine neue Verbindung zur neuen Primärdatenbank her.
  • Die Ressource des nicht produktiven Systems SAP HANA ${SID_NP} befindet sich im unverwalteten Zustand und wird nicht automatisch gestartet.

Test2- Einziehungsverfahren

Um das komplette HA-Szenario wiederherzustellen, müssen mehrere Schritte durchgeführt werden.

  1. Warten Sie, bis die primäre HANA-Instanz aktiv ist. Verringern Sie dann den Speicherbedarf des sekundären Systems.

    Führen Sie unter NODE2 die folgenden Befehle aus, um den Speicher zu reduzieren.

    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. Entfernen Sie die Ortsbeschränkung, die den Start der sekundären Instanz auslöst.

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

    Überprüfen Sie, ob die Einschränkung aufgehoben ist.

    pcs constraint
    

    Überprüfen Sie den Status des Clusters.

    pcs status --full
    
  3. Führen Sie auf NODE2 die folgenden Befehle aus, um zu überprüfen, ob global_allocation_limit und preload_column_tables eingestellt sind.

    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. Reaktivieren Sie die Ressource für das nicht produktive System SAP HANA.

    Führen Sie unter NODE2 den folgenden Befehl aus.

    pcs resource manage group_${sid_np}_non_prod
    

    Die Ressource des nicht produktiven Systems SAP HANA ${SID_NP} wird verwaltet und das nicht produktive System startet auf NODE2.

    pcs status --full
    

Test3- Testausfall des Knotens, auf dem die primäre Datenbank läuft

Verwenden Sie die folgenden Informationen, um den Ausfall des Knotens zu testen, auf dem die primäre Datenbank läuft.

Test3- Beschreibung

Simulieren Sie einen Absturz des Knotens, auf dem die primäre HANA-Datenbank läuft.

Test3- Voraussetzungen

  • Ein funktionsfähiger RHEL HA Add-On-Cluster mit zwei Knoten für die HANA-Systemreplikation.
  • Beide Clusterknoten sind aktiv.
  • Der Cluster wird auf NODE1 und NODE2 gestartet.
  • Cluster Resource SAPHana_${SID}_${INSTNO} wird mit AUTOMATED_REGISTER=true konfiguriert.
  • Prüfen Sie den Status der SAP HANA Systemreplikation:
    • Die primäre Datenbank SAP HANA läuft auf NODE1.
    • Die sekundäre Datenbank SAP HANA läuft auf NODE2.
    • Die HANA-Systemreplikation ist aktiviert und synchronisiert.
  • Die sekundäre Datenbank SAP HANA auf NODE2 wird mit reduzierter Speicherkonfiguration ausgeführt.
    • Die global_allocation_limit wird reduziert.
    • Das Vorladen von Spaltentabellen ist deaktiviert (preload_column_tables = false).
  • Ein nicht produktives System SAP HANA ${SID_NP} läuft auf NODE2.

Test3- Testverfahren

Stürzen Sie die Primärseite auf NODE1 ab, indem Sie eine Systemabsturzanforderung senden.

Führen Sie unter NODE1 den folgenden Befehl aus.

sync; echo c > /proc/sysrq-trigger

Test3- Erwartetes Verhalten

  • NODE1 schaltet sich ab.
  • Der Cluster erkennt den ausgefallenen Knoten und setzt seinen Status auf OFFLINE.
  • Der Cluster fördert die sekundäre HANA-Datenbank auf NODE2, um sie als neue primäre Datenbank zu übernehmen.
    • Der Cluster stoppt die nicht produktive Datenbank ${SID_NP} auf NODE2.
    • Bei der Aktivierung werden die Parameter global_allocation_limit und preload_column_tables von SAP HANA ${SID} zurückgesetzt.
  • Der Cluster erwirbt die virtuelle IP-Adresse auf NODE2 auf dem neuen primären Rechner.
  • Wenn eine Anwendung, z. B. SAP NetWeaver, mit einer Mieterdatenbank von SAP HANA verbunden wird, stellt die Anwendung automatisch eine neue Verbindung zur neuen Primärdatenbank her.

Test3- Einziehungsverfahren

Melden Sie sich an der Konsole IBM Cloud® an und starten Sie NODE1. Warten Sie, bis NODE1 wieder verfügbar ist, und starten Sie dann das Cluster-Framework neu.

Führen Sie unter NODE1 den folgenden Befehl aus.

pcs cluster start
pcs status --full

Da die Cluster-Ressource SAPHana_${SID}_${INSTNO} mit AUTOMATED_REGISTER=true konfiguriert ist, wird SAP HANA neu gestartet, wenn NODE1 dem Cluster beitritt und der ehemalige Primärserver als Sekundärserver registriert wird.

Wiederholen Sie dann die Schritte unter Test2- Testen Sie die manuelle Verschiebung der SAPHana-Ressource auf einen anderen Knoten um zur Ausgangssituation zurückzukehren.

Test4- Testen des Ausfalls der sekundären Datenbankinstanz

Verwenden Sie die folgenden Informationen, um den Ausfall der sekundären Datenbankinstanz zu testen.

Test4- Beschreibung

Simulieren Sie einen Absturz der sekundären HANA-Datenbank.

Test4- Voraussetzungen

  • Ein funktionsfähiger RHEL HA Add-On-Cluster mit zwei Knoten für die HANA-Systemreplikation.
  • Beide Knotenpunkte aktiv.
  • Der Cluster wird auf NODE1 und NODE2 gestartet.
  • Cluster Resource SAPHana_${SID}_${INSTNO} wird mit AUTOMATED_REGISTER=true konfiguriert.
  • Prüfen Sie den Status der SAP HANA Systemreplikation:
    • Die primäre Datenbank SAP HANA läuft auf NODE1.
    • Die sekundäre Datenbank SAP HANA läuft auf NODE2.
    • HANA System Replication ist aktiviert und synchronisiert.

Test4- Testverfahren

Absturz von SAP HANA secondary durch Senden eines SIGKILL-Signals als Benutzer ${sid}adm.

Führen Sie unter NODE2 den folgenden Befehl aus.

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

Test4- Erwartetes Verhalten

  • SAP HANA sekundär auf NODE2 abstürzt.
  • Der Cluster erkennt die gestoppte sekundäre HANA-Datenbank und markiert die Ressource als failed.
  • Der Cluster startet die sekundäre HANA-Datenbank neu.
  • Der Cluster stellt fest, dass die Systemreplikation wieder synchronisiert ist.

Test4- Einziehungsverfahren

Warten Sie, bis die sekundäre HANA-Instanz gestartet und wieder synchronisiert ist (SOK), und bereinigen Sie dann die fehlgeschlagenen Ressourcenaktionen, wie in pcs status gezeigt.

Führen Sie unter NODE2 den folgenden Befehl aus.

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