RGM ruft die Start-Methode auf einem Cluster-Knoten auf, wenn die Ressourcengruppe, welche die Datendienstressource enthält, auf diesem Knoten online gebracht wird bzw. wenn die Ressource aktiviert wird. In der Beispielanwendung aktiviert die Start-Methode den in.named (DNS)-Dämon auf diesem Knoten.
#!/bin/ksh
#
# Start-Methode für HA-DNS.
#
# Diese Methode startet den Datendienst unter der Steuerung von PMF.
# Vor dem Starten des in.named-Prozesses für DNS werden einige Kontrollprüfungen
# ausgeführt. Die PMF-Markierung für den Datendienst ist $RESOURCE_NAME.named.
# PMF versucht eine angegebene Anzahl von Malen (Retry_count), den Dienst zu starten.
# Wenn die Anzahl der Versuche diesen Wert innerhalb eines bestimmten Zeitintervalls
# (Retry_interval) überschreitet, berichtet PMF, dass der Start des Dienstes
# fehlgeschlagen ist. Sowohl Retry_count als auch Retry_interval sind Eigenschaften
# der in der RTR-Datei eingestellten Ressource.
#pragma ident “@(#)dns_svc_start 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 abrufen, 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
# Wert der Confdir-Eigenschaft der Ressource abrufen, um DNS zu starten.
# Unter Verwendung des eingegebenen Ressourcennamens und der Ressourcengruppe
# wird der Wert von Confdir gesucht. Dieser Wert wird vom Cluster-Verwalter
# eingestellt, wenn er die Ressource hinzufügt.
config_info=`scha_resource_get -O Extension -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAME Confdir`
# scha_resource_get gibt sowohl den “Typ” als auch den
# “Wert” der Erweiterungseigenschaften
# zurück. Nur den Wert der Erweiterungseigenschaft abrufen.
CONFIG_DIR=`echo $config_info | awk `{print $2}'`
# Prüfen, ob der Zugriff auf $CONFIG_DIR möglich ist.
if [ ! -d $CONFIG_DIR ]; then
logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
“${ARGV0} Verzeichnis $CONFIG_DIR fehlt oder nicht eingehängt”
exit 1
fi
# Zum Verzeichnis $CONFIG_DIR wechseln, falls die Datendateien relative
# Pfadnamen enthalten.
cd $CONFIG_DIR
# Prüfen, ob die named.conf-Datei im Verzeichnis $CONFIG_DIR vorhanden ist.
if [ ! -s named.conf ]; then
logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
“${ARGV0} Datei $CONFIG_DIR/named.conf fehlt oder ist leer”
exit 1
fi
# Wert für Retry_count aus der RTR-Datei abrufen.
RETRY_CNT=`scha_resource_get -O Retry_Count -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAMÈ
# Wert für Retry_interval aus der RTR-Datei abrufen. Dieser Wert in
# Sekunden wird für die Weitergabe an pmfadm in Minuten konvertiert.
# Beachten Sie, dass bei dieser Konvertierung gerundet wird, so
# dass z. B. 50 Sekunden auf eine Minute gerundet werden.
((RETRY_INTRVAL = `scha_resource_get -O Retry_Interval -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAMÈ 60))
# in.named-Dämon unter Steuerung von PMF starten. Bis zu
# $RETRY_COUNT Male in einem Zeitraum von $RETRY_INTERVAL abstürzen lassen
# und neu starten; wenn er öfter abstürzt, versucht PMF keinen
# Neustart mehr. Wenn bereits ein Prozess unter der Markierung
# <$PMF_TAG> registriert ist, dann sendet PMF eine Warnmeldung,
# dass der Prozess bereits läuft.
echo “Wiederholungsintervall ist “$RETRY_INTRVAL
pmfadm -c $PMF_TAG.named -n $RETRY_CNT -t $RETRY_INTRVAL \
/usr/sbin/in.named -c named.conf
# Meldung protokollieren, die angibt, dass HA-DNS gestartet wurde.
if [ $? -eq 0 ]; then
logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG]\
“${ARGV0} HA-DNS wurde erfolgreich gestartet”
fi
exit 0
|