Einführung in den Lastausgleich
Bevor wir die Lastausgleichsimplementierung von Nginx vorstellen, sprechen wir kurz über die Klassifizierung des Lastausgleichs, der hauptsächlich in Hardware-Lastausgleich und Software-Lastausgleich unterteilt ist. Der Hardware-Lastausgleich verwendet spezielle Software und Hardware In Kombination mit der Ausrüstung bieten Gerätehersteller vollständige und ausgereifte Lösungen wie f5 an, die in Bezug auf Datenstabilität und -sicherheit sehr zuverlässig sind, aber die Kosten sind höher als bei Software, die auf Software wie z. B. basiert Nginx Main, ein implementierter Nachrichtenwarteschlangenverteilungsmechanismus.
Einfach ausgedrückt besteht der sogenannte Lastausgleich darin, viele Anfragen auszulagern und sie verschiedenen Servern zur Verarbeitung zuzuweisen. Ich habe zum Beispiel 3 Server, nämlich a, b und c, und verwende dann Nginx für den Lastausgleich und eine Polling-Strategie. Wenn zu diesem Zeitpunkt 9 Anfragen eingehen, werden die 9 Anfragen gleichmäßig auf a und b verteilt. Beim CF-Server verarbeitet jeder Server drei Anforderungen, sodass wir die Eigenschaften mehrerer Maschinencluster nutzen können, um den Druck auf einen einzelnen Server zu verringern.
Ein Beispieldiagramm des von Nginx implementierten Lastausgleichs:
Lastausgleichsstrategie
Nginx Open Source unterstützt vier Lastausgleichsmethoden und Nginx Plus fügt zwei weitere Methoden hinzu.
1.Round-Robin:
Abfragen und Senden von Anfragen für alle Anfragen, die Standardzuweisungsmethode.
nginx.conf-Konfigurationsbeispiel:
Hinweis: Der obige Domainname kann auch durch IP ersetzt werden.
2.geringste Verbindungen:
Senden Sie die Anfrage an den Server mit der geringsten Anzahl aktiver Verbindungen, auch unter Berücksichtigung der Servergewichtung.
nginx.conf-Konfigurationsbeispiel:
3.ip-Hash:
Der Server, der die Anfrage sendet, wird durch die Client-IP-Adresse bestimmt. In diesem Fall wird der Hashwert anhand der ersten drei Bytes der IPv4-Adresse oder der gesamten IPv6-Adresse berechnet. Diese Methode garantiert, dass Anfragen von derselben Adresse denselben Server erreichen, es sei denn, dieser Server ist nicht verfügbar.
4.generischer Hash:
Der Server, an den die Anfrage gesendet wird, wird durch einen benutzerdefinierten Schlüssel bestimmt, der eine Textzeichenfolge, eine Variable oder eine Kombination sein kann. 5. Mindestzeit (nur Nginx Plus) die „least_time“-Direktive:
header: Zeit, um das erste Byte vom Server zu empfangen.
least_conn: Mindestanzahl aktiver Verbindungen
Abhängig von jdk1.8 oder höher;
Zuerst laden wir dieses Projekt herunter und geben Folgendes ein:
nginx-Konfiguration
mvn clean package
将项目进行打包为jar文件,然后将application.properties
和此jar项目放在一个文件夹中,然后复制该文件夹(这里为了清晰所以进行复制,实际不复制更改端口重启也行),修改复制文件夹application.properties
upstream pancm: Definieren Sie einen Namen nach Ihren Wünschen;
Fügen Sie dann die folgende Konfiguration auf dem Server hinzu/ändern Sie sie:
Server: der Name des virtuellen Hosts, mehrere Server können in einem http konfiguriert werden;
nginx.conf vollständige Konfiguration:
Lastausgleichstest
Nach Abschluss der Nginx-Konfiguration starten wir Nginx.
Linux-Eingabe /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
, wenn es bereits gestartet ist, können Sie /usr/ verwenden local/nginx/ Verwenden Sie den Befehl sbin/nginx -s reload
, um die Konfigurationsdatei im laufenden Betrieb zu laden. Klicken Sie in Windows direkt auf nginx.exe
oder cmd
nginx-Verzeichnis zum Ausführen start nginx zum Starten. Wenn es gestartet ist, können Sie weiterhin <code>nginx -s reload
für das Hot-Loading verwenden. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
,如果已经启动可以使用/usr/local/nginx/sbin/nginx -s reload
命令进行热加载配置文件,windows直接点击nginx目录下的nginx.exe
或者 cmd
运行start nginx
进行启动,如果启动了依旧可以使用nginx -s reload
进行热加载。
nginx启动完成之后,我们依次启动刚刚下载的springboot和复制更改端口的项目,输入:java -jar springboot-jsp-thymeleaf.jar
java -jar springboot-jsp-thymeleaf.jar
. Nachdem alles erfolgreich gestartet ist, können wir die IP-Adresse des Dienstes in den Browser eingeben, um darauf zuzugreifen. Beispielbild:
Hinweis: Hier verwende ich zum Testen das Windows-System und das tatsächliche Linux-System ist dasselbe. Dann machen wir es und schauen uns das Konsolenprotokoll an!
Aus dem obigen Beispieldiagramm haben wir 4 Schnittstellenaktualisierungsanfragen gestellt und diese schließlich gleichmäßig auf die beiden Dienste verteilt. Aus den obigen Testergebnissen haben wir einen Lastausgleich erreicht. Hier spreche ich über die Vorsichtsmaßnahmen bei der Verwendung von Nginx. Beim Lernen und Testen ist es im Allgemeinen kein Problem, den Standardport von Nginx zu verwenden, um einen Lastausgleich zu erreichen, aber wenn wir ihn im Projekt verwenden, insbesondere die Anmeldeschnittstelle und wann Wenn der Port nicht 80 ist, springt die Anmeldeschnittstelle nicht. Beim Debuggen wird ein Fehler wie „net::err_name_not_resolved“ angezeigt. Der Grund dafür ist, dass der Standardport von Nginx auch dieser ist In diesem Fall müssen Sie die Konfiguration „proxy_set_header host $host:port“ unter „location“ hinzufügen. Halten Sie einfach den Port und den Listen-Port konsistent. 🎜Das obige ist der detaillierte Inhalt vonSo erreichen Sie einen Lastausgleich mit Nginx+SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!