Guide des développeurs pour les services de données Sun Cluster pour SE Solaris

Méthode Start

Le RGM appelle la méthode Start sur un nœud du cluster lorsque le groupe de ressources contenant la ressource du service de données est connecté à ce nœud ou lorsque la ressource est activée. Dans l'application échantillon, la méthode Start active le démon in.named (système de nom de domaine) sur ce nœud.


Exemple B–2 Méthode dns_svc_start

#!/bin/ksh
#
# Méthode de démarrage (Start) de HA-DNS.
#
# Cette méthode démarre le service de données sous le contrôle de la fonction PMF. Avant de démarrer
# le processus in.named du service de noms de domaine, elle exécute
# quelques contrôles "sanitaires". La balise de la fonction PMF pour le service de données est $RESOURCE_NAME.named.
# La fonction PMF tente de démarrer le service suivant un nombre de fois spécifié  (Retry_count) et si le nombre de tentatives
# est supérieur à cette valeur dans l'intervalle de temps spécifié (Retry_interval), la fonction PMF notifie 
# un échec au démarrage du service. Retry_count et Retry_interval sont des propriétés de l'ensemble des 
# ressources du fichier RTR.


#pragma ident   “@(#)dns_svc_start   1.1   00/05/24 SMI”

###############################################################################
# Analysez les arguments du programme.
#
function parse_args # [args ...]
{
        typeset opt

        while getopts `R:G:T:' opt
        do
                case “$opt” in
                R)
                        # Nom de la ressource DNS.
                        RESOURCE_NAME=$OPTARG
                        ;;
                G)
                        # Nom du groupe de ressources dans lequel la ressource
                        # est configurée.
                        RESOURCEGROUP_NAME=$OPTARG
                        ;;
                T)
                        # Nom du type de ressources.
                        RESOURCETYPE_NAME=$OPTARG
                        ;;

                *)
                    logger -p ${SYSLOG_FACILITY}.err \
                    -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \
                    “ERROR: Option $OPTARG unknown”
                     exit 1
                     ;;

                esac
        done

}




###############################################################################
# MAIN
#
##############################################################################

export PATH=/bin:/usr/bin:/usr/cluster/bin:/usr/sbin:/usr/proc/bin:$PATH

# Obtenez la fonction syslog à utiliser pour consigner les messages.
SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY`

# Analysez les arguments qui ont été transmis à cette méthode
parse_args “$@”

PMF_TAG=$RESOURCE_NAME.named
SYSLOG_TAG=$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME

# Accédez à la valeur de la propriété Confdir de la ressource afin de démarrer le 
# service de noms de domaine. Entrez le nom de la ressource et le groupe de ressources,
# recherchez la valeur Confdir définie par l'administrateur du cluster lors de l'ajout de la ressource. 
config_info=scha_resource_get -O Extension -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAME Confdir`
# scha_resource_get retourne le “type” et la “valeur” de la propriété d'extension.
# Accédez uniquement à la valeur de la propriété d'extension.
CONFIG_DIR=`echo $config_info | awk `{print $2}'`

# Vérifiez que $CONFIG_DIR est accessible.
if [ ! -d $CONFIG_DIR ]; then
   logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
       “${ARGV0} Directory $CONFIG_DIR missing or not mounted”
   exit 1
fi

# Configurez le répertoire $CONFIG_DIR si les fichiers de données contiennent
# des noms de chemin d'accès relatifs.
cd $CONFIG_DIR

# Vérifiez que le répertoire $CONFIG_DIR contient bien le fichier named.conf.
if [ ! -s named.conf ]; then
   logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
       “${ARGV0} File $CONFIG_DIR/named.conf is missing or empty”
   exit 1
fi

# Accédez à la valeur Retry_count à partir du fichier RTR.
RETRY_CNT=`scha_resource_get -O Retry_Count -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAMÈ

# Accédez à la valeur Retry_interval à partir du fichier RTR. Convertissez cette valeur, à la base en
# secondes, en minutes pour le transfert vers pmfadm. Veuillez noter qu'il s'agit d'une conversion avec arrondissement :
# par exemple, 50 secondes devient 1 minutes.
((RETRY_INTRVAL = `scha_resource_get -O Retry_Interval -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAMÈ 60))

# Démarrez le démon in.named sous le contrôle de la fonction PMF. Laissez-le
# s'interrompre et redémarrer jusqu'à ce que la valeur $RETRY_COUNT dans l'intervalle $RETRY_INTERVAL soit atteinte. En cas d'autre échec,
# la fonction PMF cesse d'essayer de le redémarrer. Si un processus est déjà enregistré sous la balise 
# <$PMF_TAG>, la fonction PMF envoie un message d'alerte indiquant 
# que le processus est toujours opérationnel.
echo “Retry interval is “$RETRY_INTRVAL
pmfadm -c $PMF_TAG.named -n $RETRY_CNT -t $RETRY_INTRVAL \
    /usr/sbin/in.named -c named.conf

# Consignez un message indiquant que HA-DNS a démarré.
if [ $? -eq 0 ]; then
   logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \
           “${ARGV0} HA-DNS successfully started”
fi
exit 0