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.
- Installieren Sie den RHEL HA-Add-On-Cluster und richten Sie ihn gemäß dem Abschnitt Implementieren eines Red Hat Enterprise Linux High Availability Add-On-Clusters ein.
- Konfigurieren und überprüfen Sie das Fencing wie im vorangegangenen Dokument beschrieben.
- 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
undInstance 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 Parameterglobal_allocation_limit
im Abschnitt[memorymanager]
der Konfigurationsdateiglobal.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.
-
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\';
-
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.
-
Halten Sie den Cluster an.
Führen Sie auf einem beliebigen Clusterknoten den folgenden Befehl aus.
pcs cluster stop --all
-
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
-
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
-
Überprüfen Sie den Inhalt der Datei
global.ini
.cat /hana/shared/${SID}/global/hdb/custom/config/global.ini
-
Ü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.
-
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 mitAUTOMATED_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
).
- Die
- 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
undpreload_column_tables
auf die Standardwerte zurückgesetzt.
- Der Cluster stoppt die nicht produktive Datenbank
- 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 mitAUTOMATED_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.
-
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
-
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
-
Führen Sie auf NODE2 die folgenden Befehle aus, um zu überprüfen, ob
global_allocation_limit
undpreload_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
-
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 mitAUTOMATED_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
).
- Die
- 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
undpreload_column_tables
von SAP HANA${SID}
zurückgesetzt.
- Der Cluster stoppt die nicht produktive Datenbank
- 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 mitAUTOMATED_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