¿Es posible hacer que nginx equilibre la carga de la aplicación y los servidores de caché en "paralelo"?

¿Es posible hacer que nginx equilibre la carga de la aplicación y los servidores de caché en "paralelo"?

acabo de leer estoArtículo sobre océano digitaly me preguntaba si eltopologíaen el ejemplo final se puede implementar con nginx.

Estoy interesado encómo el equilibrador de carga maneja los dos servidores de caché dedicados que NO están frente a los servidores de aplicaciones. Describen el proceso así:

  1. El balanceador de carga verifica el backend de caché para ver si el contenido solicitado está almacenado en caché (cache-hit) o ​​no (cache-miss)
  2. Si se produce un acierto de caché: devuelve el contenido solicitado al balanceador de carga y salta al Paso 7. Si se pierde un caché: el servidor de caché reenvía la solicitud al backend de la aplicación, a través del balanceador de carga
  3. El equilibrador de carga reenvía la solicitud al backend de la aplicación.
  4. El backend de la aplicación lee la base de datos y luego devuelve el contenido solicitado al equilibrador de carga.
  5. El equilibrador de carga reenvía la respuesta al backend de caché
  6. cache-backend almacena en caché el contenido y luego lo devuelve al balanceador de carga
  7. El balanceador de carga devuelve los datos solicitados al usuario.

Supongo que el equilibrador de carga debería tener los dos grupos en directivas ascendentes:

upstream cachebackend {
    server cache-1.example.com;
    server cache-2.example.com;
}

upstream appbackend {
    server app-1.example.com;
    server app-2.example.com;
}

y luego desde dentro de una directiva de servidor:

location / {
    proxy_pass http://cachebackend;

    # if that one is a MISS, request this one:
    # proxy_pass http://appbackend;
    # and then save the response on the cachebackend
    # before returning it to the client
}

Quiero saber cómo decirle a nginx que siga los pasos anteriores, o si es posible.

Gracias :)

Respuesta1

Nginx puede equilibrar la carga y almacenar en caché simultáneamente, solo necesita configurar la zona de caché usando proxy_cache_pathla directiva y asignarla al particular server {}o location {}al uso proxy_cache. Entonces, en conclusión, si se usa nginx como balanceador de carga y caché, la arquitectura de Digital Ocean parece muy redundante.

información relacionada