Konfigurieren von NGINX für Basic Load Balancing

0
35
NGINX

NGINX ist eine Häufig verwendete web-server, aber es macht auch einen tollen job, der als reverse-proxy und load-balancer—, ein Netzwerk-Gerät entworfen, um den Großteil Ihres Verkehrs-und route-Anfragen an mehrere verschiedene web-Server.

Wie NGINX Load Balancing Funktioniert

Das grundlegende Prinzip eines Load-Balancer ist, dass es sitzt zwischen dem Benutzer und einem Satz von Servern und proxies, die Anfragen für Sie. Dies erfolgt in der Regel mit zwei oder mehr Servern, so dass der Verkehr verteilt werden können, mehr leicht zwischen Ihnen.

Die meisten Konfiguration erfolgt wie NGINX wählt die server zum weiterleiten zu. Der Standardwert ist round-robin, die das senden von Anforderungen an jeden server in der Reihenfolge aus, die für eine ausgeglichene Lastverteilung.

Jedoch, es ist nicht immer so einfach. Viele web-Anwendungen erfordern irgendeine form von session-Persistenz, das heißt, der Benutzer muss Zugriff auf die gleichen server für Ihre gesamte Sitzung. Zum Beispiel, ein Warenkorb gespeichert werden können, die lokal auf einem application server, und wenn der Benutzer schaltet Server zu Mitte der session die Anwendung konnte glitch. Natürlich, viele dieser Szenarien kann behoben werden, mit der besseren Anwendungs-Infrastruktur und zentrale datenspeicher, sondern die session-Persistenz erforderlich ist, von vielen Menschen.

In NGINX, die Server, leiten Sie zu bekannt ist, als einen upstream -, und konfiguriert ist wie eine Aufzählung von Adressen:

upstream backend {
server backend1.example.com Gewicht=5;
server backend2.example.com;
}

Diese upstreams haben eine Menge von Optionen; hier haben wir einen Gewicht, die Priorisierung von diesem server mehr oft (besonders nützlich, wenn Sie verschiedene Größen haben). Sie können auch die max verbindungen und verschiedene timeouts. Wenn Sie mithilfe von NGINX Plus, können Sie auch Gesundheits-checks, so dass verbindungen nicht weitergeleitet werden, zu ungesund-Server.

Die grundlegende form des session-Persistenz über ein IP-hash. NGINX wird die IP, Benutzer zu identifizieren und dann stellen Sie sicher, dass diese Benutzer nicht wechseln Server mid-session:

upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}

Der IP-hash ist erforderlich für socket-basierte Anwendungen und erfordern etwas Ausdauer. Wenn Sie nicht möchten, verwenden Sie die IP-Adresse, die Sie anpassen können, dieser hash:

upstream backend {
hash, $Schema,$request_uri Einklang;
server backend1.example.com;
server backend2.example.com;
}

Wenn Sie nicht brauchen, jede Art von session-Persistenz, können Sie die round-robin-Auswahl ein wenig schlauer, indem Sie die server mit den wenigsten verbindungen:

upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}

Oder, basierend auf die aktuell reagiert am schnellsten:

upstream backend {
least_time (Kopf – | last_byte);
server backend1.example.com;
server backend2.example.com;
}

NGINX Plus ein paar andere Formen von session-Persistenz, aber die IP-hashing wird für die meisten Anwendungen.

Proxying s Backend

Sobald Sie haben Ihre back-End konfiguriert wird, können Sie Anforderungen senden, um Sie aus Ihrer Lage blockiert, über proxy_pass mit einem URI für das backend.

server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}

Natürlich, wenn Sie HTTPS verwenden, müssen Sie senden Sie die Anfrage mit HTTPS:

server {
listen 443 ssl;
server_name example.com;

ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/certs/server.Schlüssel;
ssl_client_certificate /etc/ssl/certs/ca.crt;

location /{
proxy_pass https://backend;
}
}