Soporte de la transferencia de salud ascendente (TCP/UDP/HTTP), y proporcione una interfaz HTTP para obtener el estado del servidor de backend "
Este módulo puede proporcionar a NGINX verificaciones de salud del servidor de backend activo (comprobar tipos de comprobación TCP/UDP/HTTP).
Git clone https://github.com/zhouchangxun/nginx/nginx.git git clone https://github.com/zhouchangxun/ngx_stream_upstream_check_module.git
CD nginx/; aplicar git ../ngx_stream_upstream_check_module/nginx-stable-1.12+.patch
./auto/configure --with-stream --add-module = ../ngx_stream_upstream_check_module/
hacer && hacer instalar
stream {
upstream tcp - cluster {
# simple round-robin
server 192.168 .0 .1 : 22 ;
server 192.168 .0 . 2 : 22 ;
check interval = 3000 rise = 2 fall = 5 timeout = 5000 default_down = true type = tcp ;
}
upstream udp - cluster {
# simple round-robin
server 192.168 .0 .3 : 53 ;
server 192.168 .0 . 4 : 53 ;
check interval = 3000 rise = 2 fall = 5 timeout = 5000 default_down = true type = udp ;
}
upstream http - cluster {
# simple round-robin
server 192.168 .0 .5 : 80 ;
server 192.168 .0 . 6 : 80 ;
check interval = 3000 rise = 2 fall = 5 timeout = 5000 type = http ;
check_keepalive_requests 100 ;
check_http_send "HEAD / HTTP/1.1 r n Connection: keep-alive r n r n " ;
check_http_expect_alive http_2xx http_3xx ;
}
server {
listen 522 ;
proxy_pass tcp - cluster ;
}
server {
listen 53 ;
proxy_pass udp - cluster ;
}
server {
listen 8080 ;
proxy_pass http - cluster ;
}
}
http {
server {
listen 80 ;
location / status {
l4check_status ;
}
}
}Sintaxis:
Verifique intervalo = MilliseConds [Fall = Count] [Rise = Count] [TimeOut = MilliseConds] [default_down = true | false] [type = tcp | udp | http] [port = check_port]
Valor predeterminado: intervalo = 30000 caída = 5 Rise = 2 Tiempo de espera = 1000 default_down = True Type = TCP
Contexto: transmisión/aguas arriba
Este comando puede activar la función de verificación de salud del servidor de backend.
Intervalo: El intervalo entre los paquetes de control de salud enviados al backend.
Fall (Fall_Count): si el número de fallas consecutivas llega a Fall_Count, el servidor se considera hacia abajo.
Rise (Rise_Count): si el número de éxitos llega a Raise_Count, se considera que el servidor está activo.
Tiempo de espera: el tiempo de espera de la solicitud de salud de backend.
Default_down: establece el estado del servidor al principio. Si es cierto, significa que el valor predeterminado está inactivo. Si es falso, está arriba. El valor predeterminado es verdadero, lo que significa que el servidor inicialmente cree que no está disponible, y solo se considerará saludable después de que el paquete de verificación de salud alcanza un cierto número de tiempos exitosos.
Tipo: el tipo de paquete de verificación de salud, ahora admite los siguientes tipos
Puerto: especifique el puerto de verificación del servidor de backend. Puede especificar el puerto del servidor de backend que sea diferente del servicio real. Por ejemplo, el backend proporciona una aplicación con el puerto 443. Puede verificar el estado del puerto 80 para determinar el estado de salud del backend. El valor predeterminado es 0, lo que significa lo mismo que el puerto proporcionado por el servidor de backend.
Sintaxis: check_keepalive_requests request_num
Valor predeterminado: 1
Contexto: transmisión/aguas arriba
Esta instrucción puede configurar el número de solicitudes enviadas por una conexión, y su valor predeterminado es 1, lo que significa que NGINX cierra la conexión después de completar una solicitud.
Sintaxis: check_http_send http_packet
Valor predeterminado: "Get / http / 1.0 r n r n"
Contexto: transmisión/aguas arriba
Esta directiva puede configurar el contenido de solicitud enviado por el paquete de verificación de salud HTTP. Para reducir la cantidad de datos transmitidos, se recomienda utilizar el método "Cabeza".
Cuando use una conexión larga para la verificación de salud, debe agregar el encabezado de solicitud Keep-Alive a este comando, como: "Cabeza / http / 1.1 r nconnection: Keep-Alive r n r n". Al mismo tiempo, cuando se usa el método "Get", el tamaño del URI solicitado no debe ser demasiado grande para garantizar que pueda transferirse dentro de 1 intervalo, de lo contrario, el módulo de verificación de salud se considerará como un servidor de backend o una excepción de la red.
Sintaxis: check_http_expect_alive [http_2xx | http_3xx | http_4xx | http_5xx]
Valor predeterminado: http_2xx | http_3xx
Contexto: transmisión/aguas arriba
Esta directiva especifica el estado exitoso de la respuesta HTTP y, por defecto, el estado de 2xx y 3xx se considera saludable.
Sintaxis : check_shm_size size
Valor predeterminado : 1M
Contex : transmisión
Todos los estados de verificación de salud del servidor de backend se almacenan en la memoria compartida, y esta instrucción puede establecer el tamaño de la memoria compartida. El valor predeterminado es 1m. Si tiene más de 1,000 servidores y tiene errores durante la configuración, es posible que deba expandir el tamaño de la memoria.
Sintaxis: l4check_status [html | csv | json]
Valor predeterminado: l4check_status html
Contexto: http/servidor/ubicación