Wenn es darum geht, mehrere Anwendungsserver für Redundanz einzurichten, ist die Lastverteilung ein häufig verwendetes Mechanismus zur effizienten Verteilung eingehender Serviceanfragen oder Netzwerkverkehr über eine Gruppe von Backend-Servern.
Die Lastverteilung bietet mehrere Vorteile, darunter eine erhöhte Verfügbarkeit der Anwendung durch Redundanz, erhöhte Zuverlässigkeit und Skalierbarkeit (weitere Server können hinzugefügt werden, wenn der Verkehr zunimmt). Sie verbessert auch die Leistung der Anwendung und bringt viele andere Vorteile mit sich.
Empfohlene Lektüre: Der ultimative Leitfaden zur Sicherung, Härtung und Verbesserung der Leistung des Nginx-Web-Servers
Nginx kann als effizienter HTTP-Lastenausgleich eingesetzt werden, um eingehenden Netzwerkverkehr und Arbeitslasten auf eine Gruppe von Anwendungsservern zu verteilen und in jedem Fall die Antwort des ausgewählten Servers an den entsprechenden Client zurückzugeben.
Die von Nginx unterstützten Lastverteilungsmethoden sind:
- round-robin – verteilt Anfragen an die Anwendungsserver in einer Round-Robin-Weise. Es wird standardmäßig verwendet, wenn keine Methode angegeben ist,
- least-connected – weist die nächste Anfrage einem weniger ausgelasteten Server zu (dem Server mit der geringsten Anzahl aktiver Verbindungen),
- IP-Hash – bei dem eine Hash-Funktion verwendet wird, um zu bestimmen, welcher Server für die nächste Anfrage basierend auf der IP-Adresse des Clients ausgewählt werden soll. Diese Methode ermöglicht die Sitzungspersistenz (Binden eines Clients an einen bestimmten Anwendungsserver).
Zusätzlich können Sie Servergewichte verwenden, um die Lastverteilungsalgorithmen von Nginx auf einer fortgeschritteneren Ebene zu beeinflussen. Nginx unterstützt auch Gesundheitsprüfungen, um einen Server als fehlgeschlagen zu kennzeichnen (für eine konfigurierbare Zeitspanne, Standardwert sind 10 Sekunden), wenn seine Antwort mit einem Fehler fehlschlägt, um so zu vermeiden, dass dieser Server für nachfolgende eingehende Anfragen für eine gewisse Zeit ausgewählt wird.
Dieser praktische Leitfaden zeigt, wie man Nginx als einen HTTP-Lastenausgleicher verwendet, um eingehende Client-Anfragen zwischen zwei Servern zu verteilen, von denen jeder eine Instanz derselben Anwendung hat.
Zu Testzwecken wird jede Anwendungsinstanz (auf der Benutzeroberfläche) gekennzeichnet, um anzuzeigen, auf welchem Server sie ausgeführt wird.
Einrichtung der Testumgebung
Load Balancer: 192.168.58.7 Application server 1: 192.168.58.5 Application server 2: 192.168.58.8
Auf jedem Anwendungsserver wird jede Anwendungsinstanz so konfiguriert, dass sie über die Domain tecmintapp.lan
aufgerufen werden kann. Unter der Annahme, dass dies eine vollständig registrierte Domain ist, würden wir die folgenden Einstellungen in den DNS-Einstellungen hinzufügen.
A Record @ 192.168.58.7
Dieser Eintrag gibt Client-Anfragen an, wohin die Domain geleitet werden soll, in diesem Fall zum Lastenausgleicher (192.168.58.7). Die DNS A
-Einträge akzeptieren nur IPv4-Werte. Alternativ kann auch die Datei /etc/hosts auf den Client-Rechnern zu Testzwecken mit folgendem Eintrag verwendet werden.
192.168.58.7 tecmintapp.lan
Einrichten des Nginx-Lastenausgleichs in Linux
Vor der Einrichtung der Nginx-Lastverteilung müssen Sie Nginx auf Ihrem Server mithilfe des Standardpaketmanagers für Ihre Distribution installieren, wie unten gezeigt.
$ sudo apt install nginx [On Debian/Ubuntu] $ sudo yum install nginx [On CentOS/RHEL]
Erstellen Sie anschließend eine Serverblockdatei namens /etc/nginx/conf.d/loadbalancer.conf
(geben Sie einen Namen Ihrer Wahl ein).
$ sudo vi /etc/nginx/conf.d/loadbalancer.conf
Kopieren Sie dann die folgende Konfiguration hinein. Diese Konfiguration verwendet standardmäßig Round-Robin, da keine Lastverteilungsmethode definiert ist.
upstream backend { server 192.168.58.5; server 192.168.58.8; } server { listen 80 default_server; listen [::]:80 default_server; server_name tecmintapp.lan; location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://backend; } }
In der obigen Konfiguration wird die proxy_pass
-Direktive (die in diesem Fall innerhalb eines Ortes, /
, angegeben werden sollte) verwendet, um eine Anfrage an die mit dem Wort „Backend“ referenzierten HTTP-Proxyserver weiterzuleiten, die im Upstream-Direktiv definiert sind (die verwendet wird, um eine Gruppe von Servern zu definieren). Außerdem werden die Anfragen mithilfe eines gewichteten Round-Robin-Ausgleichsmechanismus zwischen den Servern verteilt.
Um den Mechanismus mit den wenigsten Verbindungen zu verwenden, verwenden Sie die folgende Konfiguration
upstream backend { least_conn; server 192.168.58.5; server 192.168.58.8; }
Und um den Mechanismus für die Sitzungspersistenz mit ip_hash
zu aktivieren, verwenden Sie:
upstream backend { ip_hash; server 192.168.58.5; server 192.168.58.8; }
Sie können auch die Lastausgleichsentscheidung mithilfe von Server Gewichten beeinflussen. Mit der folgenden Konfiguration werden bei sechs Anfragen von Clients 4 Anfragen dem Anwendungsserver 192.168.58.5 zugewiesen und 2 werden an 192.168.58.8 gesendet.
upstream backend { server 192.168.58.5 weight=4; server 192.168.58.8; }
Speichern Sie die Datei und verlassen Sie sie. Stellen Sie dann sicher, dass die Nginx-Konfigurationsstruktur nach Hinzufügen der aktuellen Änderungen korrekt ist, indem Sie den folgenden Befehl ausführen.
$ sudo nginx -t
Wenn die Konfiguration in Ordnung ist, starten Sie den Nginx-Dienst neu und aktivieren Sie ihn, um die Änderungen anzuwenden.
$ sudo systemctl restart nginx $ sudo systemctl enable nginx
Testen der Nginx-Lastverteilung in Linux
Um den Nginx-Lastenausgleich zu testen, öffnen Sie einen Webbrowser und verwenden Sie die folgende Adresse, um zu navigieren.
http://tecmintapp.lan
Sobald die Website-Oberfläche geladen ist, notieren Sie sich die Anwendungsinstanz, die geladen wurde. Aktualisieren Sie dann die Seite kontinuierlich. Irgendwann sollte die App vom zweiten Server geladen werden, was auf den Lastenausgleich hinweist.

Sie haben gerade gelernt, wie man Nginx als HTTP-Lastenausgleicher in Linux einrichtet. Wir würden gerne Ihre Gedanken zu dieser Anleitung erfahren, insbesondere zur Verwendung von Nginx als Lastenausgleicher, über das unten stehende Feedback-Formular. Weitere Informationen finden Sie in der Nginx-Dokumentation zum Einsatz von Nginx als HTTP-Lastenausgleicher.
Source:
https://www.tecmint.com/use-nginx-as-http-load-balancer-in-linux/