Die Stop-Methode wird auf einem Cluster-Knoten aufgerufen, wenn die Ressourcengruppe, welche die HA-DNS-Ressource enthält, auf diesem Knoten offline gebracht bzw. wenn die Ressource deaktiviert wird. Diese Methode stoppt den in.named (DNS)-Dämon auf dem Knoten.
#!/bin/ksh # # Stopp-Methode für HA-DNS # # Stoppt den Datendienst mithilfe von PMF. Wenn der Dienst nicht läuft, wird die # Methode mit Status 0 beendet, da die Rückgabe eines anderen Wertes die # Ressource in STOP_FAILED-Zustand versetzt. #pragma ident “@(#)dns_svc_stop 1.1 00/05/24 SMI” ############################################################################### # Programmargumente analysieren. # function parse_args # [args ...] { typeset opt while getopts `R:G:T:' opt do case “$opt” in R) # Name der DNS-Ressource. RESOURCE_NAME=$OPTARG ;; G) # Name der Ressourcengruppe, in der die Ressource # konfiguriert ist. RESOURCEGROUP_NAME=$OPTARG ;; T) # Name des Ressourcentyps. RESOURCETYPE_NAME=$OPTARG ;; *) logger -p ${SYSLOG_FACILITY}.err \ -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME]\ \ “FEHLER: Option $OPTARG unbekannt” exit 1 ;; esac done } ############################################################################### # MAIN # ############################################################################## export PATH=/bin:/usr/bin:/usr/cluster/bin:/usr/sbin:/usr/proc/bin:$PATH # syslog-Funktion aufrufen, mit der Meldungen protokolliert werden. SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY` # Argumente analysieren, die an diese Methode übergeben wurden parse_args “$@” PMF_TAG=$RESOURCE_NAME.named SYSLOG_TAG=$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME # Stop_timeout-Wert aus der RTR-Datei abrufen. STOP_TIMEOUT=`scha_resource_get -O STOP_TIMEOUT -R $RESOURCE_NAME -G \ $RESOURCEGROUP_NAMÈ # Versuchen, den Datendienst unter Verwendung eines SIGTERM # -Signals über PMF ordnungsgemäß zu stoppen. Bis zu 80% des Stop_timeout-Werts # warten, um zu sehen, ob SIGTERM den Datendienst erfolgreich stoppen kann. Andernfalls # SIGKILL senden, um den Datendienst zu stoppen. Bis zu 15% des Stop_timeout-Wertes # warten, um zu sehen, ob SIGKILL erfolgreich ist. Andernfalls ist ein Fehlschlag # aufgetreten, und die Methode wird in einem Nicht-Null-Status beendet. # Die restlichen 5% von Stop_timeout werden für andere Zwecke verwendet. ((SMOOTH_TIMEOUT=$STOP_TIMEOUT * 80/100)) ((HARD_TIMEOUT=$STOP_TIMEOUT * 15/100)) # Überprüfen, ob in.named läuft. Falls ja, Abbruch erzwingen. if pmfadm -q $PMF_TAG.named; then # SIGTERM-Signal an den Datendienst senden und bis zu 80% des # gesamten Zeitüberschreitungswertes warten. pmfadm -s $PMF_TAG.named -w $SMOOTH_TIMEOUT TERM if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.info -t [SYSLOG_TAG] \ “${ARGV0} HA-DNS konnte nicht mit SIGTERM gestoppt werden; Wiederholen mit \ SIGKILL” # Da der Datendienst mit einem SIGTERM-Signal nicht gestoppt wurde, # jetzt SIGKILL verwenden und nochmals 15% des gesamten # Zeitüberschreitungswertes warten. pmfadm -s $PMF_TAG.named -w $HARD_TIMEOUT KILL if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err -t [SYSLOG_TAG] \ “${ARGV0} HA-DNS konnte nicht gestoppt werden; Beenden OHNE ERFOLG” exit 1 fi fi else # Der Datendienst läuft nun nicht mehr. Meldung protokollieren und # mit Erfolg beenden. logger -p ${SYSLOG_FACILITY}.info -t [SYSLOG_TAG] \ “HA-DNS ist nicht gestartet” # Auch wenn HA-DNS nicht läuft, wird mit Erfolg beendet, damit der Datendienst # nicht in einen STOP_FAILED-Zustand versetzt wird. exit 0 fi # DNS erfolgreich gestoppt. Meldung protokollieren und mit Erfolg beenden. logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \ “HA-DNS erfolgreich gestoppt” exit 0 |