Wir freuen uns, die Erweiterung von NGINX Open Source und unserer Plattform für die Anwendungsbereitstellung um eine spannende neue Funktion bekannt zu geben: NGINX Plus – UDP-Lastverteilung. Die neue Funktion baut auf unseren bestehenden TCP- und HTTP-Funktionen auf und macht NGINX zu einem leistungsstarken, benutzerfreundlichen und einheitlichen Frontend für ein noch breiteres Spektrum an Internetanwendungen und -geräten. Wir freuen uns, die Lastverteilungsfunktionen, die mehr als die Hälfte der weltweit meistgenutzten Anwendungen unterstützen, nun auch einer neuen Gruppe von Nutzern zur Verfügung zu stellen, die das Internet der Dinge (IoT) entwickeln.
Warum Unterstützung für UDP-Lastverteilung hinzufügen?
Die meisten Internetanwendungen nutzen HTTP für die Netzwerkkommunikation. Fortschrittliche Protokolle wie SOAP und REST basieren auf HTTP und können von zahlreichen leistungsfähigen Erweiterungen profitieren – Sicherheit durch TLS, Komprimierung mit Gzip und Leistungsverbesserungen durch HTTP/2.
Dennoch müssen viele Anwendungen für unterschiedliche Zwecke mehrere Protokolle verwenden, und viele der zentralen Internetprotokolle sind älter als HTTP. Daher muss eine umfassende Lösung für Lastverteilung und Reverse-Proxying eine breite Palette sowohl TCP- als auch UDP-basierter Protokolle unterstützen.
UDP wird häufig für schlanke Protokolle verwendet, die nicht transaktionsorientiert sind, beispielsweise DNS (zur Auflösung von Domainnamen in Adressen), Syslog (für schlanke Protokollierung) und RADIUS (zur Authentifizierung). Diese Protokolle stellen keine strengen Anforderungen an die Zuverlässigkeit – wenn eine UDP-Nachricht (Datagramm) verworfen wird, kann der Client sie nach Ablauf eines Zeitlimits problemlos erneut senden. Die von diesen Protokollen bereitgestellten Dienste sind jedoch für den ordnungsgemäßen Betrieb von Internetdiensten 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 den TCP-Lastenausgleich eingeführt und damit unserer Benutzer-Community und unseren Geschäftskunden zur Verfügung gestellt. Nun freuen wir uns, unsere Lastenausgleichsfunktionen um den UDP-Lastenausgleich zu erweitern. Mit NGINX und NGINX Plus können Benutzer jetzt UDP-basierte Dienste zuverlässig, skalierbar und leistungsstark bereitstellen.
Wie funktioniert UDP-Lastverteilung?
NGINX überwacht den UDP-Netzwerkverkehr (Protokolle wie DNS, Syslog und RADIUS) an einer oder mehreren vom Administrator festgelegten Adressen (IP-Adresse und Port). Diese Adressen werden veröffentlicht, damit Clients wissen, wohin sie Anfragen für den gewünschten Dienst senden müssen.
Wie beim HTTP- und TCP-Load-Balancing definiert die Konfiguration für das UDP-Load-Balancing eine Upstream-Gruppe – die Gruppe von Ursprungsservern, die den UDP-basierten Dienst bereitstellen – sowie den Algorithmus für die Lastverteilung des Datenverkehrs auf die Server (zum Beispiel Round Robin, Least Connections oder Hash auf Basis der Quell-IP-Adresse). Die Konfiguration definiert außerdem für jeden UDP-Port einen virtuellen Server mit einer proxy_pass-Direktive, die die Upstream-Gruppe angibt, welche den zugehörigen Dienst bereitstellt:
# Load balance UDP‑based DNS traffic across two serversstream {
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 an einem Port ein UDP-Datagramm empfängt (hier eine DNS-Abfrage an Port 53), wählt es mithilfe des konfigurierten Lastverteilungsalgorithmus (hier standardmäßig Round Robin) den Server in der Upstream-Gruppe aus, der das Datagramm verarbeitet. Falls erforderlich, wartet NGINX auf eine Antwort des Servers und leitet diese Antwort (sowie alle weiteren innerhalb des Zeitlimits empfangenen Pakete) an den Client zurück.
Wenn ein Server nicht auf eine Anfrage antwortet, markiert NGINX ihn als „ausgefallen“ und sendet vorübergehend keine Datagramme mehr an ihn. Alle paar Sekunden überprüft NGINX den Zustand des Servers, indem es ihm eine geringe Menge an Live-Datenverkehr sendet, um festzustellen, ob er wieder verfügbar ist.
NGINX Plus R9 wird Anwendungs-Health-Checks (auch als „asynchron“ oder „synthetisch“ bezeichnet) für UDP-Dienste umfassen, ähnlich denen für HTTP- und TCP-Datenverkehr. Sie können NGINX Plus so konfigurieren, dass spezielle UDP-Anfragen an die Upstream-Server gesendet werden, und festlegen, welche Art von Antwort die Server zurückgeben müssen, damit sie als fehlerfrei gelten.
Weitere Funktionen, die beim UDP-Load-Balancing unterstützt werden, sind die Protokollierung von Transaktionen in einem Zugriffsprotokoll nach Art eines Webservers, IP-adressbasierte Zugriffssteuerungslisten sowie verschiedene Funktionen zur Ratenbegrenzung.
In NGINX Plus R9 werden die von dem Statusmodul bereitgestellten Statistiken zur Live-Aktivitätsüberwachung auch UDP-Metriken umfassen. Außerdem können Sie UDP-Upstream-Gruppen im laufenden Betrieb neu konfigurieren, und zwar über eine HTTP-basierte API und DNS, wie dies derzeit bereits bei HTTP- und TCP-Servern möglich ist.
Anwendungsfälle für UDP-Lastverteilung
UDP-Load-Balancing deckt zwei zentrale Anwendungsfälle ab: Hochverfügbarkeit und horizontale Skalierung. UDP garantiert konzeptbedingt keine Ende-zu-Ende-Übertragung von Daten. Daher muss die Clientsoftware Fehler auf Netzwerkebene und erneute Übertragungsversuche selbst handhaben. UDP-basierte Protokolle sehen in der Regel ein Serverpaar vor. Kann ein Client keine Verbindung zu seinem bevorzugten Server herstellen, muss er eine festgelegte Zeitüberschreitung abwarten, bevor er den anderen Server kontaktiert. Dies kann bei UDP-Transaktionen zu erheblichen Verzögerungen führen.
Durch den Einsatz von NGINX oder NGINX Plus als hochverfügbarer und zuverlässiger Load Balancer vor Ihren UDP-Servern lassen sich derartige Verzögerungen vermeiden oder reduzieren. Clients senden UDP-Anfragen an den NGINX- oder NGINX Plus-Load-Balancer. Dieser überwacht den Zustand und die Verfügbarkeit der UDP-Server und leitet keine Anfragen an ausgefallene oder überlastete Server weiter. Dadurch treten bei den Clients keine Verbindungs- oder Anfragefehler auf, sodass auch keine Zeitüberschreitungen durch erneute Anfrageversuche entstehen.
Durch den Einsatz von NGINX oder NGINX Plus als Load Balancer lässt sich eine UDP-Anwendung außerdem skalieren, um ein hohes Datenverkehrsaufkommen zu bewältigen. Bei einer typischen UDP-Bereitstellung sind den Clients höchstens zwei UDP-Server bekannt. Für die Skalierung zur Deckung einer hohen Nachfrage sind jedoch wesentlich mehr UDP-Server erforderlich. In diesem Szenario senden die Clients ihre UDP-Anfragen an die eine oder zwei bekannten NGINX- oder NGINX Plus-Instanzen, die die Anfragen auf die größere Anzahl von UDP-Servern verteilen, die tatsächlich zur Bewältigung der Last benötigt werden.
Der UDP-Lastenausgleich 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 übernehmen, wie sie beispielsweise in IoT-Umgebungen zum Einsatz kommen.
Erste Schritte
Die genauen Zeitpunkte für die Verfügbarkeit des UDP-Lastenausgleichs in unseren Releases sind wie folgt:
- Heute – Wir haben die erste Version des Codes für UDP-Load-Balancing in das Open-Source-Repository NGINX software repository eingestellt. Early Adopters und alle, die unsere Implementierung testen möchten, können den Quellcode klonen und eine NGINX-Binärdatei mit UDP-Load-Balancing-Funktionen erstellen. Wir freuen uns über Ihr Feedback auf der nginx mailing list.
- Woche vom 28. März 2016 – NGINX Version 1.9.13 wird veröffentlicht und UDP-Lastverteilung unterstützen (ebenso wie die auf dieser Version basierenden vorkompilierten Binärdateien).
- April 2016 – NGINX Plus Release 9 (R9) wird UDP-Lastverteilung umfassen. NGINX Plus, unsere kommerzielle Plattform für die Anwendungsbereitstellung, wird die UDP-Lastverteilungsfunktionen der Open-Source-Version um zusätzliche Funktionen für den Aufbau und die Überwachung zuverlässiger, skalierbarer UDP-basierter Dienste erweitern.
NGINX und NGINX Plus bieten eine umfassende Plattform für Lastverteilung und Anwendungsbereitstellung für eine Vielzahl von Internetprotokollen. Ganz gleich, ob Sie HTTP-basierte Anwendungen, TCP-Anwendungen auf niedrigerer Ebene oder UDP-basierte Protokolle bereitstellen: Mit NGINX und NGINX Plus profitieren Sie von hoher Verfügbarkeit, Zuverlässigkeit, Skalierbarkeit und Leistung in einer einzigen schlanken Anwendung. Wir sind von der neuen Funktion zur UDP-Lastverteilung und ihrem Potenzial begeistert, einer völlig neuen Geräteklasse leistungsstarke Lastverteilung und eine reibungslose Anwendungsbereitstellung zu ermöglichen.
Möchten Sie sich bereits vor der Einführung des UDP-Load-Balancings 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.
Über den Autor

Ähnliche Blogbeiträge
Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln
Beim NGINX Sprint 2022 besinnen wir uns auf unsere Open-Source-Wurzeln. Erfahren Sie mehr über die Initiativen, die wir im kommenden Jahr verfolgen, und teilen Sie uns mit, was Sie sich wünschen.

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen
Ein Ingress-Controller kann eines der leistungsstärksten Tools in Ihrem Kubernetes-Stack sein. Erfahren Sie, wie Sie Ihre Ingress-Anforderungen ermitteln, um die beste Option auszuwählen.
Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet
Wir haben kürzlich den Lösungsleitfaden zum NGINX Ingress Controller um Empfehlungen zur Dimensionierung für Amazon Elastic Kubernetes Service (EKS) ergänzt. In diesem Blogbeitrag erläutern wir, wie wir diese Empfehlungen erarbeitet haben, und stellen Ihnen alle Informationen zur Verfügung, die Sie benötigen, um selbst ähnliche Tests durchzuführen.

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77
Bei der Fehlersuche bei Datenverkehrsproblemen zwischen NGINX und Upstream-Servern konnte CDN77 die benötigten Daten nur aus dem Fehlerprotokoll mit aktivierter Debug-Ausgabe beziehen, was die Leistung beeinträchtigt und riesige Dateien erzeugt. Daher entwickelte das Team ein neues benutzerdefiniertes Modul, das ausschließlich die benötigten Daten protokolliert.
Ankündigung von NGINX Plus R16
NGINX Plus R16 ist eine einheitliche, elastische Ingress- und Egress-Schicht für Anwendungen, die die Funktionen eines Load Balancers, API-Gateways und einer WAF vereint und neue Features wie clusterfähige Ratenbegrenzung, Schlüssel-Wert-Speicher, „Random with Two Choices“, verbessertes UDP-Load-Balancing und vieles mehr bietet.
5 Gründe für den Umstieg auf softwarebasiertes Load Balancing
Entdecken Sie fünf Gründe für den Wechsel zu einem softwarebasierten Load Balancer wie NGINX Plus, darunter Kosteneinsparungen, die Einführung von DevOps und eine einheitliche Lösung für alle Umgebungen.