Ist es möglich, die Lastverteilung bei Nginx-Anwendungs- und Cache-Servern „parallel“ zu schalten?

Ist es möglich, die Lastverteilung bei Nginx-Anwendungs- und Cache-Servern „parallel“ zu schalten?

Ich habe das gerade gelesenDigital Ocean-Artikelund fragte mich, ob dieTopologieim letzten Beispiel kann mit nginx implementiert werden.

Ich bin interessiert anwie der Load Balancer mit den beiden dedizierten Cache-Servern umgeht, die NICHT vor den Anwendungsservern liegen. Sie beschreiben den Prozess wie folgt:

  1. Der Load Balancer überprüft das Cache-Backend, um festzustellen, ob der angeforderte Inhalt zwischengespeichert ist (Cache-Hit) oder nicht (Cache-Miss).
  2. Bei einem Cache-Treffer: Geben Sie den angeforderten Inhalt an den Load Balancer zurück und springen Sie zu Schritt 7. Bei einem Cache-Fehler: Der Cache-Server leitet die Anforderung über den Load Balancer an das App-Backend weiter.
  3. Der Load Balancer leitet die Anfrage an das App-Backend weiter.
  4. Das App-Backend liest aus der Datenbank und gibt den angeforderten Inhalt an den Load Balancer zurück.
  5. Der Load Balancer leitet die Antwort an das Cache-Backend weiter.
  6. Cache-Backend speichert den Inhalt im Cache und gibt ihn dann an den Load Balancer zurück
  7. Der Load Balancer gibt angeforderte Daten an den Benutzer zurück

Ich vermute, dass der Load Balancer die beiden Gruppen in den Upstream-Direktiven haben sollte:

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

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

und dann innerhalb einer Serverdirektive:

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
}

Ich möchte wissen, wie ich Nginx anweise, die oben genannten Schritte auszuführen, oder ob das überhaupt möglich ist.

Danke :)

Antwort1

Nginx kann gleichzeitig Lasten ausgleichen und zwischenspeichern. Sie müssen lediglich die Cachezone mithilfe proxy_cache_pathder Direktive konfigurieren und sie dem jeweiligen server {}oder location {}mithilfe von zuweisen proxy_cache. Zusammenfassend lässt sich also sagen, dass die Architektur von Digital Ocean völlig überflüssig erscheint, wenn Nginx sowohl als Lastenausgleich als auch als Cache verwendet wird.

verwandte Informationen