Wir haben 8 REST-ish API-Server mit Nginx, die FastCGI mit PHP-FPM verwenden, um Anforderungen zu verarbeiten. Wir verwenden derzeit das FastCGI-Caching von Nginx (Direktiven wie fastcgi_cache_path
). Dies bedeutet, dass API-Antworten zwischengespeichert werden, für jeden Server jedoch ein separater Cache vorhanden ist.
Gibt es eine gute Möglichkeit, den Cache-Speicher für alle acht Server freizugeben?
Wir haben erwogen, Redis als gemeinsam genutzten Speicher zu verwenden, aber die verfügbaren Module erfordern anscheinend Anwendungsänderungen. In einigen Fällen möchten wir möglicherweise Antworten zwischenspeichern, die außerhalb unserer Kontrolle liegen (über HTTP an externe APIs). Idealerweise wäre ein Drop-In-Ersatz für das in Nginx integrierte Caching von FastCGI- und HTTP-Antworten verfügbar.
Antworten:
Es scheint einen ziemlich neuen Blog-Beitrag unter https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-1/ zu diesem Thema zu geben. Dieses erste Beispiel kann nützlich sein, wenn Sie mehr als zwei Nginx-Cache-Server ausführen.
Insbesondere der zweite Teil des Beitrags klingt für meinen aktuellen Anwendungsfall interessant, bei dem ich geänderte Elemente automatisch in meine Caches neu crawlen möchte.
Es sollte auch mit der Open Source-Version von NGINX funktionieren. Grundsätzlich funktioniert es durch Proxying der Anforderung, die über jeden NGINX-Server (Nginx-Cache1-> NGinx-Cache2-> Origin-Server) kaskadiert wird. Jeder Server wird vom entsprechenden Upstream zwischengespeichert. Falls gewünscht, kann auch ein HA-Cluster erstellt werden. https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-2/
quelle