DB2 Universal Database - Systemverwaltung


HACMP ES-Ereignisüberwachung und benutzerdefinierte Ereignisse

Das Herunterfahren von DB2-Datenbankpartitionen auf einem physischen AIX-Knoten, wenn der Seitenwechselbereich (Paging-Bereich) einen bestimmten Prozentsatz der Füllung erreicht, oder das erneute Starten einer DB2-Datenbankpartition bzw. die Einleitung einer Übernahmeoperation, wenn ein Prozeß auf einem bestimmten Knoten unterbrochen wird, sind zwei Beispiele für benutzerdefinierte Ereignisse. Beispiele, die benutzerdefinierte Ereignisse illustrieren, wie zum Beispiel das Herunterfahren einer Datenbankpartition und das Erzwingen eines Transaktionsabbruchs, um Seitenwechselbereich freizugeben, befinden sich im Unterverzeichnis samples.

Eine rules-Datei /user/sbin/cluster/events/rules.hacmprd enthält Definitionen von HACMP-Ereignissen. Jede Ereignisbeschreibung in dieser Datei besitzt die folgenden neun Komponenten:

Jedes Objekt benötigt eine Zeile in der Ereignisdefinition, auch wenn die Zeile nicht verwendet wird. Wenn solche Zeilen gelöscht werden, kann HACMP ES Cluster Manager die Ereignisdefinition nicht korrekt analysieren, was zu einer Blockierung des Systems führen kann. Jede Zeile die mit einem Zeichen "#" beginnt, wird als Kommentarzeile behandelt.
Anmerkung:Die rules-Datei verlangt exakt neun Zeilen für jede Ereignisdefinition, wobei die Kommentarzeilen nicht mitgezählt werden. Beim Hinzufügen eines benutzerdefinierten Ereignisses am Ende der rules-Datei, muß unbedingt darauf geachtet werden, nicht benötigte Leerzeilen am Ende der Datei zu entfernen. Ansonsten kommt es zu einem Blockieren des Knotens.

Das folgende Beispiel zeigt eine Ereignisdefinition für das Ereignis node_up:

   ##### Beginning of the Event Definition: node_up
   #
   TE_JOIN_NODE
   0
   /usr/sbin/cluster/events/node_up.rp
   2
   0
   # 6) Resource variable - only used for event management events
 
   # 7) Instance vector - only used for event management events
 
   # 8) Predicate  - only used for event management events
 
   # 9) Rearm predicate - only used for event management events
 
   ###### End of the Event Definition: node_up

Dies ist nur ein Beispiel für die Ereignisdefinitionen, die sich in der Datei rules.hacmprd befinden können. In diesem Beispiel wird das Wiederherstellungsprogramm /usr/sbin/cluster/events/node_up.rp ausgeführt, wenn das Ereignis node_up eintritt. Werte sind für den Status, den Wiederherstellungstyp und die Wiederherstellungsebene angegeben. Es gibt vier leere Zeilen für Ressourcenvariable, Exemplarvariable, Vergleichselement (Predicate) und Rearm-Vergleichselement (Rearm predicate).

Sie können andere Ereignisse definieren, um auf andere als die Standardereignisse von HACMP ES zu reagieren. Zum Beispiel muß die Datei rules.hacmprd geändert werden, um das Ereignis zu definieren, daß das Dateisystem /tmp zu über 90 % gefüllt ist.

Zahlreiche Ereignisse sind in IBM Parallel System Support Program (PSSP) vordefiniert. Diese Ereignisse können (durch Verwendung innerhalb benutzerdefinierter Ereignisse) wie folgt genutzt werden:

  1. Stoppen Sie den Cluster.
  2. Editieren Sie die Datei rules.hacmprd. Fertigen Sie eine Sicherungskopie der Datei an, bevor Sie sie ändern. Fügen Sie das vordefinierte PSSP-Ereignis manuell hinzu. Wenn Sie Synchronisierungspunkte über alle Knoten im Cluster hinweg benötigen, verwenden Sie im Wiederherstellungsprogramm den Befehl barrier. (Weitere Informationen zum Befehl barrier und zur Synchronisierung von Wiederherstellungsprogrammen lesen Sie bitte in den HACMP-Handbüchern zu Konzepten, Installation und Verwaltung.)
  3. Starten Sie den Cluster erneut. Die Datei rules.hacmprd wird im Hauptspeicher gespeichert, wenn Cluster Manager gestartet wird. Starten Sie alle Cluster erneut, um die Änderungen präzise zu implementieren. Es sollten sich keine inkonsistenten Angaben in der rules-Datei in einem Cluster befinden.
  4. Cluster Manager verwendet alle Ereignisse in der Datei rules.hacmprd.

HACMP ES verwendet die PSSP-Ereigniserkennung zur Behandlung benutzerdefinierter Ereignisse. Das PSSP-Subsystem zur Ereignisverwaltung (Event Management) stellt eine umfassende Ereigniserkennung durch Überwachung verschiedener Hardware- und Softwareressourcen zur Verfügung.

Die Ressourcenstatus werden durch verschiedene Ressourcenvariablen dargestellt. Ressourcenbedingungen werden durch Ausdrücke wiedergegeben, die als Vergleichselemente (Predicates) bezeichnet werden.

Die Ereignisverwaltung (Event Management) empfängt Ressourcenvariablen vom Ressourcenmonitor (Resource Monitor), der den Status spezieller Systemressourcen beobachtet und diesen Status in verschiedene Ressourcenvariablen umsetzt. Diese Variablen werden in regelmäßigen Abständen an die Ereignisverwaltung (Event Management) übermittelt. Die Ereignisverwaltung wendet Vergleichselemente, die durch HACMP ES Cluster Manager in der Datei rules.hacmprd angegeben werden, für jede Ressourcenvariable an. Wenn das Vergleichselement als wahr ausgewertet wird, wird ein Ereignis generiert und an Cluster Manager gesendet. Cluster Manager initiiert das Wahlprotokoll, und die Wiederherstellungsprogrammdatei (xxx.rp) wird (nach Ereignispriorität) auf einer Gruppe von Knoten ausgeführt, die durch "node sets" im Wiederherstellungsprogramm angegeben sind.

Die Wiederherstellungsprogrammdatei (xxx.rp) besteht aus einer oder mehreren Wiederherstellungsprogrammzeilen. Jede Zeile ist auf das folgende Format festgelegt:

   beziehung     auszuführender-befehl     erwarteter-status     NULL

Zwischen den einzelnen Werten in der Zeile muß mindestens ein Leerzeichen sein. "beziehung" ist ein Wert, der zu der Entscheidung herangezogen wird, welches Programm auf welchen Knoten auszuführen ist. Es werden drei Werte für die Beziehung unterstützt:

"auszuführender-befehl" ist eine in Anführungszeichen gesetzte Zeichenfolge mit oder ohne Angabe eines vollständigen Pfads zu einem ausführbaren Programm. Nur zum Lieferumfang von HACMP gehörende Ereignisprozeduren können eine relative Pfaddefinition verarbeiten. Andere Prozeduren oder Programme müssen eine vollständige Pfadangabe verwenden, auch wenn sie sich im selben Verzeichnis wie die HACMP-Ereignisprozeduren befinden.

"Erwarteter-status" ist der Rückkehrcode des angegebenen Befehls bzw. Programms. Dabei kann entweder ein Ganzzahlwert oder ein "x" angegeben werden. Wenn "x" verwendet wird, ignoriert Cluster Manager den Rückkehrcode. Alle anderen Codes müssen mit dem erwarteten Rückkehrcode übereinstimmen, ansonsten erkennt Cluster Manager einen Ereignisfehler. Die Behandlung diesses Ereignisses blockiert den Prozeß, bis eine Behebung (durch einen manuellen Eingriff) erfolgt. Ohne manuellen Eingriff wird der Knoten nicht mit den anderen Knoten synchronisiert. Die Synchronisierung über alle Knoten hinweg ist eine Voraussetzung für Cluster Manager, um alle Knoten steuern zu können.

"NULL" ist ein für zukünftige Zwecke reserviertes Feld. Das Wort "NULL" muß am Ende jeder Zeile außer der barrier-Zeile stehen. Wenn mehrere Wiederherstellungsbefehle zwischen zwei barrier-Befehlen (oder vor dem ersten) angegeben werden, werden die Wiederherstellungsbefehle auf dem Knoten selbst und zwischen den Knoten parallel ausgeführt.

Der Befehl barrier dient zur Synchronisierung aller Befehle über alle Clusterknoten hinweg. Wenn ein Knoten auf die barrier-Anweisung im Wiederherstellungsprogramm trifft, initiiert Cluster Manager das barrier-Protokoll auf diesem Knoten. Da das barrier-Protokoll ein zweiphasiges Protokoll ist, werden alle Knoten benachrichtigt, daß beide Phasen abschlossen wurden, wenn alle Knoten die barrier-Anweisung im Wiederherstellungsprogramm erreicht und "gewählt" haben, das Protokoll zu bestätigen.

Der Prozeß kann folgendermaßen zusammengefaßt werden:

  1. Entweder Group Services/ES (für vordefinierte Ereignisse) oder die Ereignisverwaltung (für benutzerdefinierte Ereignisse) informiert HACMP ES Cluster Manager über das Ereignis.
  2. Cluster Manager liest die Datei rules.hacmprd und bestimmt das Wiederherstellungsprogramm, das dem Ereignis zugeordnet ist.
  3. Cluster Manager führt das Wiederherstellungsprogramm aus, das aus einer Folge von Wiederherstellungsbefehlen besteht.
  4. Das Wiederherstellungsprogramm führt die Wiederherstellungsbefehle aus, die Shell-Prozeduren oder Binärbefehle sein können. (In HACMP für AIX stimmen die Wiederherstellungsbefehle mit den HACMP-Ereignisprozeduren überein.)
  5. Cluster Manager empfängt den Rückkehrstatus von den Wiederherstellungsbefehlen. Ein unerwarteter Status führt zum Blockieren des Clusters, bis ein manueller Eingriff (mit Hilfe von smit cm_rec_aids oder mit Hilfe des Befehls /usr/sbin/cluster/utilities/clruncmd) durchgeführt wird.

HACMP ES-Prozedurdateien

Die folgenden Beispielprozeduren zur Fehlerbehebung durch Funktionsübernahme und für benutzerdefinierte Ereignisse gehören zum Lieferumfang von DB2 UDB EEE. Die Prozedurdateien befinden sich im Verzeichnis $INSTNAME/sqllib/samples/hacmp/es. Diese Prozeduren sind in der vorliegenden Form funktionsfähig. Die Wiederherstellungsaktion kann aber auch angepaßt werden.

Die Wiederherstellungsprozeduren müssen auf jedem Knoten installiert werden, der Wiederherstellungsoperationen ausführen soll. Die Prozedurdateien können zentral von der SP-Steuer-Workstation bzw. einem anderen zuvor festgelegten SP-Knoten aus installiert werden:

  1. Kopieren Sie die Prozeduren aus dem Verzeichnis $INSTNAME/sqllib/samples/hacmp/es entweder auf die SP-Steuer-Workstation oder auf einen anderen SP-Knoten, auf dem die Befehle pcp und pexec ausgeführt werden können. Diese Befehle sind für die Installationsoperation erforderlich.
  2. Passen Sie die Dateien reg.parms.SAMPLE und failover.parms.SAMPLE an Ihre Umgebung an, indem Sie Werte für Schlüsselparameter (wie BUFFPAGE) für Übernahmekonfigurationen einstellen. Typischerweise gilt für Konfigurationen für gegenseitige Übernahme, daß die Einstellungen für den Störungsfall auf Werte unterhalb der Hälfte der normalen Einstellungen gesetzt werden. Außerdem müssen Sie eine in einen von Ihnen gewählten Namen (anstelle von "SAMPLE") umbenannte Kopie dieser Dateien verwenden.
  3. Passen Sie (nach Bedarf) die fünf Parameter NFS_RETRIES, START_RETRIES, MOUNT_NFS, STOP_RETRIES und FAILOVER in der Datei rc.db2pe an. Die RETRY- und FAILOVER-Einstellungen sollten für die meisten Implementierungen angemessen sein. Die Einstellung MOUNT_NFS sollte abhängig davon konfiguriert werden, ob Sie das Paket für NFS-Server-Verfügbarkeit verwenden. Sie sollten diese Einstellung angeben, wenn Sie wollen, daß rc.db2pe das NFS-Benutzerverzeichnis des DB2-Exemplareigners für Sie anhängt (Mount) und überprüft. Die Einstellung des Parameters FAILOVER auf den Wert "YES" ruft db2_proc_restart auf und startet einen Versuch, eine DB2-Datenbankpartition erneut zu starten. Schlägt die RESTART-Operation fehl, schließt HACMP mit einer Funktionsübernahme.
  4. Passen Sie db2_paging_action, db2_proc_recovery und nfs_auto_recovery in der Ereignisdatei an. Editieren Sie pwq, um diese Einstellung in den DB2-Exemplareigner zu ändern. Passen Sie db2_paging_action an, um die Aktion anzugeben, die auszuführen ist, wenn der Seitenwechselbereich zu über 90 % gefüllt wird. (Wenn dies geschieht, wird die DB2-Datenbankpartition gestoppt.) Ändern Sie die Prozedur, wenn weitere Wiederherstellungsaktionen erforderlich sind.
  5. Verwenden Sie db2_inst_ha zur Installation der Prozeduren und Ereignisse auf den Knoten, die Sie angeben. (HACMP ES muß auf den Knoten vorinstalliert sein, bevor Sie beginnen.) Die Syntax von db2_inst_ha lautet:
       db2_inst_ha $INSTNAME/sqllib/samples/hacmp/es <knotenliste> <DATENBANKNAME>
     
    Dabei gilt folgendes:
     
          $INSTNAME/sqllib/samples/hacmp/es
             ist Verzeichnis mit den Prozeduren und den Ereignissen
          <knotenliste> ist die Knotenangabe im pcp- oder pexec-Format;
             z. B. 1-16 oder 1,2,3,4
          <DATENBANKNAME> ist der Name der Datenbank für die Dateien mit den
          regulären Parametern und den Funktionsübernahmeparametern.
    

    Die Dateien reg.parms.SAMPLE und failover.parms.SAMPLE werden auf jeden Knoten kopiert und in reg.parms.DATENBANKNAME umbenannt. db2_inst_ha kopiert Dateien auf jeden Knoten in das Verzeichnis /usr/bin und aktualisiert die HACMP-Ereignisdateien:

       /usr/sbin/cluster/events/rules.hacmprd
       /usr/sbin/cluster/events/network_up_complete
       /usr/sbin/cluster/events/network_down_complete
    
  6. Konfigurieren Sie Ihr System und die Prozeduren mit HACMP.
  7. Verwenden Sie den Befehl create_db2_events, um die Überwachungsereignisse für Fehlerverwaltungsressourcen (pman) und SP GUI Perspectives zu installieren. Es sind noch weitere Konfigurations- und Anpassungsschritte in Perspectives erforderlich. Weitere Informationen zu Perspectives finden Sie im Handbuch PSSP Administration Guide.
  8. Verwenden Sie den Befehl ha_db2stop, um die Datenbankpartitionen herunterzufahren, ohne daß eine HACMP ES-Fehlerbehebung durch Funktionsübernahme stattfindet. Kopieren Sie zur Verwendung dieses Befehls die Datei in das Benutzerverzeichnis des Datenbankbenutzers, und stellen Sie sicher, daß Berechtigungen und Eigentumsrecht für den betreffenden Benutzer definiert sind. Geben Sie dann als der betreffende Benutzer zum Stoppen der Datenbank ohne Fehlerbehebung durch Funktionsübernahme folgenden Befehl ein:
       ha_db2stop
    
    Anmerkung:Sie müssen warten, bis der Befehl beendet ist. Durch Drücken der Tasten Strg-C oder durch Abbrechen des Prozesses kann die Fehlerbehebung durch Funktionsübernahme vorzeitig wieder aktiviert werden, und einige Datenbankpartitionen werden vielleicht nicht gestoppt.

Operationen der DB2-Wiederherstellungsprozeduren mit HACMP ES

HACMP ES ruft die DB2-Wiederherstellungsprozeduren auf folgende Weise auf:

Anmerkung:Alle Ereignisse können über die SP-Fehlerverwaltung (Problem Management) und die GUI SP Perspectives überwacht werden.

Andere Prozedurdienstprogramme

Es stehen noch weitere Prozedurdienstprogramme (Skripte) für Sie bereit:


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]