La monitorización del estado de salud de los servidores en Nginx permite verificar de forma continua el estado de los servidores back-end, lo cual es crucial en entornos de balanceo de carga para garantizar la disponibilidad y estabilidad de los servicios. Esta función permite que Nginx desactive temporalmente servidores que no responden adecuadamente y redirija el tráfico solo a servidores activos.
La monitorización de estado de salud en Nginx permite configurar verificaciones periódicas en los servidores a los que distribuye el tráfico. Estas verificaciones permiten identificar si un servidor responde correctamente y cumple con los requisitos de disponibilidad y rendimiento, evitando así enviar solicitudes a servidores inactivos o con fallas.
Para utilizar la monitorización de estado de salud en Nginx, es necesario contar con Nginx Plus, la versión comercial de Nginx, ya que esta función no está disponible en la versión gratuita de Nginx.
En Nginx Plus, la monitorización de estado de salud se configura mediante el bloque upstream
y directivas específicas para determinar la frecuencia de las verificaciones y el tipo de respuesta esperado.
http {
upstream backend_servers {
server backend1.example.com;
server backend2.example.com;
# Activar verificación de estado de salud
health_check interval=5s fails=3 passes=2;
}
server {
location / {
proxy_pass http://backend_servers;
}
}
}
En este ejemplo:
interval=5s
: Realiza una verificación cada 5 segundos.
fails=3
: Desactiva un servidor si falla 3 veces consecutivas.
passes=2
: Reactiva un servidor si pasa 2 verificaciones consecutivas.
Parámetro | Tipo | Descripción |
---|---|---|
interval=<tiempo>
|
Tiempo |
Intervalo entre verificaciones. Valores típicos: 5s , 10s , 30s .
|
fails=<n>
|
Entero | Número de fallos consecutivos necesarios para desactivar un servidor. |
passes=<n>
|
Entero | Número de verificaciones exitosas consecutivas necesarias para reactivar un servidor. |
uri=<ruta>
|
Cadena |
Ruta específica para realizar la verificación (por defecto / ).
|
timeout=<tiempo>
|
Tiempo | Tiempo de espera máximo para recibir una respuesta del servidor. |
match=<condición>
|
String | Define una condición específica para las respuestas, como códigos de estado o contenido esperado. |
1. Verificación en una ruta específica:
health_check uri=/status interval=10s fails=3 passes=2;
2. Configuración con tiempo de espera:
health_check interval=5s fails=2 passes=1 timeout=2s;
3. Verificación con coincidencia de contenido:
match is_healthy {
status 200;
header Content-Type = application/json;
body ~ "status: healthy";
}
health_check match=is_healthy interval=5s;
Para obtener más información sobre la configuración de la monitorización de estado de salud, visita la documentación oficial de Nginx Plus.
Jorge García
Fullstack developer