Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Start-Methode

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.


Beispiel B–2 dns_svc_start-Methode

#!/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