BLOG | NGINX

Ankündigung des UDP-Lastausgleichs in NGINX und NGINX Plus

NGINX-Teil-von-F5-horiz-schwarz-Typ-RGB
Faisal Memon Miniaturbild
Faisal Memon
Veröffentlicht am 15. März 2016

Wir sind stolz, die Erweiterung von NGINX Open Source und unserer Anwendungsbereitstellungsplattform NGINX Plus um eine spannende neue Funktion bekannt zu geben – UDP-Lastausgleich. Die neue Funktion baut auf unseren vorhandenen TCP- und HTTP-Funktionen auf und macht NGINX zu einem leistungsstarken, benutzerfreundlichen und konsistenten Frontend für eine noch größere Bandbreite an Internetanwendungen und -geräten. Wir freuen uns, die Lastausgleichsfunktionen, die hinter mehr als der Hälfte der weltweit am häufigsten genutzten Anwendungen stecken, auf eine neue Gruppe von Benutzern auszuweiten, die das Internet der Dinge (IoT) aufbauen.

Warum Unterstützung für UDP-Lastausgleich hinzufügen?

Die meisten Internetanwendungen sind für die Netzwerkkommunikation auf HTTP angewiesen. Erweiterte Protokolle wie SOAP und REST basieren auf HTTP, das von zahlreichen umfangreichen Erweiterungen profitieren kann – Sicherheit durch TLS, Komprimierung durch Gzip und Leistungsverbesserungen durch HTTP/2 .

Dennoch müssen viele Anwendungen mehrere Protokolle für unterschiedliche Zwecke verwenden und viele der wichtigsten Internetprotokolle sind älter als HTTP. Aus diesem Grund muss eine Komplettlösung für Lastenausgleich und Reverse-Proxying eine breite Palette von Protokollen unterstützen, sowohl TCP-basierte als auch UDP-basierte.

UDP wird häufig für einfache Protokolle verwendet, die nicht transaktionaler Natur sind, wie etwa DNS (zum Auflösen von Domänennamen in Adressen), Syslog (für einfache Protokollierung) und RADIUS (für die Authentifizierung). Diese Protokolle stellen keine strengen Anforderungen an die Zuverlässigkeit – wenn eine UDP-Nachricht ( Datagramm ) verloren geht, kann der Client die Nachricht nach einer Zeitüberschreitung sicher erneut senden –, aber die Dienste, die sie bereitstellen, sind für die ordnungsgemäße Funktionsweise der Internetdienste von entscheidender Bedeutung. Aufgrund seines geringen Bandbreitenbedarfs entwickelt sich UDP auch zu einem der bevorzugten Protokolle für neue IoT-Anwendungen.

Vor einem Jahr hat NGINX unserer Community aus Benutzern und gewerblichen Kunden den TCP-Lastausgleich vorgestellt . Wir freuen uns, unsere Lastausgleichsfunktionen jetzt um die Funktion UDP-Lastausgleich erweitern zu können. Mit NGINX und NGINX Plus können Benutzer jetzt UDP-basierte Dienste mit Zuverlässigkeit, Skalierbarkeit und Leistung bereitstellen.

Wie funktioniert der UDP-Lastausgleich?

NGINX überwacht den UDP-Netzwerkverkehr (Protokolle wie DNS, Syslog und RADIUS) an einer oder mehreren Adressen (IP-Adresse und Port), wie vom Administrator definiert. Diese Adressen werden veröffentlicht, damit die Kunden wissen, wohin sie Anfragen für den gewünschten Dienst senden müssen.

Wie beim HTTP- und TCP-Lastausgleich definiert die Konfiguration für den UDP-Lastausgleich eine Upstream-Gruppe – die Menge der Ursprungsserver, die den UDP-basierten Dienst bereitstellen – und den Algorithmus , der beim Lastausgleich des Datenverkehrs zwischen den Servern verwendet werden soll (z. B. Round Robin, Least Connections oder Hash basierend auf der Quell-IP-Adresse). Die Konfiguration definiert außerdem einen virtuellen Server für jeden UDP-Port mit einer Proxy_pass- Direktive, die die Upstream-Gruppe benennt, die den zugehörigen Dienst bereitstellt:

# Lastenausgleich des UDP-basierten DNS-Verkehrs über zwei Serverstream {
upstream dns_upstreams {
server 192.168.136.130:53;
server 192.168.136.131:53;
}

server {
listen 53 udp;
proxy_pass dns_upstreams;
proxy_timeout 1s;
proxy_responses 1;
error_log logs/dns.log;
}
}

Wenn NGINX ein UDP-Datagramm auf einem Port empfängt (hier eine DNS-Abfrage auf Port 53), verwendet es den konfigurierten Lastausgleichsalgorithmus (hier den Standard-Round Robin), um auszuwählen, welcher Server in der Upstream-Gruppe es verarbeiten wird. Gegebenenfalls wartet NGINX auf eine Antwort vom Server und leitet diese Antwort (und alle nachfolgenden Pakete, die innerhalb des Timeout-Zeitraums empfangen werden) an den Client zurück.

Wenn ein Server nicht auf eine Anfrage antwortet, markiert NGINX dies als „fehlgeschlagen“ und sendet vorübergehend keine Datagramme mehr an den Server. Alle paar Sekunden prüft NGINX den Zustand des Servers, um festzustellen, ob er sich erholt hat, indem ihm eine kleine Menge Live-Datenverkehr gesendet wird.

NGINX Plus R9 wird Anwendungsintegritätsprüfungen (auch „asynchron“ oder „synthetisch“ genannt) für UDP-Dienste enthalten, ähnlich denen für HTTP- und TCP-Verkehr . Sie können NGINX Plus so konfigurieren, dass spezielle UDP-Anfragen an die Upstream-Server gesendet werden, und die Art der Antwort definieren, die die Server zurückgeben müssen, um als fehlerfrei zu gelten.

Zu den weiteren vom UDP-Lastausgleich unterstützten Funktionen gehören die Protokollierung von Transaktionen in einem Zugriffsprotokoll im Webserver-Stil , IP-adressbasierte Zugriffskontrolllisten und eine Reihe von Funktionen zur Geschwindigkeitsbegrenzung.

In NGINX Plus R9 enthalten die vom Statusmodul bereitgestellten Statistiken zur Live-Aktivitätsüberwachung UDP-Metriken, und Sie können UDP-Upstream-Gruppen im laufenden Betrieb mithilfe einer HTTP-basierten API und DNS neu konfigurieren , wie Sie es derzeit für HTTP- und TCP-Server können.

Anwendungsfälle für UDP-Lastausgleich

Der UDP-Lastausgleich deckt zwei wichtige Anwendungsfälle ab: hohe Verfügbarkeit und horizontale Skalierung. UDP garantiert konzeptgemäß keine End-to-End -Datenübertragung und erfordert daher, dass die Client-Software mit Fehlern und erneuten Übertragungen auf Netzwerkebene umgeht. Auf UDP basierende Protokolle definieren normalerweise ein Serverpaar. Wenn ein Client keine Verbindung zu seinem bevorzugten Server herstellen kann, muss er eine festgelegte Zeitüberschreitung abwarten, bevor er es beim anderen Server versuchen kann. Dies kann zu langen Verzögerungen bei UDP-Transaktionen führen.

Durch die Bereitstellung von NGINX oder NGINX Plus als hochverfügbarer und zuverlässiger Load Balancer vor Ihren UDP-Servern können Sie Verzögerungen dieser Art vermeiden oder reduzieren. Clients senden UDP-Anfragen an den Load Balancer von NGINX oder NGINX Plus, der die Integrität und Verfügbarkeit von UDP-Servern überwacht und keine Anfragen an ausgefallene oder überlastete Server sendet. Bei den Clients kommt es weder zu Verbindungs- noch zu Anforderungsfehlern, und daher treten auch keine Timeouts auf, die mit der Wiederholung von Anforderungen verbunden sind.

Durch die Verwendung von NGINX oder NGINX Plus als Lastenausgleich können Sie eine UDP-Anwendung auch skalieren, um hohen Datenverkehr zu bewältigen. Bei einer typischen UDP-Bereitstellung sind den Clients höchstens zwei UDP-Server bekannt. Für eine Skalierung zur Befriedigung hoher Anforderungen sind jedoch deutlich mehr UDP-Server erforderlich. In diesem Szenario senden Clients ihre UDP-Anfragen an eine oder zwei bekannte NGINX- oder NGINX-Plus-Instanzen, die die Anfragen auf die größere Anzahl von UDP-Servern verteilen, die zur Bewältigung der Last tatsächlich erforderlich sind.

UDP-Lastausgleich mit NGINX und NGINX Plus eignet sich für jede UDP-basierte Anwendung, die Daten sendet und optional eine oder mehrere Antworten erwartet. NGINX kann auch den Lastenausgleich für proprietäre UDP-basierte Protokolle durchführen, wie sie in IoT-Umgebungen zu finden sind.

Erste Schritte

Der genaue Zeitpunkt der Verfügbarkeit des UDP-Lastausgleichs in unseren Versionen ist wie folgt:

  • Heute – Wir haben die erste Version des Codes für den UDP-Lastausgleich in das Open-Source -Software-Repository NGINX übertragen. Frühe Anwender und diejenigen, die unsere Implementierung testen möchten, können die Quelle klonen und eine NGINX-Binärdatei mit UDP-Lastausgleichsfunktionen erstellen. Wir freuen uns über Ihr Feedback zur Nginx-Mailingliste .
  • Woche vom 28. März 2016 – NGINX Version 1.9.13 wird veröffentlicht und enthält UDP-Lastausgleich (ebenso wie die vorgefertigten Binärdateien, die auf dieser Version basieren).
  • April 2016 – NGINX Plus Release 9 (R9) wird UDP-Lastausgleich beinhalten. NGINX Plus, unsere kommerzielle Anwendungsbereitstellungsplattform, erweitert die UDP-Lastausgleichsfunktionen in Open Source um zusätzliche Funktionen zum Erstellen und Überwachen zuverlässiger, skalierbarer UDP-basierter Dienste.

NGINX und NGINX Plus bieten eine vollständige Plattform für Lastausgleich und Anwendungsbereitstellung für eine breite Palette von Internetprotokollen. Unabhängig davon, ob Sie HTTP-basierte Anwendungen, TCP-Anwendungen auf niedrigerer Ebene oder UDP-basierte Protokolle bereitstellen, können Sie sich darauf verlassen, dass NGINX und NGINX Plus hohe Verfügbarkeit, Zuverlässigkeit, Skalierbarkeit und Leistung in einer einzigen, leichten Anwendung bieten. Wir sind sehr gespannt auf die neue UDP-Lastausgleichsfunktion und ihr Potenzial, Hochleistungslastausgleich und reibungslose Anwendungsbereitstellung auf einer ganzen Reihe neuer Geräte zu ermöglichen.

Möchten Sie sich vor der Veröffentlichung des UDP-Lastausgleichs in Release 9 mit NGINX Plus vertraut machen? Starten Sie noch heute Ihre kostenlose 30-Tage-Testversion oder kontaktieren Sie uns, um Ihre Anwendungsfälle zu besprechen .


„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."