Ein kurzes Verständnis mehrerer Planungsalgorithmen für den siebenschichtigen Lastenausgleich von Nginx

Ein kurzes Verständnis mehrerer Planungsalgorithmen für den siebenschichtigen Lastenausgleich von Nginx

In diesem Artikel werden hauptsächlich mehrere Planungsalgorithmen für den siebenschichtigen Lastausgleich von Nginx vorgestellt. Der Beispielcode in diesem Artikel ist sehr detailliert und hat einen gewissen Referenzwert für das Studium oder die Arbeit aller. Freunde, die ihn brauchen, können ihn zu Rate ziehen.

Nginx ist ein leichter, leistungsstarker Webserver und gleichzeitig ein hervorragender Load Balancer und Reverse-Proxy-Server. Es wird häufig als Lastausgleich mit sieben Schichten verwendet, da es leistungsstarke reguläre Übereinstimmungsregeln, dynamische und statische Trennung, URL-Umschreibfunktion, einfache Installation und Konfiguration sowie nur eine sehr geringe Abhängigkeit von der Netzwerkstabilität unterstützt. Wenn die Hardware nicht schlecht ist, kann sie normalerweise Zehntausende gleichzeitige Verbindungen stabil unterstützen. Wenn die Hardwareleistung gut genug ist und die Systemkernelparameter und die Nginx-Konfiguration optimiert sind, können sogar mehr als 100.000 gleichzeitige Verbindungen erreicht werden.

Im Folgenden sind einige häufig verwendete Planungsalgorithmen und anwendbare Geschäftsszenarien für Nginx als siebenschichtiges Lastausgleichssystem aufgeführt.

1. Polling (Standard-Planungsalgorithmus)

Funktionen: Jede Anfrage wird zur chronologischen Verarbeitung einem anderen Backend-Server zugewiesen.
Anwendbare Geschäftsszenarien: Wird verwendet, wenn die Hardwareleistungskonfiguration der Back-End-Server genau gleich ist und keine besonderen Geschäftsanforderungen bestehen.

Upstream-Backendserver { 
Server 192.168.0.14:80 max_fails=2 Fail_Timeout=10s; 
Server 192.168.0.15:80 max_fails=2 Fail_Timeout=10s; 
}

2. Gewichtetes Round Robin

Funktionen: Geben Sie die Abfragewahrscheinlichkeit an, der Gewichtungswert ist proportional zum Zugriffsverhältnis und Benutzeranforderungen werden entsprechend dem Gewichtungsverhältnis zugewiesen.
Anwendbare Geschäftsszenarien: Wird in Situationen verwendet, in denen die Hardwareverarbeitungskapazitäten von Backend-Servern ungleichmäßig sind.

Upstream-Backendserver { 
Server 192.168.0.14:80 Gewicht=5 max_fails=2 Fail_Timeout=10s; 
Server 192.168.0.15:80 Gewicht=10 max_fails=2 Fail_Timeout=10s;
}

3. ip_hash

Funktionen: Jede Anforderung wird entsprechend dem Hash-Ergebnis der Zugriffs-IP zugewiesen, sodass jeder Besucher auf einen festen Backend-Server zugreift, wodurch das Problem der Sitzungsaufbewahrung gelöst werden kann.
Anwendbare Geschäftsszenarien: Anwendbar auf Systeme, die eine Kontoanmeldung erfordern, und Dienste, die Sitzungsverbindungen aufrechterhalten.

Upstream-Backendserver { 
ip_hash; 
Server 192.168.0.14:80 max_fails=2 Fail_Timeout=10s; 
Server 192.168.0.15:80 max_fails=2 Fail_Timeout=10s; 
}

4. Mindestanzahl von Verbindungen least_conn

Funktionen: Entsprechend der Anzahl der Verbindungen zwischen dem Nginx-Reverseproxy und dem Backend-Server wird zuerst der Server mit der geringsten Anzahl von Verbindungen zugewiesen.

Anwendbare Geschäftsszenarien: Anwendbar auf Unternehmen, die eine lange Verbindung zwischen dem Client und dem Backend-Server aufrechterhalten müssen.

Upstream-Backendserver { 
am wenigsten_Verbindung;
Server 192.168.0.14:80 max_fails=2 Fail_Timeout=10s; 
Server 192.168.0.15:80 max_fails=2 Fail_Timeout=10s; 
}

5. fair (das Drittanbietermodul ngx_http_upstream_fair_module muss kompiliert und installiert werden)

Funktionen: Anfragen werden entsprechend der Antwortzeit des Backend-Servers verteilt, wobei Anfragen mit kürzerer Antwortzeit Vorrang haben.
Anwendbare Geschäftsszenarien: Unternehmen, die bestimmte Anforderungen an die Zugriffsreaktionsgeschwindigkeit haben.

Upstream-Backendserver {
gerecht; 
Server 192.168.0.14:80 max_fails=2 Fail_Timeout=10s; 
Server 192.168.0.15:80 max_fails=2 Fail_Timeout=10s; 
}

6. url_hash (das Drittanbietermodul ngx_http_upstream_hash_module muss kompiliert und installiert werden)

Features: Ordnen Sie Anfragen basierend auf dem Hash-Ergebnis der Zugriffs-URL zu, sodass dieselbe URL auf denselben Backend-Server zugreift.

Anwendbare Geschäftsszenarien: Diese Methode ist effektiver, wenn der Backend-Server ein Cache-Server ist.

Upstream-Backendserver { 
Server 192.168.0.14:80 max_fails=2 Fail_Timeout=10s;
Server 192.168.0.15:80 max_fails=2 Fail_Timeout=10s; 
Hashwert für $request_uri; 
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Verwendung der Python-Bibliothek für maschinelles Lernen xgboost
  • Ingenieure müssen den LRU-Cache-Eliminierungsalgorithmus und den Python-Implementierungsprozess verstehen
  • Verstehen Sie das Prinzip des Seitenersetzungsalgorithmus anhand von Codebeispielen
  • Eine kurze Diskussion der zehn wichtigsten Algorithmen, die Sie über maschinelles Lernen wissen müssen
  • Detaillierte Erläuterung der Herleitung des Mergesort-Zeitkomplexitätsprozesses

<<:  Implementierung eines einfachen Rechners auf Basis von JavaScript

>>:  So optimieren Sie die MySQL-Leistung durch langsame MySQL-Abfragen

Artikel empfehlen

Beispielcode für das MySQL-Indexprinzip ganz links

Vorwort Ich habe kürzlich etwas über MySQL-Indize...

Analyse der MySQL-Transaktionsmerkmale und Ebenenprinzipien

1. Was ist eine Transaktion? Eine Datenbanktransa...

Lösungen für das Problem der Tabellenschachtelung und Rahmenzusammenführung

【Frage】 Wenn die äußere und die innere Tabelle ve...

JavaScript-Dokumentobjektmodell DOM

Inhaltsverzeichnis 1. JavaScript kann alle HTML-E...

Das Implementierungsprinzip der MySQL-Master-Slave-Synchronisation

1. Was ist MySQL Master-Slave-Synchronisierung? W...

So verhindern Sie, dass Flash HTML-Div-Elemente abdeckt

Als ich heute einen Flash-Werbecode schrieb, habe ...

So sperren Sie eine virtuelle Konsolensitzung unter Linux

Wenn Sie an einem gemeinsam genutzten System arbe...

So aktualisieren Sie die Knotenversion unter CentOs manuell

1. Suchen Sie das entsprechende NodeJS-Paket unte...

Vue Element-ui-Tabelle realisiert Baumstrukturtabelle

In diesem Artikel wird der spezifische Code der E...

Detaillierte Erklärung des Befehlsmodus in der Javascript-Praxis

Inhaltsverzeichnis Definition Struktur Beispiele ...

Was ist em? Einführung und Konvertierungsmethode von em und px

Was ist sie? „em“ bezieht sich auf die Schrifthöhe...

Mysql-Optimierung Zabbix-Partitionsoptimierung

Der größte Engpass bei der Verwendung von Zabbix ...