Upstream Probe#
El módulo implementa sondeos activos de salud para stream_upstream.
Ejemplo de configuración#
server {
listen ...;
# ...
proxy_pass backend;
upstream_probe_timeout 1s;
upstream_probe backend_probe
port=12345
interval=5s
test=$good
essential
fails=3
passes=3
max_response=512k
mode=onfail
"send=data:GET / HTTP/1.0\r\n\r\n";
}
Nota
Según RFC 2616 (HTTP/1.1) y RFC 9110 (Semántica HTTP), las cabeceras HTTP
deben estar separadas por una secuencia CRLF (\r\n) en lugar de solo
\n.
Directivas#
upstream_probe (PRO)#
| |
Predeterminado | — |
server |
Define un sondeo activo de salud para servidores dentro del grupo upstream
especificado en la directiva proxy_pass
en el mismo contexto server donde se encuentra la directiva upstream_probe.
Un servidor pasa el sondeo si la solicitud tiene éxito, considerando todos
los parámetros de configuración de la directiva upstream_probe y todos los parámetros que
afectan cómo se utilizan los upstreams por el contexto server donde está definido,
incluyendo la directiva proxy_next_upstream.
Para hacer uso de los sondeos, el upstream debe tener una zona de memoria compartida (zone). Un upstream puede configurarse con varios sondeos.
Se aceptan los siguientes parámetros:
| Nombre obligatorio del sondeo. |
| Número de puerto alternativo para la solicitud de sondeo. |
| Intervalo entre sondeos.
Por defecto — |
| La condición para el sondeo, definida como una cadena de variables.
Si la sustitución de variables produce |
| Si se establece, se comprueba el estado inicial del servidor, por lo que el servidor no recibe solicitudes de clientes hasta que se supere el sondeo. |
| Configurar este parámetro requiere habilitar primero |
| Número de sondeos fallidos consecutivos que hacen que el servidor se considere no saludable. Por defecto — 1. |
| Número de sondeos exitosos consecutivos que hacen que el servidor se considere saludable. Por defecto — 1. |
| Tamaño máximo de memoria para la respuesta. Si se especifica un
valor cero, se deshabilita la espera de la respuesta.
Por defecto — |
| Modo de sondeo, dependiendo del estado de los servidores:
Por defecto — |
| Si se especifica, se utiliza el protocolo UDP para el sondeo. Por defecto, TCP se utiliza para el sondeo. |
| Datos enviados para el sondeo: datos en línea con el prefijo Al usar un archivo:
|
Ejemplo:
upstream backend {
zone backend 1m;
server a.example.com;
server b.example.com;
}
map $upstream_probe_response $good {
~200 "1";
default "";
}
server {
listen ...;
# ...
proxy_pass backend;
upstream_probe_timeout 1s;
upstream_probe backend_probe
port=12345
interval=5s
test=$good
essential
persistent
fails=3
passes=3
max_response=512k
mode=onfail
"send=data:GET / HTTP/1.0\r\n\r\n";
}
Detalles de operación del sondeo:
Inicialmente, el servidor no recibirá solicitudes de clientes hasta que supere todos los sondeos
essentialconfigurados para él, omitiendo lospersistentsi la configuración se recargó y el servidor se consideraba saludable antes de eso. Si no hay tales sondeos, el servidor se considera saludable.El servidor se considera no saludable y no recibirá solicitudes de clientes, si cualquiera de los sondeos configurados para él alcanza
failso el servidor alcanza max_fails.Para que un servidor no saludable se considere saludable nuevamente, todos los sondeos configurados para él deben alcanzar sus respectivos
passes; después de eso, también se considera max_fails.
upstream_probe_timeout (PRO)#
Establece el tiempo máximo de inactividad para una conexión establecida con el servidor para sondeos de salud configurados mediante la directiva upstream_probe (PRO); si se supera este límite, la conexión se cerrará.
Variables integradas#
El módulo stream_upstream admite las siguientes variables integradas:
$upstream_probe (PRO)#
Nombre del upstream_probe actualmente activo.
$upstream_probe_response (PRO)#
Contenido de la respuesta recibida durante un sondeo activo configurado por upstream_probe.