Heim > Backend-Entwicklung > PHP-Tutorial > Wie konfiguriere ich den Nginx-Lastausgleich? Konfigurationsmethode für den Nginx-Lastausgleich

Wie konfiguriere ich den Nginx-Lastausgleich? Konfigurationsmethode für den Nginx-Lastausgleich

不言
Freigeben: 2023-04-03 12:20:01
Original
5484 Leute haben es durchsucht

Es gibt viele Möglichkeiten, den Nginx-Lastausgleich zu konfigurieren. Hier stelle ich Ihnen zwei Möglichkeiten vor, den Nginx-Lastausgleich zu konfigurieren.

nginx fungiert als Reverse-Proxy für Back-End-Webserver (Apache, Nginx, Tomcat, Weblogic) usw.

Mehrere Back-End-Webserver müssen Dateifreigabe und Datenbankfreigabe berücksichtigen , und Probleme bei der Sitzungsfreigabe können NFS, gemeinsam genutzten Speicher (FC, IP-Speicher ist akzeptabel) + Redhat GFS-Clusterdateisystem, Rsync + Inotify-Dateisynchronisierung usw. verwenden. Kleinere Cluster verwenden mehr NFS für Content-Management-Systeme. Eine einzelne Einheit wird zum Veröffentlichen von Informationen verwendet. Rsync+inotify ist eine gute Wahl, um mehrere Maschinen zu synchronisieren

Kleiner Cluster, einzelne Hochleistungsdatenbank (z. B. Zhiqiang Dual Quad-Core, 32/64/). Für große Cluster sollten Sie einen Datenbankcluster in Betracht ziehen. Sie können die offizielle Cluster-Software von MySQL verwenden oder keepalived+lvs verwenden, um Lese- und Schreibvorgänge zu trennen und einen MySQL-Cluster zu erstellen.

Das Problem der Sitzungsfreigabe ist ein großes Problem. Wenn Nginx ip_hash verwendet, wird jede IP innerhalb eines bestimmten Zeitraums einem festen Back-End-Server zugewiesen, sodass wir dies nicht tun müssen Lösen Sie das Problem der Sitzungsfreigabe. Im Gegensatz dazu werden
Anfragen nach einer IP abgefragt und an mehrere Server verteilt, die gelöst werden müssen. Bei Problemen mit der Sitzungsfreigabe können Sie NFS verwenden, um die Sitzung freizugeben, und die Sitzung in MySQL oder Memcache schreiben usw. Wenn der Maschinenumfang relativ groß ist
, verwenden Sie im Allgemeinen die Methode zum Schreiben der Sitzung in den Memcache.

Back-End-Webserver Wir werden hier nicht diskutieren, wie er konfiguriert wird Der Server kann Apache, Nginx, Tomcat, Lighthttp usw. sein. Dem Front-End ist es egal, was das Back-End ist.
Erstellen Sie zunächst eine Proxy.conf-Datei, um unseren späteren Aufruf zu erleichtern (Konfiguration). Wenn mehrere Cluster vorhanden sind, Es ist eine gute Methode, die öffentlichen Parameter in eine Datei zu schreiben und sie dann weiter einzubinden)
vi /usr/local/nginx/conf/proxy.conf
proxy_redirect off;
proxy_set_header Host $host ;
proxy_set_header Lastausgleichsmethoden von Nginx hier: Polling-Gewichtung (kann auch ungewichtet sein, also 1:1 Last) und ip_hash (Die gleiche IP wird einem festen Back-End-Server zugewiesen, um das Sitzungsproblem zu lösen)
Wir können diese Konfigurationsdatei hineinschreiben nginx.conf (wenn es nur einen Webcluster gibt, ist es am besten, „Gehe zu vhosts“ in Form eines virtuellen Hosts zu schreiben, hier schreibe ich es in nginx.conf
Der erste Konfiguration: Gewichtete Abfrage, Gewichtung entsprechend der Leistung des Servers, dieses Beispiel ist eine 1:2-Zuteilung

 upstream lb {                server 192.168.196.130 weight=1 fail_timeout=20s;
                server 192.168.196.132 weight=2 fail_timeout=20s;
 }
 server {
                listen 80;
                server_name safexjt.com www.safexjt.com;
  index index.html index.htm index.php;
  location / {
                        proxy_pass http://lb;
   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
   include proxy.conf;
                }
 }
Nach dem Login kopieren

Die zweite Konfiguration: ip_hash-Abfragemethode, der Server kann nicht gewichtet werden
upstream lb {                server 192.168.196.130 fail_timeout=20s;
                server 192.168.196.132 fail_timeout=20s;
  ip_hash;
 }
 server {
                listen 80;
                server_name safexjt.com www.safexjt.com;
  index index.html index.htm index.php;
  location / {
                        proxy_pass http://lb;
   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
   include proxy.conf;
                }
 }
Nach dem Login kopieren

Methode 2 Nginx Load Balancing implementiert Sitzungseinfügung basierend auf ip_hash
1. Polling (Standard)
Jede Anfrage Sie werden nacheinander verschiedenen Backend-Servern in chronologischer Reihenfolge zugewiesen. Wenn der Backend-Server ausfällt, kann er automatisch eliminiert werden .

upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
Nach dem Login kopieren

2. Geben Sie die Gewichtung an.
Geben Sie die Abfragewahrscheinlichkeit an. Die Gewichtung ist proportional zum Zugriffsverhältnis und wird verwendet, wenn die Back-End-Serverleistung ungleichmäßig ist.

upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
Nach dem Login kopieren

3. IP-Bindung ip_hash

Jede Anfrage wird entsprechend dem Hash-Ergebnis der abgerufenen IP zugewiesen, sodass jeder Besucher festen Zugriff auf einen Back-End-Server hat, der das lösen kann Sitzungsproblem.


upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
Nach dem Login kopieren

4. Fair (Drittanbieter)

Anfragen entsprechend der Antwortzeit des Backend-Servers zuweisen, und diejenigen mit kurzen Antwortzeiten werden zuerst zugewiesen.


upstream backserver {
server server1;
server server2;
fair;
}
Nach dem Login kopieren

5. url_hash (Dritter)

Verteilen Sie Anforderungen entsprechend dem Hash-Ergebnis der aufgerufenen URL, sodass jede URL an denselben Back-End-Server weitergeleitet wird wenn der Back-End-Server zwischengespeichert ist.


upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
Nach dem Login kopieren

Fügen Sie auf dem Server, der Lastausgleich verwenden muss,

proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}
Nach dem Login kopieren

max_fails hinzu: Die Anzahl der zulässigen Anforderungsfehler beträgt standardmäßig 1, wenn die maximale Anzahl überschritten wird , die Moduldefinition „proxy_next_upstream“ wird zurückgegeben. Fehler
fail_timeout:Pausezeit nach max_fails-Fehlern

Verwandte Empfehlungen:

Mehrere Möglichkeiten für Nginx, einen Lastausgleich zu erreichen


php-Interviewfrage 7: So konfigurieren Sie den Nginx-Lastausgleich

Das obige ist der detaillierte Inhalt vonWie konfiguriere ich den Nginx-Lastausgleich? Konfigurationsmethode für den Nginx-Lastausgleich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage