GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Nginx-Lastenausgleich

Der Lastenausgleich zwischen mehreren Anwendungen, Backends und Servern ist Teil des Prozesses zur Optimierung von Ressourcen, Verbesserung der Leistung und Fehlertoleranz des Dienstes.

Nginx als Load Balancer

Dieser Webserver gilt als eine der beliebtesten und produktivsten Lösungen, da er die breiteste Funktionalität und Flexibilität bei der Konfiguration bietet. Daher wird Nginx häufig zum Lastenausgleich verwendet.

Es gibt mehrere Ansätze und Implementierungen, aber überprüfen Sie zuerst die Verfügbarkeit des Moduls ngx_http_upstream_module:

# nginx -v

Wenn es fehlt, müssen Sie Nginx neu erstellen, indem Sie dieses Modul hinzufügen. Danach können Sie mit der Konfiguration des Webservers beginnen. Um den Ausgleich zu aktivieren, fügen Sie die Upstream-Direktive (http-Abschnitt) zur Nginx-Konfigurationsdatei hinzu:

upstream backend  {
  server backend1.somesite.com;
  server backend2.somesite.com;
  server backend3.somesite.com;
}

Jetzt müssen Sie die Umleitung der erforderlichen Gruppe angeben:

server {
  location / {
    proxy_pass  http://backend;
  }
}

Darüber hinaus unterstützt Nginx zusätzliche Parameter und Load-Balancing-Methoden.

Wahl einer Ausgleichsmethode

Nginx bietet mehrere Load-Balancing-Methoden.

Round-Robin

Standardmäßig verteilt der Webserver Anfragen gleichmäßig auf die Backends (aber unter Berücksichtigung der Gewichtung). Dies ist eine Standardmethode in Nginx, daher gibt es keine Einschlussdirektive.

least_conn

Anfragen werden zuerst an das Backend mit der geringsten Anzahl aktiver Verbindungen gesendet (aber unter Berücksichtigung von Gewichtungen):

upstream backend {
    least_conn;

    server backend1.somesite.com;
    server backend2.somesite.com;
}

Hash und IP-Hash

Mit dieser Methode können Sie eine Art dauerhafte Verbindung zwischen Clients und Backends herstellen. Für jede Anfrage berechnet Nginx einen Hash, der aus Text, Webserver-Variablen oder einer Kombination davon besteht, und ordnet ihn dann den Backends zu:

upstream backend {
   hash $scheme$request_uri;

   server backend1.somesite.com;
   server backend2.somesite.com;
   server backend3.somesite.com;
}

IP-Hash funktioniert nur mit HTTP, dies ist eine vordefinierte Option, bei der der Hash anhand der IP-Adresse des Clients berechnet wird:

upstream backend {
   ip_hash;

   server backend1.somesite.com;
   server backend2.somesite.com;
   server backend3.somesite.com;
}

Backend-Gewicht

Wenn bestimmte Backends auf dem Stack leistungsfähiger sind als andere, sind Gewichtungen praktisch:

upstream backend {
    server backend1.somesite.com weight=10;
    server backend2.somesite.com weight=5;
    server backend3.somesite.com;
    server 192.0.0.1 backup;
}

In diesem Beispiel verarbeitet das erste Back-End von 16 Anfragen 10, das zweite 5 und das dritte 1. In diesem Fall erhält der Backup-Server Anfragen nur, wenn die drei Haupt-Back-Ends nicht verfügbar sind.

Überwachung

Wenn Nginx glaubt, dass der Backend-Server nicht verfügbar ist, sendet es vorübergehend keine Anfragen mehr an ihn. Dafür sind zwei Direktiven zuständig:

  • max_fails — legt die Anzahl der fehlgeschlagenen Verbindungsversuche fest, nach denen das Backend für eine bestimmte Zeit als nicht verfügbar gilt;
  • fail_timeout — Zeit, während der der Server als nicht verfügbar gilt.

Die Parameter sehen so aus:

upstream backend {                
    server backend1.somesite.com;
    server backend2.somesite.com max_fails=3 fail_timeout=30s;
    server backend3.somesite.com max_fails=2;
}

Schlussfolgerung

Die Wahl der geeigneten Auswuchtmethode ermöglicht eine gleichmäßigere Lastverteilung. Vergessen Sie nicht Backend-Gewichte, Überwachung und Serverfehlertoleranz.


Linux
  1. So leiten Sie HTTP zu HTTPS in Nginx um

  2. nginx - 413 Anforderungsentität zu groß

  3. So konfigurieren Sie den HAProxy-Load-Balancer

  4. Installieren Sie Nginx unter Windows

  5. Nginx setzt bestimmte IPs auf die Whitelist

So installieren Sie NGINX unter Ubuntu 20.04

So installieren Sie Nginx unter CentOS 7

So installieren Sie Nginx auf Debian 8.2 Cloud Server

So konfigurieren Sie NGINX auf einem CentOS 7-Server

So richten Sie den Nginx-Cache auf dem LEMP-Server ein

So konfigurieren Sie Load Balancing mit NGINX in Jelastic Cloud