Der GDS ist ein Mechanismus, um einfache Anwendungen mit und ohne Netzwerkunterstützung hoch verfügbar oder skalierbar zu machen, indem sie auf das Sun Cluster-RGM-Framework aufgesetzt werden (Resource Group Management, Ressourcengruppenverwaltung). Bei diesem Mechanismus müssen Sie keinen Datendienst kodieren, was in der Regel erforderlich ist, wenn Sie eine Anwendung hoch verfügbar oder skalierbar machen möchten.
Der GDS ist ein einzelner, vorkompilierter Datendienst. Sie können den vorkompilierten Datendienst und seine Komponenten, die Rückmeldemethodenimplementierung (rt_callbacks) und die Ressourcentyp-Registrierungsdatei (rt_reg) nicht ändern.
In diesem Abschnitt werden die folgenden Themen behandelt:
Vorkompilierter Ressourcentyp
Vorteile und Nachteile der Verwendung des GDS
Erstellungsarten eines Dienstes, der GDS verwendet
Ereignisprotokolliermethoden des GDS
Erforderliche GDS-Eigenschaften
Optionale GDS-Eigenschaften
Der Ressourcentyp des generischen Datendienstes SUNW.gds ist im Lieferumfang des SUNWscgds-Pakets enthalten. Dieses Paket wird während der Cluster-Installation vom Dienstprogramm scinstall installiert. Weitere Informationen finden Sie in der Online-Dokumentation zu scinstall(1M). Das SUNWscgds-Paket umfasst die folgenden Dateien:
# pkgchk -v SUNWscgds /opt/SUNWscgds /opt/SUNWscgds/bin /opt/SUNWscgds/bin/gds_monitor_check /opt/SUNWscgds/bin/gds_monitor_start /opt/SUNWscgds/bin/gds_monitor_stop /opt/SUNWscgds/bin/gds_probe /opt/SUNWscgds/bin/gds_svc_start /opt/SUNWscgds/bin/gds_svc_stop /opt/SUNWscgds/bin/gds_update /opt/SUNWscgds/bin/gds_validate /opt/SUNWscgds/etc /opt/SUNWscgds/etc/SUNW.gds |
Die Verwendung des GDS hat gegenüber Agent Builder-Quellcode (siehe Online-Dokumentation zu scdscreate(1HA)) oder Sun Cluster-Verwaltungsbefehlen folgende Vorteile :
Der GDS ist einfach zu verwenden.
Der GDS und seine Methoden sind vorkompiliert und können daher nicht geändert werden.
Zum Erstellen von Skripts für Ihre Anwendung können Sie Agent Builder verwenden. Die Skripts werden in einem Solaris-Installationspaket zusammengestellt, das auf mehreren Clustern wieder verwendet werden kann.
Obwohl die Verwendung des GDS viele Vorteile hat, ist der GDS für folgende Fälle nicht der richtige Mechanismus:
Wenn mehr Steuerung erforderlich ist als mit dem vorkompilierten Ressourcentyp zur Verfügung steht, also wenn Sie Erweiterungseigenschaften hinzufügen oder Standardwerte ändern möchten.
Wenn der Quellcode geändert werden muss, um besondere Funktionen hinzuzufügen.
Es gibt zwei Möglichkeiten zum Erstellen eines Dienstes, der den GDS verwendet:
Agent Builder
Sun Cluster-Verwaltungsbefehle
Verwenden Sie Agent Builder und wählen Sie den GDS als generierten Quellcodetyp aus. Die Benutzereingabe wird für das Generieren einer Reihe von Skripts verwendet, die Ressourcen für die entsprechende Anwendung konfigurieren.
Bei dieser Methode wird der vorkompilierte Datendienstcode in SUNWscgds verwendet. Der Cluster-Administrator muss jedoch die Sun Cluster-Verwaltungsbefehle zum Erstellen und Konfigurieren der Ressource verwenden. Weitere Informationen finden Sie in der Online-Dokumentation zu scrgadm(1M) und scswitch(1M).
Es ist ein erheblicher Eingabeaufwand erforderlich, um die richtigen scrgadm- und scswitch-Befehle auszuführen. Weitere Informationen finden Sie in den Abschnitten So verwenden Sie Sun Cluster-Verwaltungsbefehle zum Erstellen eines hoch verfügbaren Dienstes, der den GDS verwendet. und So verwenden Sie Sun Cluster-Verwaltungsbefehle zum Erstellen eines Scalable-Dienstes, der den GDS verwendet..
Die Verwendung des GDS mit Agent Builder vereinfacht den Prozess, da dadurch die Skripts generiert werden, welche die Befehle scrgadm und scswitch für Sie ausgeben.
Mit dem GDS können Sie die relevanten Informationen protokollieren, die vom GDS an die vom GDS gestarteten Skripts übergeben werden. Diese Informationen umfassen den Status der Start-, Testsignal- und Stopp-Methoden sowie die Eigenschaftsvariablen. Sie können diese Informationen für die Diagnose von Problemen oder Fehlern in Ihren Skripten verwenden oder sie für andere Zwecke anwenden.
Sie verwenden die Log_level-Eigenschaft, die unter Log_level-Eigenschaft beschrieben wird, um die Stufe oder den Typ der Meldungen festzulegen, die vom GDS protokolliert werden sollen. Sie können NONE, INFO oder ERRangeben.
Die beiden folgenden GDS-Protokolldateien werden im Verzeichnis /var/cluster/logs/DS/Ressourcengruppenname/Ressourcenname abgelegt:
start_stop_log.txt, die Meldungen enthält, die von den Start- und Stopp-Methoden der Ressource generiert werden
probe_log.txt, die Meldungen enthält, die vom Ressourcen-Monitor generiert werden
Folgendes Beispiel zeigt die Arten von Informationen, die in start_stop_log.txt enthalten sind:
10/20/2005 12:38:05 phys-node-1 START-INFO> Start succeeded. [/home/brianx/sc/start_cmd] 10/20/2005 12:42:11 phys-node-1 STOP-INFO> Successfully stopped the application
Folgendes Beispiel zeigt die Arten von Informationen, die in probe_log.txt enthalten sind:
10/20/2005 12:38:15 phys-node-1 PROBE-INFO> The GDS monitor (gds_probe) has been started 10/20/2005 12:39:15 phys-node-1 PROBE-INFO> The probe result is 0 10/20/2005 12:40:15 phys-node-1 PROBE-INFO> The probe result is 0 10/20/2005 12:41:15 phys-node-1 PROBE-INFO> The probe result is 0
Wenn Ihre Anwendung Netzwerkunterstützung bietet, müssen Sie sowohl die Erweiterungseigenschaft Start_command und Port_list angeben. Wenn Ihre Anwendung keine Netzwerkunterstützung bietet, müssen Sie lediglich die Erweiterungseigenschaft Start_command angeben.
Der start-Befehl, den Sie in der Erweiterungseigenschaft Start_command angeben, startet die Anwendung. Dabei muss es sich um einen UNIX-Befehl zusammen mit den entsprechenden Argumenten handeln, die direkt an eine Shell übergeben werden können, um die Anwendung zu starten.
Die Eigenschaft Port_list identifiziert die Liste von Ports, die von der Anwendung abgehört werden. Die Port_list-Eigenschaft muss im Start-Skript angegeben werden, das von SunPlex Agent Builder erstellt wird, bzw. im scrgadm-Befehl, wenn Sie die Standardverwaltungsbefehle von Sun Cluster verwenden.
Optionale GDS-Eigenschaften sind u.a. systemdefinierte Eigenschaften und Erweiterungseigenschaften. Bei den systemdefinierten Eigenschaften handelt es sich um einen von Sun Cluster bereitgestellten Standardsatz von Eigenschaften. Eigenschaften, die in der RTR-Datei definiert sind, werden als Erweiterungseigenschaften bezeichnet. Im Folgenden erhalten Sie eine Liste optionaler GDS-Eigenschaften:
Network_resources_used-Eigenschaft
Stop_command-Erweiterungseigenschaft
Probe_command-Erweiterugnseigenschaft
Start_timeout-Eigenschaft
Stop_timeout-Eigenschaft
Probe_timeout-Erweiterungseigenschaft
Child_mon_level-Erweiterungseigenschaft (wird nur mit den Verwaltungsbefehlen verwendet)
Failover_enabled-Erweiterungseigenschaft
Stop_signal-Erweiterungseigenschaft
Log_level-Erweiterungseigenschaft
Der Standardwert für diese Eigenschaft ist null. Diese Eigenschaft muss angegeben werden, wenn die Anwendung an eine oder mehrere spezifische Adressen gebunden werden muss. Wenn diese Eigenschaft ausgelassen oder als null festgelegt wird, wird angenommen, dass die Anwendung alle Adressen abhören soll.
Vor Erstellung der GDS-Ressource muss bereits eine LogicalHostname- oder SharedAddress-Ressource konfiguriert worden sein. Im Sun Cluster Data Services Planning and Administration Guide for Solaris OS finden Sie Informationen zum Konfigurieren einer LogicalHostname- oder SharedAddress-Ressource.
Zum Festlegen eines Wertes geben Sie einen oder mehrere Ressourcennamen an. Jeder Ressourcenname kann einen oder mehrere LogicalHostname bzw. eine oder mehrere SharedAddress-Ressourcen enthalten. Weitere Informationen finden Sie in der Online-Dokumentation zu r_properties(5).
Der Stopp-Befehl muss die Anwendung beenden und wird nur zurückgegeben, nachdem die Anwendung vollständig beendet wurde. Bei diesem Befehl muss es sich um einen vollständigen UNIX-Befehl handeln, der direkt an die Shell übergeben werden kann, um die Anwendung zu beenden.
Wenn die Stop_command-Erweiterungseigenschaft angegeben ist, startet Stopp-Methode des GDS den Stop-Befehl mit 80 Prozent der Stopp-Zeitüberschreitung. Unabhängig vom Ergebnis der Ausgabe des Stopp-Befehls sendet die Stopp-Methode des GDS SIGKILL mit 15% der Stopp-Zeitüberschreitung. Die restlichen 5% der Zeit werden für Systemverwaltungsaufwand reserviert.
Wenn der Stopp-Befehl ausgelassen wird, versucht der GDS die Anwendung mit dem unter Stop_signal angegebenen Signal zu stoppen.
Der Testsignal-Befehl prüft den Zustand einer bestimmten Anwendung in regelmäßigen Zeitabständen. Dabei muss es sich um einen UNIX-Befehl zusammen mit den entsprechenden Argumenten handeln, der zum Testen der Anwendung direkt an eine Shell übergeben werden kann. Der Testsignal-Befehl wird mit einem Beendigungsstatus von 0 ausgegeben, wenn die Anwendung ordnungsgemäß ausgeführt wird.
Der Beendigungsstatus des Testsignal-Befehls wird verwendet, um den Schweregrad des Anwendungsfehlers zu ermitteln. Dieser Beendigungsstatus, der als Testsignal-Status bezeichnet wird, muss eine Ganzzahl zwischen 0 (Erfolg) und 100 (Totalfehlschlag) sein. Beim Testsignal-Status kann es sich auch um einen besonderen Wert von 201 handeln, der zu einem unmittelbaren Anwendungs-Failover führt, wenn Failover_enabled nicht auf FALSE gesetzt ist. Der GDS-Testsignal-Algorithmus verwendet den Testsignal-Status, um zu ermitteln, ob die Anwendung lokal neu gestartet werden soll oder ob ein Failover erfolgen soll. Weitere Informationen finden Sie in der Online-Dokumentation zu scds_fm_action(3HA). Wenn der Beendigungsstatus 201 ist, wird für die Anwendung ein sofortiges Failover ausgeführt.
Wenn der Testsignal-Befehl ausgelassen wird, verwendet der GDS ein eigenes einfaches Testsignal. Dieses Testsignal stellt eine Verbindung mit der Anwendung an dem Satz von IP-Adressen her, der von der Network_resources_used-Eigenschaft oder von der Ausgabe der scds_get_netaddr_list()-Funktion abgeleitet wird. Weitere Informationen finden Sie in der Online-Dokumentation zu scds_get_netaddr_list(3HA). Wenn die Verbindung erfolgreich ist, wird die Verbindung sofort getrennt. Wenn sowohl die Verbindung als auch die Verbindungstrennung erfolgreich sind, sollte die Anwendung ordnungsgemäß ausgeführt werden.
Das Testsignal des GDS ist nur ein einfacher Ersatz für das anwendungsspezifische Testsignal mit vollem Funktionsumfang.
Diese Eigenschaft legt die Start-Zeitüberschreitung für den Start-Befehl fest. Weitere Informationen finden Sie im Abschnitt Start_command-Erweiterungseigenschaft. Der Standardwert für Start_timeout ist 300 Sekunden.
Diese Eigenschaft gibt die Stopp-Zeitüberschreitung für den Stopp-Befehl an. Weitere Informationen finden Sie im Abschnitt Stop_command-Eigenschaft. Der Standardwert für Stop_timeout ist 300 Sekunden.
Diese Eigenschaft legt den Zeitüberschreitungswert für den Testsignalbefehl fest. Weitere Informationen finden Sie im Abschnitt Probe_command-Eigenschaft. Der Standardwert für Probe_timeout ist 30 Sekunden.
Wenn Sie mit Sun Cluster-Verwaltungsbefehlen arbeiten, können Sie die Child_mon_level-Eigenschaft verwenden. Wenn Sie mit Agent Builder arbeiten, können Sie diese Eigenschaft nicht verwenden.
Mit dieser Eigenschaft können die Prozesse gesteuert werden, die von Process Monitor Facility (PMF) überwacht werden. Diese Eigenschaft gibt die Ebene an, bis zu der die untergeordneten Prozesse überwacht werden. Diese Eigenschaft hat dieselbe Wirkung wie das -C-Argument für den pmfadm-Befehl. Weitere Informationen finden Sie in der Online-Dokumentation zu pmfadm(1M).
Wenn diese Eigenschaft ausgelassen bzw. der Standardwert auf -1 gesetzt wird, hat dies die gleiche Wirkung wie das Auslassen der Option -C im Befehl pmfadm. Das bedeutet, dass alle untergeordneten Prozesse und deren Folgeprozesse überwacht werden.
Diese boolesche Erweiterungseigenschaft steuert das Failover-Verhalten der Ressource. Wenn diese Erweiterungseigenschaft auf TRUE gesetzt ist, findet ein Anwendungs-Failover statt, sobald die Anzahl der Neustarts den Wert für Retry_count innerhalb der unter Retry_interval angegebenen Anzahl Sekunden überschreitet.
Wenn diese Eigenschaft auf FALSE gesetzt ist, startet die Anwendung nicht neu bzw. führt keinen Failover an einen anderen Knoten aus, wenn die Anzahl der Neustarts den Wert von Retry_count innerhalb der unter Retry_interval angegebenen Anzahl Sekunden überschreitet.
Diese Erweiterungseigenschaft kann verwendet werden, um zu verhindern, dass die Anwendungsressource ein Failover der Ressourcengruppe einleitet. Der Standardwert für diese Eigenschaft lautet TRUE.
Der GDS verwendet den Wert dieser Ganzzahl-Erweiterungseigenschaft, um das Signal zu ermitteln, das zum Stoppen der Anwendung mit der PMF verwendet wird. Eine Liste der Ganzzahlwerte, die Sie angeben können, finden Sie in der Online-Dokumentation zu signal(3HEAD). Der Standardwert lautet 15 (SIGTERM ).
Diese Eigenschaft gibt die Stufe oder den Typ der Diagnosemeldungen an, die vom GDS protokolliert werden. Für diese Eigenschaft können Sie NONE, INFO oder ERR angeben. Wenn Sie NONE angeben, werden vom GDS keine Diagnosemeldungen protokolliert. Wenn Sie INFO angeben, werden lediglich Informationsmeldungen protokolliert. Wenn Sie ERR festlegen, werden lediglich Fehlermeldungen protokolliert. Der GDS protokolliert standardmäßig keine Diagnosemeldungen (NONE).