Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

RMAPI-Rückmeldemethoden

Rückmeldemethoden sind die Schlüsselelemente, die von der API zur Implementierung eines Ressourcentyps bereitgestellt werden. Rückmeldemethoden ermöglichen RGM die Steuerung der Ressourcen im Cluster im Falle einer Änderung der Cluster-Mitgliedschaft, z.B. bei einem Bootvorgang oder Absturz eines Knotens.


Hinweis –

Die Rückmeldemethoden werden von RGM mit Superuser- oder entsprechenden Rollenberechtigungen ausgeführt, da die Client-Programme HA-Dienste im Cluster-System steuern. Installieren und verwalten Sie diese Methoden mit eingeschränkter Dateieigentümerschaft und eingeschränkten Berechtigungen. Weisen Sie diesen Methoden einen privilegierten Eigentümer, z.B. bin oder root ohne Schreibberechtigung zu.


In diesem Abschnitt werden die Argumente und Beendigungscodes von Rückmeldemethoden beschrieben. Es werden folgende Kategorien von Rückmeldemethoden beschrieben:


Hinweis –

Dieser Abschnitt enthält kurze Beschreibungen der Rückmeldemethoden, u.a. des Punkts, an dem die Methode ausgeführt wird, sowie die erwartete Auswirkung auf die Ressource. Die Online-Dokumentation zu rt_callbacks(1HA) ist jedoch die maßgebliche Referenz für die Rückmeldemethoden.


Argumente für Rückmeldemethoden

RGM führt Rückmeldemethoden wie folgt aus:

Methode -R Ressourcenname -T Typname -G Gruppenname

Die Methode ist der Pfadname des Programms, das als Start, Stop oder sonstige Rückmeldung registriert ist. Die Rückmeldemethoden eines Ressourcentyps werden in dessen Registrierungsdatei deklariert.

Alle Argumente für Rückmeldemethoden werden wie folgt als Flag-Werte übergeben:

Verwenden Sie die Argumente mit Zugriffsfunktionen, um Informationen über die Ressource abzurufen.

Die Validate-Methode wird mit zusätzlichen Argumenten aufgerufen, die die Eigenschaftswerte der Ressource und Ressourcengruppe enthalten, für die sie aufgerufen wird.

Weitere Informationen finden Sie auf der Online-Dokumentationsseite scha_calls(3HA).

Beendigungscodes der Rückmeldemethode

Alle Rückmeldemethoden weisen dieselben Beendigungscodes auf. Diese Beendigungscodes sind so definiert, dass sie die Auswirkung des Methodenaufrufs auf den Ressourcenzustand angeben. Diese Beendigungscodes werden in der Online-Dokumentation zu scha_calls(3HA) detailliert beschrieben. Die beiden Hauptkategorien von Beendigungscodes sind Folgende:

RGM verarbeitet auch abnormale Fehler, die bei Ausführung von Rückmeldemethoden entstehen, z.B. Zeitüberschreitungen und Kernspeicher.

Methodenimplementierungen müssen Fehlerinformationen ausgeben, indem an jedem Knoten syslog () verwendet wird. Es gibt keine Garantie, dass die Ausgabe, die an stdout oder stderr geschrieben wird, dem Benutzer zugestellt wird, auch wenn dies gerade an der Konsole des lokalen Knotens angezeigt wird.

Steuerungs- und Initialisierungs-Rückmeldemethoden

Die primären Steuerungs- und Initialisierungs-Rückmeldemethoden starten und stoppen eine Ressource. Andere Methoden führen für eine Ressource Initialisierungs- und Beendigungscode aus.

Start

RGM führt diese Methode an einem Cluster-Knoten aus, wenn die Ressourcengruppe, die die Ressource enthält, an diesem Knoten online gebracht wird. Die Methode aktiviert die Ressource auf dem Knoten.

Eine Start-Methode sollte nicht beendet werden, bis die Ressource, die sie aktiviert, gestartet wurde und am lokalen Knoten verfügbar ist. Daher muss die Start-Methode vor Beendigung die Ressource abrufen, um festzustellen, ob sie gestartet wurde. Außerdem sollten Sie einen ausreichend langen Zeitüberschreitungswert für diese Methode festlegen. Bestimmte Ressourcen, z.B. Datenbankdämonen, benötigen mehr Zeit zum Starten. Deshalb sollte die Methode einen längeren Zeitüberschreitungswert aufweisen.

Die Reaktion von RGM auf einen Fehlschlag der Start-Methode hängt von der Einstellung der Failover_mode-Eigenschaft ab.

Die Start_timeout-Eigenschaft in der RTR-Datei (Resource Type Registration, Ressourcentypregistrierung) legt den Zeitüberschreitungswert für die Start-Methode einer Ressource fest.

Stop

RGM führt diese Methode an einem Cluster-Knoten aus, wenn die Ressourcengruppe, die die Ressource enthält, an diesem Knoten offline gebracht wird. Die Methode deaktiviert die Ressource, wenn sie aktiv ist.

Eine Stop-Methode sollte nicht beendet werden, bis die Ressource, die sie steuert, sämtliche Aktionen am lokalen Knoten eingestellt hat und alle Dateideskriptoren geschlossen sind. Andernfalls kann eine Datenbeschädigung auftreten, da RGM davon ausgeht, dass die Ressource gestoppt wurde, obwohl sie eigentlich noch aktiv ist. Der sicherste Weg, eine Datenbeschädigung zu vermeiden, besteht darin, alle Prozesse am lokalen, mit der Ressource verknüpften Knoten anzuhalten.

Die Stop-Methode muss vor der Beendigung die Ressource abrufen, um festzustellen, ob sie gestoppt wurde. Außerdem sollten Sie einen ausreichend langen Zeitüberschreitungswert für diese Methode festlegen. Bestimmte Ressourcen, z.B. Datenbankdämonen, benötigen mehr Zeit zum Stoppen. Deshalb sollte die Methode einen längeren Zeitüberschreitungswert aufweisen.

Die Art und Weise, in der RGM auf einen Fehler der Stop-Methode reagiert, richtet sich nach der Einstellung der Failover_mode-Eigenschaft. Weitere Informationen finden Sie im Abschnitt Ressourceneigenschaften.

Die Stop_timeout-Eigenschaft in der RTR-Datei legt den Zeitüberschreitungswert für die Stop-Methode einer Ressource fest.

Init

RGM führt diese optionale Methode zum Durchführen einer einmaligen Initialisierung der Ressource aus, sobald es sich um eine verwaltete Ressource handelt. RGM führt diese Methode aus, wenn ihre Ressourcengruppe von einem nicht verwalteten Zustand in einen verwalteten Zustand wechselt oder wenn die Ressource in einer Ressourcengruppe erstellt wird, die bereits verwaltet wird. Diese Methode wird an Knoten aufgerufen, die durch die Ressourceneigenschaft Init_nodes gekennzeichnet sind.

Fini

RGM führt diese optionale Methode aus, um nach der Ressource aufzuräumen, wenn sie zu einer verwalteten Ressource wird. RGM führt diese Methode aus, wenn ihre Ressourcengruppe in einen nicht verwalteten Zustand wechselt oder wenn die Ressource aus einer verwalteten Ressourcengruppe gelöscht wird. Diese Methode wird an Knoten aufgerufen, die durch die Ressourceneigenschaft Init_nodes gekennzeichnet sind.

Boot

RGM führt diese optionale Methode aus, die ähnlich ist wie Init , um die Ressourcen an den Knoten zu initialisieren, die dem Cluster beitreten, nachdem die Ressourcengruppe, die die Ressource enthält, bereits unter die Verwaltung von RGM gestellt wurde. Diese Methode wird an Knoten ausgeführt, die durch die Ressourceneigenschaft Init_nodes gekennzeichnet sind. Die Boot-Methode wird aufgerufen, wenn der Knoten dem Cluster beitritt oder erneut beitritt, nachdem er gebootet oder erneut gebootet wurde.


Hinweis –

Ein Fehler der Init-, Fini- oder Boot-Methoden führt dazu, dass die syslog()-Funktion eine Fehlermeldung generiert. Die Verwaltung der Ressource durch RGM ist anderweitig nicht beeinträchtigt.


Verwaltungsunterstützungsmethoden

Verwaltungsaktionen an Ressourcen umfassen das Einstellen und Ändern von Ressourceneigenschaften. Die Validate- und Update-Rückmeldemethoden ermöglichen, dass die Ressourcentypimplementierung diese Verwaltungsaktionen durchführt.

Validate

RGM ruft diese optionale Methode auf, wenn eine Ressource erstellt wird und wenn der Cluster-Administrator die Eigenschaften der Ressource oder der enthaltenen Ressourcengruppe aktualisiert. Diese Methode wird an dem Satz Cluster-Knoten aufgerufen, die durch die Init_nodes-Eigenschaft des Ressourcentyps gekennzeichnet sind. Validate wird aufgerufen, bevor die Erstellung oder die Aktualisierung angewendet wird. Ein Fehlerbeendigungscode der Methode an einem beliebigen Knoten führt zur Unterbrechung der Erstellung oder Aktualisierung.

Validate wird nur aufgerufen, wenn die Ressourcen- oder Ressourcengruppeneigenschaften vom Cluster-Administrator geändert werden, nicht wenn sie vom RGM festgelegt werden oder wenn ein Monitor die Status- und Status_msg-Ressourceneigenschaften festlegt.

Update

RGM führt diese optionale Methode aus, um eine aktive Ressource darüber zu informieren, dass die Eigenschaften geändert wurden. RGM führt Update aus, nachdem eine Verwaltungsaktion die Eigenschaften einer Ressource oder ihrer Gruppe erfolgreich ausführt. Die Methode wird auf denjenigen Knoten aufgerufen, auf denen die Ressource online ist. Die Methode verwendet die API-Zugriffsfunktionen, um Eigenschaftswerte zu lesen, die sich auf eine aktive Ressource auswirken könnten, und um die aktive Ressource entsprechend anzupassen.


Hinweis –

Ein Fehler der Update-Methode führt dazu, dass die syslog()-Funktion eine Fehlermeldung generiert. Die Verwaltung der Ressource durch RGM ist anderweitig nicht beeinträchtigt.


Netzwerkbezogene Rückmeldemethoden

Für Dienste, die Netzwerkadressressourcen verwenden, ist es eventuell erforderlich, dass Start- oder Stop-Schritte in einer bestimmten Reihenfolge entsprechend der Netzwerkadresskonfiguration unternommen werden. Die folgenden optionalen Rückmeldemethoden, Prenet_start und Postnet_stop, ermöglichen, dass eine Ressourcentyp-Implementierung spezielle Start- und Beendigungsaktionen ausführt, bevor und nachdem eine verwandte Netzwerkadresse konfiguriert oder dekonfiguriert wird.

Prenet_start

Diese optionale Methode wird aufgerufen, um spezielle Startaktionen auszuführen, bevor Netzwerkadressen in derselben Ressourcengruppe konfiguriert werden.

Postnet_stop

Diese optionale Methode wird aufgerufen, um spezielle Beendigungsaktionen auszuführen, nachdem die Netzwerkadressen in derselben Ressourcengruppe dekonfiguriert werden.

Monitorsteuerungs-Rückmeldemethoden

Eine Ressourcentyp-Implementierung kann optional ein Programm enthalten, mit dem die Leistung einer Ressource überwacht wird, ihr Zustand gemeldet wird oder beim Fehlschlagen einer Ressource Aktionen unternommen werden. Die Monitor_start-, Monitor_stop- und Monitor_check-Methoden unterstützen die Implementierung eines Ressourcen-Monitors in einer Ressourcentyp-Implementierung.

Monitor_start

Diese optionale Methode wird aufgerufen, um einen Monitor für die Ressource zu starten, nachdem die Ressource gestartet wurde.

Monitor_stop

Diese optionale Methode wird aufgerufen, um einen Ressourcen-Monitor zu stoppen, bevor die Ressource gestoppt wird.

Monitor_check

Diese optionale Methode wird aufgerufen, um die Zuverlässigkeit eines Knotens zu bewerten, bevor eine Ressourcengruppe an diesen Knoten verschoben wird. Sie müssen die Monitor_check-Methode so implementieren, dass sie nicht mit einer gleichzeitig laufenden anderen Methode in Konflikt steht.