Die Stop-Methode wird auf einem Cluster-Knoten aufgerufen, wenn die Ressourcengruppe mit der HA-DNS-Ressource auf diesem Knoten offline gebracht bzw. 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
|