Temos 8 servidores de API REST-ish com Nginx usando FastCGI com PHP-FPM para lidar com solicitações. Atualmente, estamos usando o cache FastCGI do Nginx (diretivas como fastcgi_cache_path
). Isso significa que as respostas da API são armazenadas em cache, mas há um cache separado para cada servidor.
Existe uma boa maneira de compartilhar armazenamento em cache entre todos os oito servidores?
Consideramos o uso do Redis como armazenamento compartilhado, mas os módulos disponíveis parecem exigir alterações no aplicativo. Em alguns casos, podemos desejar armazenar em cache respostas fora do nosso controle (sobre HTTP para APIs externas). Idealmente, estaria disponível um substituto para o armazenamento em cache interno do Nginx das respostas FastCGI e HTTP.
Respostas:
Parece haver uma nova publicação no blog em https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-1/ sobre esse problema. Este primeiro exemplo pode ser útil se você executar mais de dois servidores de cache nginx.
Especialmente a segunda parte da postagem parece interessante para o meu caso de uso atual, em que desejo rastrear automaticamente itens alterados nos meus caches.
Também deve funcionar com a versão de código aberto do NGINX. Basicamente, ele funciona por meio de proxy da solicitação em cascata em cada servidor NGINX (Nginx-Cache1-> NGinx-Cache2-> Origin-Server), que cada servidor armazena em cache no upstream relevante e, se desejado, também é possível criar um cluster de alta disponibilidade. https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-2/
fonte