Verwendung von Nginx als HTTP Load Balancer unter Linux

Wenn mehrere Anwendungsserver für Redundanz eingerichtet werden sollen, ist der Lastenausgleich ein häufig verwendeter Mechanismus zur effizienten Verteilung eingehender Dienstanforderungen oder des Netzwerkverkehrs auf eine Gruppe von Back-End-Servern.

Der Lastausgleich bietet mehrere Vorteile, einschließlich einer erhöhten Anwendungsverfügbarkeit durch Redundanz, einer erhöhten Zuverlässigkeit und Skalierbarkeit (mehr Server können im Mix hinzugefügt werden, wenn der Datenverkehr zunimmt). Es bringt auch eine verbesserte Anwendungsleistung und viele andere Vorteile.

Empfohlene Lektüre: Der ultimative Leitfaden zum Sichern, Härten und Verbessern der Leistung von Nginx Web Server

Nginx kann als effizient eingesetzt werden HTTP Load Balancer Verteilen des eingehenden Netzwerkverkehrs und der Arbeitslast auf eine Gruppe von Anwendungsservern, wobei jeweils die Antwort vom ausgewählten Server an den entsprechenden Client zurückgegeben wird.

Die von. Unterstützten Lastausgleichsmethoden Nginx sind:

  • Round-Robin – die Anfragen im Round-Robin-Verfahren an die Anwendungsserver verteilt. Es wird standardmäßig verwendet, wenn keine Methode angegeben ist.
  • am wenigsten verbunden – weist die nächste Anforderung einem weniger ausgelasteten Server zu (dem Server mit der geringsten Anzahl aktiver Verbindungen),
  • IP-Hash – wobei eine Hash-Funktion verwendet wird, um basierend auf der IP-Adresse des Clients zu bestimmen, welcher Server für die nächste Anforderung ausgewählt werden soll. Diese Methode ermöglicht die Sitzungspersistenz (Binden eines Clients an einen bestimmten Anwendungsserver).


Außerdem können Sie Servergewichte verwenden, um Einfluss zu nehmen Nginx Lastausgleichsalgorithmen auf einem fortgeschritteneren Niveau. Nginx Unterstützt auch Integritätsprüfungen, um einen Server als ausgefallen zu markieren (für einen konfigurierbaren Zeitraum ist die Standardeinstellung “Standard”) 10 Sekunden), wenn die Antwort mit einem Fehler fehlschlägt, wird daher für einige Zeit vermieden, diesen Server für nachfolgende eingehende Anforderungen auszuwählen.

Diese praktische Anleitung zeigt die Verwendung Nginx als HTTP Load Balancer Verteilen eingehender Clientanforderungen auf zwei Server mit jeweils einer Instanz derselben Anwendung.

Zu Testzwecken ist jede Anwendungsinstanz beschriftet (auf der Benutzeroberfläche), um den Server anzugeben, auf dem er ausgeführt wird.

Setup 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 ist jede Anwendungsinstanz für den Zugriff über die Domäne konfiguriert tecmintapp.lan. Angenommen, dies ist eine vollständig registrierte Domain, würden wir in den DNS-Einstellungen Folgendes hinzufügen.

A Record           @           192.168.58.7

Dieser Datensatz teilt Client-Anforderungen mit, wohin die Domäne in diesem Fall an die Lastenausgleicher ((192.168.58.7). Das DNS A Datensätze akzeptieren nur IPv4-Werte. Alternativ kann die / etc / hosts Die Datei auf den Client-Computern kann mit dem folgenden Eintrag auch zu Testzwecken verwendet werden.

192.168.58.7   tecmintapp.lan

Einrichten des Nginx-Lastausgleichs unter Linux

Bevor Sie den Nginx-Lastausgleich einrichten, müssen Sie ihn installieren Nginx Verwenden Sie auf Ihrem Server den Standardpaket-Manager für Ihre Distribution (siehe Abbildung).

$ sudo apt install nginx   [On Debian/Ubuntu]
$ sudo yum install nginx   [On CentOS/RHEL]   

Erstellen Sie als Nächstes eine Serverblockdatei mit dem Namen /etc/nginx/conf.d/loadbalancer.conf (Geben Sie einen Namen Ihrer Wahl an).

$ sudo vi /etc/nginx/conf.d/loadbalancer.conf

Kopieren Sie dann die folgende Konfiguration und fügen Sie sie ein. Diese Konfiguration ist standardmäßig Round-Robin, da keine Lastausgleichsmethode 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 ist die proxy_pass Direktive (die innerhalb eines Ortes angegeben werden sollte, / In diesem Fall wird) verwendet, um eine Anforderung an die HTTP-Proxyserver zu übergeben, auf die mit dem Wort “Backend” in der verwiesen wird vorgelagerte Richtlinie (wird verwendet, um eine Gruppe von Servern zu definieren). Außerdem werden die Anforderungen mithilfe eines gewichteten Round-Robin-Ausgleichsmechanismus zwischen den Servern verteilt.

Verwenden Sie die folgende Konfiguration, um den Mechanismus mit der geringsten Verbindung zu verwenden

upstream backend {
        least_conn;
        server 192.168.58.5;
        server 192.168.58.8;
    }

Und zu aktivieren ip_hash Sitzungspersistenzmechanismus, verwenden Sie:

upstream backend {
    ip_hash;
        server 192.168.58.5;
        server 192.168.58.8;
    }

Sie können die Lastausgleichsentscheidung auch über den Server beeinflussen Gewichte. Verwenden Sie in der folgenden Konfiguration den Anwendungsserver, wenn sechs Anforderungen von Clients vorliegen 192.168.58.5 Es werden 4 Anfragen zugewiesen und 2 gehen 192.168.58.8.

upstream backend {
        server 192.168.58.5 weight=4;
        server 192.168.58.8;
    }

Speichern Sie die Datei und beenden Sie sie. Stellen Sie dann sicher, dass die Nginx-Konfigurationsstruktur nach dem Hinzufügen der letzten Ä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 zu übernehmen.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

Testen des Nginx-Lastausgleichs unter Linux

Um das zu testen Nginx Lastenausgleich, öffnen Sie einen Webbrowser und verwenden Sie die folgende Adresse zum Navigieren.

http://tecmintapp.lan

Notieren Sie sich nach dem Laden der Website-Schnittstelle die geladene Anwendungsinstanz. Aktualisieren Sie dann die Seite kontinuierlich. Irgendwann sollte die App vom zweiten Server geladen werden, um den Lastenausgleich anzuzeigen.

Überprüfen Sie Nginx Load Balancing unter Linux
Überprüfen Sie Nginx Load Balancing unter Linux

Sie haben gerade das Einrichten gelernt Nginx als HTTP Load Balancer unter Linux. Wir möchten Ihre Gedanken zu diesem Handbuch und insbesondere zur Verwendung von Nginx als Load Balancer über das unten stehende Feedback-Formular erfahren. Weitere Informationen finden Sie in der Nginx-Dokumentation zu Verwenden von Nginx als HTTP-Load-Balancer.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *