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.
#!/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 “Retry interval is “$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 iniciado satisfactoriamente”
fi
exit 0
|