Heim > Artikel > Backend-Entwicklung > Für Nginx gibt es mehrere Möglichkeiten, einen Lastausgleich zu erreichen
Was ist Lastausgleich?
Wenn die Anzahl der Besuche pro Zeiteinheit eines Servers zunimmt, wird der Druck auf den Server größer. Wenn er seine eigene Kapazität überschreitet, wird der Server dies tun wird abstürzen. Um Serverabstürze zu vermeiden und Benutzern ein besseres Erlebnis zu bieten, verwenden wir Lastausgleich, um den Serverdruck zu verteilen.
Wir können viele, viele Server erstellen, um einen Servercluster zu bilden. Wenn ein Benutzer die Website besucht, besucht er zuerst einen Zwischenserver und lässt dann den Zwischenserver einen Server mit weniger Druck im Servercluster auswählen. Anschließend werden die Zugriffsanfragen an den Server weitergeleitet. Auf diese Weise stellt jeder Besuch eines Benutzers sicher, dass der Druck auf jedem Server im Servercluster tendenziell ausgeglichen wird, wodurch der Serverdruck geteilt und ein Serverabsturz vermieden wird.
Der Lastausgleich erfolgt nach dem Reverse-Proxy-Prinzip.
1. Polling (Standard)
Jede Anfrage wird nacheinander verschiedenen Servern in chronologischer Reihenfolge zugewiesen Der Endserver kann automatisch eliminiert werden, wenn der Backend-Server ausfällt.
upstream backserver { server 192.168.0.14; server 192.168.0.15; }2. Gewichtung
gibt die Abfragewahrscheinlichkeit an, die Gewichtung ist proportional zum Zugriffsverhältnis und wird in
Situationen verwendet, in denen die Back-End-Serverleistung ungleichmäßig ist.
upstream backserver { server 192.168.0.14 weight=3; server 192.168.0.15 weight=7; }Je höher das Gewicht, desto größer die Zugriffswahrscheinlichkeit. Wie im obigen Beispiel liegen sie bei 30 % bzw. 70 %. 3. Ein Problem mit der oben genannten Methode besteht darin, dass, wenn sich der Benutzer bei einem bestimmten Server anmeldet, jeder eine zweite Anfrage stellt, da wir ein Lastausgleichssystem sind Zeit: Jede Anfrage wird an einen der Server-Cluster umgeleitet. Wenn ein Benutzer, der sich an einem Server angemeldet hat, an einen anderen Server weitergeleitet wird, gehen seine Anmeldeinformationen verloren. Wir können die ip_hash-Anweisung verwenden, um dieses Problem zu lösen. Wenn der Kunde einen bestimmten Server bereits besucht hat, wird die Anfrage beim erneuten Besuch automatisch über den Hash-Algorithmus an den Server weitergeleitet. Jede Anfrage wird entsprechend dem Hash-Ergebnis der Zugriffs-IP zugewiesen, sodass jeder Besucher festen Zugriff auf einen Back-End-Server hat, der das Sitzungsproblem lösen kann.
upstream backserver { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }4. Fair (Drittanbieter)
Anfragen werden entsprechend der Antwortzeit des Backend-Servers zugewiesen, und diejenigen mit kurzen Antwortzeiten werden zuerst zugewiesen.
upstream backserver { server server1; server server2; fair; }5. url_hash (Dritter)
Verteilen Sie Anforderungen entsprechend dem Hash-Ergebnis der aufgerufenen URL, sodass jede URL an denselben Back-End-Server weitergeleitet wird. Dies ist effektiver Der Back-End-Server wird zwischengespeichert.
upstream backserver { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }Der Status jedes Geräts ist eingestellt auf: 1.down bedeutet, dass der Server vor dem Single vorübergehend nicht an der Last teilnimmt
2.weight Der Der Standardwert ist 1. Je größer das Gewicht, desto größer das Gewicht.
3.
: Die Anzahl der zulässigen Anforderungsfehler beträgt standardmäßig 1. Wenn die maximale Anzahl überschritten wird, wird der durch das Modul max_fails
definierte Fehler zurückgegeben > Misserfolge. proxy_next_upstream
5.Sicherung: Wenn alle anderen Nicht-Backup-Maschinen ausgefallen oder ausgelastet sind, fordern Sie die Backup-Maschine an. Daher wird diese Maschine den geringsten Druck haben. fail_timeout:max_fails
Konfigurationsbeispiel:
Verwandte Empfehlungen:
#user nobody;worker_processes 4; events { # 最大并发数 worker_connections 1024; } http{ # 待选服务器列表 upstream myproject{ # ip_hash指令,将同一用户引入同一服务器。 ip_hash; server 125.219.42.4 fail_timeout=60s; server 172.31.2.183; } server{ # 监听端口 listen 80; # 根目录下 location / { # 选择哪个服务器列表 proxy_pass http://myproject; } } }
Nginx-Reverse-Proxy und Lastausgleichspraxis
nginx Vierschichtige Lastausgleichskonfiguration
Detaillierte Erläuterung des Nginx-Lastausgleichs
Das obige ist der detaillierte Inhalt vonFür Nginx gibt es mehrere Möglichkeiten, einen Lastausgleich zu erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!