¿Proxy inverso nginx para configuración de alta disponibilidad?

¿Proxy inverso nginx para configuración de alta disponibilidad?

El escenario es así, tengo un servidor proxy inverso nginx frente a dos servidores de aplicaciones que son copias de seguridad entre sí, quiero que nginx reenvíe todas las solicitudes de los usuarios al primer servidor de aplicaciones al principio, y si el primer servidor de aplicaciones está inactivo , Quiero que nginx reenvíe todas las solicitudes de los usuarios al segundo servidor de aplicaciones a partir de ese momento, hasta que el segundo servidor de aplicaciones esté inactivo, y nginx debería volver a reenviar todas las solicitudes de los usuarios al primer servidor de aplicaciones, y así sucesivamente. Por supuesto, si ambos servidores de aplicaciones están inactivos, nginx devolverá un error.

Miré configuraciones como el equilibrio de carga ascendente y la configuración de proxy_next_upstream, pero parece que no es realmente lo que estoy buscando aquí. ¿Alguna idea de cómo configurar nginx para mi escenario? Gracias.

Respuesta1

Querrá utilizar la upstreamconfiguración de nginx para lograr esto.

upstream mybackend {
    # first app server
    server 192.168.0.1;

    # second app server
    server 192.168.0.2 backup;
}

server {
    ...

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

La clave aquí es el backupparámetro, que le dice a nginx que solo utilice ese nodo en caso de que los nodos primarios (es decir, los nodos no etiquetados backup) no estén disponibles.

Llenodocumentación aquí.

Respuesta2

Después de buscar más, decidí usar OpenResty (https://openresty.org/) para mis necesidades, específicamente el LuaUpstreamNginxModulehttps://github.com/openresty/lua-upstream-nginx-moduley con algunos scripts Lua personalizados, parece funcionar perfectamente para mi escenario.

información relacionada