Tenemos 8 servidores API REST-ish con Nginx que usan FastCGI con PHP-FPM para manejar solicitudes. Actualmente estamos utilizando el almacenamiento en caché FastCGI de Nginx (como directivas fastcgi_cache_path
). Esto significa que las respuestas de la API se almacenan en caché, pero hay una caché separada para cada servidor.
¿Hay una buena manera de compartir el almacenamiento en caché entre los ocho servidores?
Hemos considerado usar Redis como almacenamiento compartido, pero los módulos disponibles parecen requerir cambios en la aplicación. En algunos casos, es posible que deseemos almacenar en caché las respuestas fuera de nuestro control (sobre HTTP a API externas). Idealmente, un reemplazo directo para el almacenamiento en caché integrado de Nginx de FastCGI y respuestas HTTP estaría disponible.
Respuestas:
Parece que hay una publicación de blog bastante nueva en https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-1/ sobre este tema. Este primer ejemplo podría ser útil si ejecuta más de dos servidores de caché nginx.
Especialmente la segunda parte de la publicación suena interesante para mi caso de uso actual, donde quiero volver a rastrear automáticamente los elementos modificados en mis cachés.
También debería funcionar con la versión de código abierto de NGINX. Básicamente funciona mediante la representación proxy de la solicitud en cascada a través de cada servidor NGINX (Nginx-Cache1-> NGinx-Cache2-> Origin-Server) cada servidor almacena en caché desde el flujo ascendente relevante y, si lo desea, también es posible crear un clúster HA. https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-2/
fuente