Zusammenfassung der Lastausgleichsmethoden von Nginx

Zusammenfassung der Lastausgleichsmethoden von Nginx

Um den Lastenausgleich zu verstehen, müssen Sie sich zunächst mit Forwardproxy und Reverseproxy auskennen.

Notiz:

  • Weiterleitungsproxy, der Agent ist der Benutzer.
  • Reverse-Proxy, der Proxy ist der Server

Was ist Lastenausgleich?

Je mehr Besuche ein Server pro Zeiteinheit erhält, desto größer ist die Belastung des Servers. Wenn die Belastung seine Belastbarkeit übersteigt, stürzt der Server ab. Um Serverabstürze zu vermeiden und den Benutzern ein besseres Erlebnis zu bieten, verteilen wir die Serverauslastung durch Lastausgleich.

Wir können viele Server zu einem Servercluster zusammenstellen. Wenn ein Benutzer eine Website besucht, greift er zuerst auf einen Zwischenserver zu, lässt diesen Zwischenserver dann einen Server mit geringerer Belastung im Servercluster auswählen und leitet die Zugriffsanforderung dann an diesen Server weiter. Auf diese Weise wird bei jedem Besuch eines Benutzers der Druck auf jedem Server im Servercluster ausgeglichen, die Serverlast wird geteilt und Serverabstürze werden vermieden.

Der Lastausgleich wird durch das Reverse-Proxy-Prinzip erreicht.

Mehrere gängige Methoden zum Lastenausgleich

1. Polling (Standard)

Jede Anfrage wird in chronologischer Reihenfolge nacheinander einem anderen Backend-Server zugewiesen. Wenn der Backend-Server ausfällt, kann er automatisch entfernt werden.

Upstream-Backserver {
 Server 192.168.0.14;
 Server 192.168.0.15;
}

2. Gewicht

Gibt die Polling-Wahrscheinlichkeit an. Die Gewichtung ist proportional zur Zugriffsrate und wird verwendet, wenn die Leistung des Backend-Servers ungleichmäßig ist.

Upstream-Backserver {
  Server 192.168.0.14 Gewicht = 3;
  Server 192.168.0.15 Gewicht = 7;
}

Je höher die Gewichtung, desto größer die Besuchswahrscheinlichkeit. Im obigen Beispiel sind es 30 % bzw. 70 %.

3. Bei der obigen Methode liegt ein Problem vor. Wenn sich ein Benutzer im Lastausgleichssystem bei einem Server anmeldet und eine zweite Anfrage stellt, wird jede Anfrage auf einen der Server im Cluster verschoben, da es sich bei uns um ein Lastausgleichssystem handelt. Wenn ein Benutzer, der sich bei einem Server angemeldet hat, auf einen anderen Server verschoben wird, gehen seine Anmeldeinformationen verloren, was offensichtlich nicht sinnvoll ist.

Wir können die Anweisung ip_hash verwenden, um dieses Problem zu lösen. Wenn der Client einen Server bereits besucht hat, wird die Anforderung beim erneuten Besuch des Benutzers über den Hash-Algorithmus automatisch an den Server weitergeleitet.

Jede Anfrage wird entsprechend dem Hash-Ergebnis der Zugriffs-IP zugewiesen, sodass jeder Besucher auf einen festen Backend-Server zugreift, wodurch das Sitzungsproblem gelöst werden kann.

Upstream-Backserver {
  ip_hash;
  Server 192.168.0.14:88;
  Server 192.168.0.15:80;
}

4. fair (Drittanbieter)

Die Anfragen werden basierend auf der Antwortzeit des Backend-Servers verteilt, wobei Anfragen mit kürzeren Antwortzeiten Vorrang erhalten.

Upstream-Backserver {
  Server Server1;
  Server Server2;
  gerecht;
}

5. url_hash (Drittanbieter)

Anfragen werden entsprechend dem Hash-Ergebnis der aufgerufenen URL verteilt, sodass jede URL an denselben Backend-Server weitergeleitet wird. Dies ist effektiver, wenn der Backend-Server zwischengespeichert ist.

Upstream-Backserver {
  Server Squid1:3128;
  Server Squid2:3128;
  Hashwert für $request_uri;
  Hash-Methode crc32;
}123456

Der Status jedes Geräts wird wie folgt eingestellt:

  • down bedeutet, dass der Server vor der Bestellung vorübergehend nicht an der Last beteiligt ist
  • Das Gewicht ist standardmäßig auf 1 eingestellt. Je höher das Gewicht, desto höher ist das Gewicht der Ladung.
  • max_fails: Die Standardanzahl zulässiger Anforderungsfehler beträgt 1. Wenn die maximale Anzahl überschritten wird, wird ein vom Modul proxy_next_upstream definierter Fehler zurückgegeben.
  • fail_timeout: Die Pausenzeit nach max_fails-Fehlern.
  • Backup: Wenn alle anderen Nicht-Backup-Maschinen ausgefallen oder beschäftigt sind, fordern Sie die Backup-Maschine an. Daher hat diese Maschine den geringsten Druck.

Konfigurationsbeispiel:

#Benutzer niemand;
Arbeitsprozesse 4;
Ereignisse {
  # Maximale Anzahl gleichzeitiger Worker-Verbindungen 1024;
}
http{
  # Liste der Server, die upstream myproject{ ausgewählt werden sollen
    # Die ip_hash-Direktive leitet denselben Benutzer zum selben Server weiter.
    ip_hash;
    Server 125.219.42.4 Fehlerzeitüberschreitung = 60 s;
    Server 172.31.2.183;
    }

  Server{
        # Abhörport listen 80;
        # Speicherort des Stammverzeichnisses / {
          # Wählen Sie die Serverliste aus: Proxy-Pass http://myproject;
        }

      }
}

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Beispiel für die Verwendung von Nginx als Reverse-Proxy zum Erreichen des Lastenausgleichs
  • 4 Konfigurationsbeispiele für den Nginx-Lastausgleich
  • Darstellung der Schritte zur Installation von nginx unter Windows (Reverse-Proxy und Lastenausgleich)
  • Konfigurationsmethode für den Lastenausgleich von Nginx+Windows
  • Windows verwendet Nginx, um ein Testbeispiel für den Lastenausgleich von Websites zu implementieren
  • Hinweise zur Nginx-Installation (einschließlich PHP-Unterstützung, virtuelle Hosts, Reverse-Proxy-Lastausgleich)
  • Detaillierte Erläuterung der Lastausgleichsstrategie für Nginx-Server (6 Typen)
  • So konfigurieren Sie den Lastenausgleich für TCP im Nginx-Server
  • Nginx-GeoIP-Modul zur Erzielung eines regionalen Lastausgleichs
  • Nginx-Lastausgleich für gemeinsam genutzte Sitzungen an mehreren Standorten

<<:  Detaillierte Erläuterung der Angular-Routing-Unterrouten

>>:  Detaillierte Erläuterung der Implementierung gemeinsam genutzter Module in Angular-Projekten

Artikel empfehlen

Lösung für „Spezialisierter Schlüssel war zu lang“ in MySQL

Inhaltsverzeichnis Lösung 1 Lösung 2 Beim Erstell...

Was ist das Basis-Tag und was macht es?

Der <base>-Tag gibt die Standardadresse ode...

So stellen Sie einen Redis 6.x-Cluster über Docker bereit

Systemumgebung: Redis-Version: 6.0.8 Docker-Versi...

Einführung in MySQL-Rollenfunktionen

Inhaltsverzeichnis Vorwort: 1. Einführung in die ...

CocosCreator-Tutorial für den Einstieg: Erstellen Sie Ihr erstes Spiel mit TS

Inhaltsverzeichnis Prämisse TypeScript vs. JavaSc...

Erfahren Sie mehr über den Hyperlink A-Tag

fragen: Ich habe den Hyperlink mit CSS formatiert...

Native JS implementiert einen sehr gut aussehenden Zähler

Heute zeige ich Ihnen einen gut aussehenden Zähle...

CSS3 erzielt einen coolen 3D-Rotationsperspektiveneffekt

CSS3 erreicht coole 3D-Rotationsperspektive 3D-An...

Beispiel für eine automatische Importmethode für das Vue3.0-Routing

1. Voraussetzungen Wir verwenden zum Importieren ...

Eine kurze Diskussion über HTML-Dokumenttypen und -Kodierung

DOKTYP Doctype wird verwendet, um dem Browser mit...

So wählen Sie alle untergeordneten Elemente aus und fügen ihnen in CSS Stile hinzu

Verfahren: Nehmen wir „less“ im tatsächlichen Pro...