Heim  >  Artikel  >  Backend-Entwicklung  >  Für Nginx gibt es mehrere Möglichkeiten, einen Lastausgleich zu erreichen

Für Nginx gibt es mehrere Möglichkeiten, einen Lastausgleich zu erreichen

小云云
小云云Original
2018-03-05 11:12:033225Durchsuche

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.

Mehrere gängige Methoden des Lastausgleichs

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_upstream5.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_failsKonfigurationsbeispiel:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn