Lastausgleich besteht darin, die Leistung und Verfügbarkeit Ihrer Anwendung zu erhöhen, indem der Verkehr auf mehrere Server verteilt wird. Nginx verwendet verschiedene Algorithmen, um den Anforderungsverkehr zu bewältigen, einschließlich Umfragen, IP -Hashing und minimalen Verbindungen.
(1) Round Robin : Dies ist die Standard -Lastausgleichsrichtlinie von Nginx, und Anfragen werden in der Reihenfolge des Servers zugewiesen.
(2) IP -Hash : Diese Richtlinie ermittelt den angeforderten Zielserver basierend auf der Client -IP -Adresse und stellt sicher, dass die Anforderung für dieselbe IP immer von demselben Server verarbeitet wird.
(3) geringste Verbindung : Diese Richtlinie weist dem Server Anfragen mit der geringsten Anzahl von Verbindungen zu, die derzeit die niedrigste Anzahl von Verbindungen haben.
Hier ist ein einfaches Beispiel für die Konfiguration von Nginx Load Balancing:
http { Upstream Backend { Server Backend1.example.com; Server Backend20Example.com; Server Backend3.example.com; } Server { Hören Sie 80; Standort / { proxy_pass http: // Backend; } } }
In dieser Konfiguration definieren wir einen Upstream -Block mit drei Backend -Servern und leiten die Anforderung über die Anweisung proxy_pass an den Backend -Server weiter.
Der Disaster Recovery -Plan stellt sicher, dass das System immer noch Dienste anbieten kann, wenn ein Server ausfällt. Durch die Verwendung von Nginx -Lastausgleich kann auf folgende Weise eine Katastrophenwiederherstellung erzielt werden:
(1) Gesundheitsprüfung : Nginx kann den Gesundheitszustand des Backend -Servers regelmäßig überprüfen. Wenn ein Server nicht reagiert oder einen Fehler zurückgibt, leitet NGINX den Datenverkehr automatisch an andere gesunde Server weiter.
Hier ist ein Beispiel für die Konfiguration einer Gesundheitsprüfung:
http { Upstream Backend { Server Backend1.example.com max_fails = 2 fail_timeout = 30s; Server Backend20Example.com max_fails = 2 fail_timeout = 30s; Server Backend3.example.com max_fails = 2 fail_timeout = 30s; Überprüfen Sie das Intervall = 3000 Aufstieg = 2 Fall = 5 Zeitüberschreitung = 1000; check_http_send "Head /check http /1.0"; check_http_exect_alive http_2xx http_3xx; } Server { Hören Sie 80; Standort / { proxy_pass http: // Backend; } } }
In dieser Konfiguration setzen wir die maximale Anzahl von Ausfällen (max_fails) und fehlerfrei (fail_timeout) für jeden Backend -Server. Wenn ein Server mehr als eine vorgegebene Häufigkeit ununterbrochen fehlschlägt, markiert Nginx ihn als nicht verfügbar.
(2) Backup-Server : Wenn alle primären Server nicht verfügbar sind, leitet NGINX den Datenverkehr an den vorkonfigurierten Sicherungsserver weiter.
Hier ist ein Beispiel für die Konfiguration eines Backup -Servers:
http { Upstream Backend { Server Backend1.example.com Backup; Server Backend20Example.com; Server Backend3.example.com; } Server { Hören Sie 80; Standort / { proxy_pass http: // Backend; } } }
In diesem Beispiel ist Backend1.example.com als Backup -Server konfiguriert.
Um die Verwaltung von NGINX -Konfigurationsverwaltung zu vereinfachen, können Automatisierungs -Tools und -Skripte uns helfen, Konfigurationsdateien automatisch zu generieren und zu aktualisieren. Hier sind zwei gängige Automatisierungsmethoden:
(1) Nginx Plus : Nginx Plus ist die offizielle kommerzielle Version, die erweiterte Funktionen wie dynamisches Konfigurationsmanagement, Fehlererkennung, Lastausgleich usw. bietet und in API -Gateways, Caches und andere Systeme integriert werden kann.
(2) Verwenden von LUA -Skripten : NGINX unterstützt das Generieren von Konfigurationsdateien über LuA -Skripte, was eine flexible Möglichkeit zur Automatisierung der Konfiguration bietet.
Hier ist ein Beispiel für die Verwendung von LUA -Skript, um eine Nginx -Konfiguration zu generieren:
- generate_backend.lua Lokale Backend_Servers = { "Backend1.example.com", "Backend2.example.com", "Backend3.example.com" } Lokal upstream = "Upstream Backend {\ n" Für i tun der Server in Ipairs (Backend_Servers) Upstream = Upstream .. "Server" .. Server .. "; \ n" Ende Upstream = Upstream .. "} \ n" Druck (stromaufwärts)
In diesem Beispiel generiert das LUA -Skript einen vorgelagerten Block mit drei Backend -Servern.
Sie können das Skript ausführen und die Konfigurationsdatei über den folgenden Befehl generieren:
$ lua generate_backend.lua> nginx.conf
Durch eine angemessene Konfiguration und das automatisierte Management kann die Lastausgleichsfunktion von NGINX nicht nur die Anwendungsleistung verbessern, sondern auch die Katastrophenwiederherstellungsfunktionen und die Wartbarkeit des Systems verbessern.