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 “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 |