Mamy 8 serwerów interfejsu API REST z Nginx korzystających z FastCGI z PHP-FPM do obsługi żądań. Obecnie używamy buforowania FastCGI Nginx (takie jak dyrektywy fastcgi_cache_path
). Oznacza to, że odpowiedzi API są buforowane, ale dla każdego serwera istnieje osobna pamięć podręczna.
Czy istnieje dobry sposób na udostępnianie pamięci podręcznej wszystkim ośmiu serwerom?
Zastanawialiśmy się nad wykorzystaniem Redis jako pamięci współdzielonej, ale dostępne moduły wydają się wymagać zmian aplikacji. W niektórych przypadkach możemy chcieć buforować odpowiedzi poza naszą kontrolą (przez HTTP do zewnętrznych interfejsów API). Idealnie byłoby dostępne zastępcze zastępowanie wbudowanego buforowania Nginx dla odpowiedzi FastCGI i HTTP.
Odpowiedzi:
Wydaje się, że na stronie https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-1/ znajduje się raczej nowy post na blogu . Ten pierwszy przykład może być przydatny, jeśli korzystasz z więcej niż dwóch serwerów pamięci podręcznej nginx.
Szczególnie druga część postu wydaje się interesująca dla mojego obecnego przypadku użycia, w którym chcę automatycznie ponownie indeksować zmienione elementy do moich pamięci podręcznych.
Powinien także współpracować z wersją open source NGINX. Zasadniczo działa poprzez proxy żądania kaskadowo przez każdy serwer NGINX (Nginx-Cache1-> NGinx-Cache2-> Origin-Server), każdy serwer buforuje z odpowiedniego serwera nadrzędnego, a jeśli jest to możliwe, możliwe jest również utworzenie klastra HA. https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-2/
źródło