El ILB proporciona los siguientes tipos de comprobaciones de estado del servidor opcionales:
Sondeos de ping integrado
Sondeos de TCP integrado
Sondeos de UDP integrado
Pruebas personalizadas proporcionadas por el usuario que se pueden ejecutar como comprobaciones de estado
De manera predeterminada, el ILB no realiza ninguna comprobación de estado. Puede especificar las comprobaciones de estado para cada grupo de servidores cuando crea una regla de equilibrio de carga. Solo se puede configurar una comprobación de estado por regla de equilibrio de carga. Siempre que un servicio virtual esté activado, las comprobaciones de estado del grupo de servidores asociado con el servicio virtual se inician automáticamente y se repiten periódicamente. Las comprobaciones de estado se detienen cuando se desactiva el servicio virtual. Los estados de la comprobación anterior no se conservan cuando el servicio virtual se vuelva a activar.
Cuando se especifica un TCP, UDP o sondeo de prueba personalizada para ejecutar una comprobación de estado, el ILB envía un sondeo de ping, de manera predeterminada, para establecer si se puede acceder al servidor antes de enviarle el TCP, UDP o sondeo de prueba personalizada. Si el sondeo de ping falla, el servidor correspondiente se desactiva con el estado de comprobación unreachable. Si el sondeo de ping se efectúa correctamente, pero el TCP, el UDP o el sondeo de prueba personalizada fallan, el servidor se desactivará con el estado de comprobación dead.
Puede desactivar el sondeo de ping predeterminado, excepto para el sondeo del UDP. El sondeo de ping es siempre el valor de sondeo predeterminado para las comprobaciones de estado del UDP.
Puede crear una comprobación de estado y asignarla a un grupo de servidores al crear una regla de equilibrio de carga. En el siguiente ejemplo, se crean dos objetos de comprobación de estado, hc1 y hc-myscript. La primera comprobación de estado utiliza el sondeo de TCP incorporado. La segunda comprobación de estado utiliza una prueba personalizada, /var/tmp/my-script.
# ilbadm create-healthcheck -h hc-timeout=3,\ hc-count=2,hc-interval=8,hc-test=tcp hc1 # ilbadm create-healthcheck -h hc-timeout=3,\ hc-count=2,hc-interval=8,hc-test=/var/tmp/my-script hc-myscript
Los argumentos son los siguientes:
Especifica el tiempo de espera para considerar que la comprobación de estado ha fallado si no se completa.
Especifica el número de intentos para ejecutar la comprobación de estado hc-test.
Especifica el intervalo entre dos comprobaciones de estado consecutivas. Para evitar el envío de sondeos a todos los servidores al mismo tiempo, el intervalo real es aleatorio entre 0.5 * hc-interval y 1.5 * hc-interval.
Especifica el tipo de comprobación de estado. Puede especificar la comprobación de estado incorporada, como tcp, udp y ping, o la comprobación de estado externa, que debe estar especificada con el nombre de ruta completo.
Una prueba personalizada proporcionada por el usuario puede ser un código binario o una secuencia de comandos.
La prueba puede residir en cualquier parte del sistema. Debe especificar la ruta absoluta al utilizar el subcomando create-healthcheck.
Si especifica la prueba (por ejemplo, /var/tmp/my-script) como parte de la especificación de comprobación de estado en el subcomando create-rule, el daemon ilbd realiza la bifurcación de un proceso y ejecuta la prueba, de la siguiente manera:
/var/tmp/my-script $1 $2 $3 $4 $5
Los argumentos son los siguientes:
VIP (dirección IPv4 o IPv6 literal)
IP del servidor (dirección IPv4 o IPv6 literal)
Protocolo (UDP, TCP como cadena)
Rango numérico de puertos (el valor especificado por el usuario para hc-port)
Tiempo máximo (en segundos) que debe esperar la prueba antes de informar un fallo. Si la prueba se ejecuta durante un tiempo mayor al especificado, esta podría detenerse, y se consideraría que la prueba falló. Este valor está definido por el usuario y especificado en hc-timeout.
La prueba proporcionada por el usuario, no tiene que utilizar todos los argumentos, pero debe devolver uno de los siguientes valores:
Tiempo de recorrido de ida y vuelta (RTT, Round-Trip Time) en microsegundos
0 si la prueba no calcula el RTT
-1 en caso de fallo
De manera predeterminada, las pruebas de comprobación de estado se ejecutan con los siguientes privilegios: PRIV_PROC_FORK, RIV_PROC_EXEC y RIV_NET_ICMPACCESS.
Si se requiere un conjunto de privilegios más amplio, debe implementar setuid en la prueba. Para obtener más detalles sobre los privilegios, consulte la página del comando man privileges(5).
Para obtener información detallada sobre las comprobaciones de estado configuradas, emita el siguiente comando:
# ilbadm show-healthcheck HCNAME TIMEOUT COUNT INTERVAL DEF_PING TEST hc1 3 2 8 Y tcp hc2 3 2 8 N /var/usr-script
Puede utilizar el subcomando ilbadm list-hc-result para obtener los resultados de la comprobación de estado. Si una regla o una comprobación de estado no se especifica, el subcomando lista todas las comprobaciones de estado.
En el ejemplo siguiente, se muestran los resultados de las comprobaciones de estado asociados con una regla denominada rule1.
# ilbadm show-hc-result rule1 RULENAME HCNAME SERVERID STATUS FAIL LAST NEXT RTT rule1 hc1 _sg1:0 dead 10 11:01:19 11:01:27 941 rule1 hc1 _sg1:1 alive 0 11:01:20 11:01:34 1111
En la columna LAST del resultado, se muestra hace cuánto tiempo se realizó una comprobación de estado en un servidor. La columna NEXT muestra la hora a la que se realizará la próxima comprobación de estado.
Para suprimir una comprobación de estado, utilice con el comando ilbadm delete-healthcheck. En el siguiente ejemplo, se suprime una comprobación de estado denominada hc1.
# ilbadm delete-healthcheck hc1