Sun Cluster: Guía del desarrollador de los servicios de datos del sistema operativo Solaris

Método Start

RGM invoca el método Start en un nodo del clúster cuando el grupo de recursos que contiene el recurso de servicio de datos se pone en línea en ese nodo o cuando se habilita el recurso. En la aplicación de ejemplo, el método Start activa el daemon in.named (DNS) en ese nodo.


Ejemplo B–2 Método dns_svc_start

#!/bin/ksh
#
# Método Start para HA-DNS.
#
#
# Este método inicia el servicio de datos bajo control de PMF. Antes de
# empezar el proceso in.named para DNS, realiza ciertas verificaciones de
# estado. La etiqueta de PMF para el servicio de datos es $RESOURCE_NAME.named.
# PMF intenta iniciar el servicio un número especificado de veces (Retry_count)
# y si el número de intentos supera este valor en un intervalo especificado
# (Retry_interval) PMF informa de que se ha producido un fallo al iniciar
# el servicio. Retry_count y Retry_interval son propiedades del recurso
# establecido en el archivo RTR.


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

###############################################################################
# Analizar argumentos de programa.
#
function parse_args # [args ...]
{
        typeset opt

        while getopts `R:G:T:' opt
        do
                case “$opt” in
                R)
                        # Nombre del recurso de DNS.
                        RESOURCE_NAME=$OPTARG
                        ;;
                G)
                        # Nombre del grupo de recursos en el que se configura
                        # el recurso.
                        RESOURCEGROUP_NAME=$OPTARG
                        ;;
                T)
                        # Nombre del tipo de recurso.
                        RESOURCETYPE_NAME=$OPTARG
                        ;;

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

                esac
        done

}




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

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

# Obtener el recurso syslog que hay que utilizar para registrar mensajes.
SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY`

# Analizar los argumentos que se han pasado a este método
parse_args “$@”

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

# Obtener el valor de la propiedad Confdir del recurso para iniciar DNS.
# Con el nombre de recurso y el grupo de recursos introducidos, buscar
# el valor de Confdir fijado por el administrador de clúster al agregar el
# recurso.
config_info=scha_resource_get -O Extension -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAME Confdir`
# scha_resource_get devuelve el “tipo” y el ”valor” de las propiedades de
# extensión. Obtener sólo el valor de la propiedad de extensión.
CONFIG_DIR=`echo $config_info | awk `{print $2}'`

# Comprobar si $CONFIG_DIR es accesible.
if [ ! -d $CONFIG_DIR ]; then
   logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
       “${ARGV0} Directorio $CONFIG_DIR falta o no está montado”
   exit 1
fi

# Cambiar al directorio $CONFIG_DIR en caso de que haya nombres de ruta
# relativos en los archivos de datos.
cd $CONFIG_DIR

# Comprobar que el archivo named.conf esté presente en el directorio $CONFIG_DIR.
if [ ! -s named.conf ]; then
   logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
       “${ARGV0} El archivo $CONFIG_DIR/named.conf falta o está vacío”
   exit 1
fi

# Obtener el valor de Retry_count del archivo RTR.
RETRY_CNT=`scha_resource_get -O Retry_Count -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAMÈ

# Obtener el valor de Retry_interval del archivo RTR. Convertir este valor, que
# está en segundos, a minutos para pasarlo a pmfadm. Observar que es una
# conversión con redondeo, por ejemplo, 50 segundos se redondea a un minuto.
((RETRY_INTRVAL = `scha_resource_get -O Retry_Interval -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAMÈ 60))

# Iniciar el daemon in.named bajo el control del PMF. Permitir una caída y reiniciar
# hasta $RETRY_COUNT veces en un periodo de $RETRY_INTERVAL; si se cae más a menudo,
# PMF dejará de intentar reiniciarlo. Si hay un proceso ya registrado con
# la etiqueta <$PMF_TAG>, PMF enviará un mensaje de alerta indicando que el proceso
# ya está en ejecución.
echo “Intervalo de reintento es “$RETRY_INTRVAL
pmfadm -c $PMF_TAG.named -n $RETRY_CNT -t $RETRY_INTRVAL \
    /usr/sbin/in.named -c named.conf

# Registrar un mensaje que indique que se ha iniciado HA-DNS.
if [ $? -eq 0 ]; then
   logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \
           “${ARGV0} HA-DNS successfully started”
fi
exit 0