Si la variable probefail tiene un valor diferente a 0 (éxito), se agota el tiempo de espera del comando nslookup o la respuesta proviene de un servidor diferente al servidor 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 en el que se indica que el análisis se ha realizado satisfactoriamente.
if [ $probefail -ne 0 ]; then decide_restart_or_failover else logger -p ${SYSLOG_FACILITY}.err\ -t [$SYSLOG_TAG]\ "${ARGV0} Probe for resource HA-DNS successful" fi
La función decide_restart_or_failover() utiliza un intervalo de tiempo (Retry_interval) y un recuento de fallos (Retry_count) para determinar si se debe reiniciar localmente DNS o solicitar que RGM reubique el servicio de datos en un nodo diferente. Esta función implementa la siguiente lógica condicional. El código se incluye en el listado de decide_restart_or_failover() en Listado de código del 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 se encuentra aún dentro del intervalo y se ha superado el contador de reintentos, se realiza una recuperación ante fallos en otro nodo. Si esta recuperación no se realiza con éxito, se registra un error y el programa de análisis sale 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 restablece el contador en 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 C ubicado en el directorio (RT_basedir )..
Las propiedades definidas por el sistema Retry_count y Retry_interval determinan el número de reinicios y el intervalo de tiempo durante el que se realiza un recuento de los mismos. Estas propiedades se configuran de forma predeterminada en 2 intentos de reinicio en un periodo de 5 minutos (300 segundos) en el archivo RTR, aunque el administrador del clúster pueda cambiar estos valores.
La función restart_service() se invoca para reiniciar el servicio de datos en el mismo nodo. Consulte la siguiente sección, Reinicio del servicio de datos, para obtener información sobre esta función.
La función scha_control() de la API, con la opción GIVEOVER, pone fuera de línea el grupo de recursos que contiene el servicio de datos de ejemplo y lo vuelve a establecer en línea en un nodo diferente.