conmutación por error nginx sin equilibrio de carga

13

Tengo problemas para configurar nginx.

Estoy usando nignx como proxy inverso. Quiero enviar todas mis solicitudes a mi primer servidor. Si el primer servidor está inactivo, quiero enviar solicitudes al segundo servidor.

En resumen, ¿cómo puedo tener una solución de conmutación por error sin equilibrio de carga?

Serhat
fuente

Respuestas:

13

Lo que quieres es una configuración activa + pasiva. Aquí hay un ejemplo de un fragmento de nginx conf para que pueda comenzar:

upstream backend {
    server 1.2.3.4:80 fail_timeout=5s max_fails=3;
    server 4.5.6.7:80 backup;
}

server {
    listen 80;
    server_name whatevs.com;

    location / {
        proxy_pass http://backend;
    }
}

Entonces, 'normalmente', todas las solicitudes irán al host 1.2.3.4. Si tenemos tres fallas en ese cuadro, entonces 4.5.6.7 se hará cargo.

chrskly
fuente
¿Qué pasa si tiene varias copias de seguridad?
Benny Bottema
0

El equilibrio de carga en nginx es muy fácil, solo configuramos los nombres de los servidores en el alcance ascendente, donde escribimos la lista de servidores para el equilibrio de carga.
nginx admite diferentes algoritmos para el equilibrio de carga por defecto, es round robine, pero lo configuramos con diferentes claves como ip_hash ...

http{
 upstream servername{
    ip_hash//for sticky hash
    least_conn//FOR least connection 
    sever localhost:1001;
    sever localhost:1002;
    sever localhost:1003;
}
akshay panwar
fuente
0

Extendiendo la respuesta de chrskly, es posible que desee configurar 3 banderas / configuraciones.

  1. fail_timeout : Tiempo total por intentos fallidos y también marca el servidor como ABAJO por ese mismo tiempo. Si es 5 segundos, entonces intentará intentos de max_fail en 5 segundos y si aún falla, marque ese servidor como ABAJO durante 5 segundos.
  2. max_fail : número máximo de intentos
  3. proxy_connect_timeout : la cantidad de tiempo para esperar una conexión.

En el siguiente ejemplo de GRPC, si el servidor principal no se puede conectar en 7 segundos, cambie a copia de seguridad y marque el servidor principal como inactivo durante 6000 s:

upstream grpcservers {
    server 192.168.0.XX:9997 fail_timeout=6000s max_fails=1;  # After 1 fail in 6000s, Main server is marked unavailable for 6000s.
    server 192.168.0.XX:9999 backup;
        } 
location / {
            grpc_pass grpc://grpcservers;
            grpc_connect_timeout 7s;  # If conn cant be made in 7sec, switch to backup
        }

Prakhar Pandey
fuente