Si la variable probefail es distinta de 0 (satisfactorio), significa que la orden nslookup agotó el tiempo de espera o que la respuesta ha provenido de un servidor diferente de DNS del servicio de ejemplo. En ambos casos, el servidor de DNS no funciona como debería y el supervisor de fallos invoca la función decide_restart_or_failover() para determinar si se debe reiniciar el servicio de datos localmente o solicitar que RGM reubique el servicio de datos en otro nodo. Si la variable probefail es 0, se genera un mensaje que indica que el análisis ha sido satisfactorio.
if [ $probefail -ne 0 ]; then decide_restart_or_failover else logger -p ${SYSLOG_FACILITY}.err\ -t [$SYSLOG_TAG]\ "${ARGV0} Análisis del recurso HA-DNS satisfactorio" fi |
La función decide_restart_or_failover() utiliza una ventana de tiempo (Retry_interval) y un recuento de fallos (Retry_count) para determinar si debe reiniciar el DNS localmente o solicitar que RGM reubique el servicio de datos en otro nodo. Implementa el siguiente código condicional (consulte la lista de códigos para decide_restart_or_failover() en Programa PROBE).
Si es el primer fallo, se reinicia el servicio de datos. Se registra un mensaje de error y se detiene el contador de la variable retries.
Si no es el primer fallo, pero se ha superado la ventana de tiempo, se reinicia el servicio de datos. Se registra un mensaje de error, se pone a cero el contador y se desliza la ventana.
Si el tiempo sigue dentro de la ventana y el contador de reintentos se ha superado, se produce una recuperación de fallos a otro nodo. Si la operación de recuperación de fallos no es satisfactoria, se registra un error y se sale del programa de análisis con el estado 1 (fallo).
Si el tiempo sigue dentro de la ventana, pero no se ha superado el contador de reintentos, se reinicia el servicio de datos. Se registra un mensaje de error y se detiene el contador de la variable retries.
Si el número de reinicios alcanza el límite durante el intervalo de tiempo, la función solicita que RGM reubique el servicio de datos en otro nodo. Si el número de reinicios está dentro del límite o se ha superado el intervalo, por lo que el recuento vuelve a empezar, la función intenta reiniciar DNS en el mismo nodo. Sobre esta función debe tener en cuenta lo siguiente:
La utilidad gettime se utiliza para realizar un seguimiento del tiempo entre los reinicios. Se trata de un programa de C que reside en el directorio (Rt_basedir).
Las propiedades definidas por el sistema Retry_count y Retry_interval determinan el número de intentos de reinicio y el intervalo en el que se deben realizar. Estas propiedades toman el valor predeterminado de 2 intentos en un periodo de 5 minutos (300 segundos) en el archivo RTR, aunque el administrador del clúster puede cambiarlo.
La función restart_service() se invoca para reiniciar el servicio de datos en el mismo nodo. Consulte la sección siguiente, Reinicio del servicio de datos, para obtener información sobre esta función.
La función de API scha_control(), con la opción GIVEOVER, pone el grupo de recursos que contiene el servicio de datos de ejemplo fuera de línea y lo vuelve a poner en línea en otro nodo.