Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Die Start-Methode

Die Start-Rückmeldemethode einer Ressourcentypimplementierung wird von RGM auf einem bestimmten Cluster-Knoten aufgerufen, um die Ressource zu starten. Der Ressourcengruppenname, der Ressourcenname und der Ressourcentypname werden an die Befehlszeile übergeben. Die Start-Methode soll die erforderlichen Aktionen ausführen, um eine Datendienstressource auf dem Cluster-Knoten zu starten. In der Regel müssen hierfür die Ressourceneigenschaften abgerufen, die anwendungsspezifischen ausführbaren Dateien und/oder Konfigurationsdateien gesucht und die Anwendung mit den entsprechenden Befehlszeilenargumenten gestartet werden.

Bei Einsatz der DSDL wird die Ressourcenkonfiguration bereits von dem scds_initialize()-Dienstprogramm abgerufen. Die Startaktion für die Anwendung kann in einer svc_start()-Funktion enthalten sein. Eine weitere Funktion, svc_wait(), kann aufgerufen werden, um zu überprüfen, dass die Anwendung tatsächlich startet. Der vereinfachte Code für die Start-Methode sieht folgendermaßen aus:


int
main(int argc, char *argv[])
{
   scds_handle_t handle;

   if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
   return (1);   /* Initialisierungsfehler */
   }
   if (svc_validate(handle) != 0) {
   return (1);   /* Ungültige Einstellungen */
   }
   if (svc_start(handle) != 0) {
   return (1);   /* Start fehlgeschlagen */
   }
   return (svc_wait(handle));
}

Diese Start-Methodenimplementierung ruft svc_validate()auf, um die Ressourcenkonfiguration zu validieren. Falls sie fehlschlägt, entspricht entweder die Ressourcenkonfiguration nicht der Anwendungskonfiguration, oder es besteht zurzeit auf diesem Cluster-Knoten ein Problem bezüglich des Systems. Es kann zum Beispiel sein, dass ein für die Ressource erforderliches globales Dateisystem zurzeit auf diesem Cluster-Knoten nicht verfügbar ist. In diesem Fall ist jeder Startversuch der Ressource auf diesem Cluster-Knoten zwecklos. Stattdessen sollte RGM versuchen, die Ressource auf einem anderen Knoten zu starten. Beachten Sie jedoch, dass in obigem Beispiel davon ausgegangen wird, dass svc_validate () ausreichend konservativ ist, also nur die Ressourcen auf dem Cluster-Knoten prüft, die für die Anwendung unbedingt erforderlich sind. Andernfalls kann der Start der Ressource auf allen Cluster-Knoten fehlschlagen, und sie wird in den START_FAILED-Zustand versetzt. In scswitch( 1M) und Sun Cluster Data Services Planning and Administration Guide for Solaris OS finden Sie eine Erläuterung dieses Zustands.

Die svc_start()-Funktion muss 0 für ein erfolgreiches Starten der Ressource auf dem Knoten zurückgeben. Wenn die Startfunktion auf ein Problem stößt, muss sie einen Wert ungleich Null zurückgeben. Bei Fehlschlagen dieser Funktion versucht RGM, die Ressource auf einem anderen Cluster-Knoten zu starten.

Um die DSDL so weit wie möglich zu nutzen, kann die svc_start()-Funktion das Dienstprogramm scds_pmf_start() verwenden, um die Anwendung unter PMF (Process Management Facility) zu starten. Dieses Dienstprogramm setzt auch die Fehlschlag-Rückmeldeaktion von PMF ein (siehe Aktions-Flag -a in pmfadm( 1M)), um die Prozessfehlschlagerkennung zu implementieren.