BLOG | NGINX

NGINX Plus und Microsoft Azure Load Balancer

NGINX-Teil-von-F5-horiz-schwarz-Typ-RGB
Michael Pleshakov Miniaturbild
Michael Pleshakov
Veröffentlicht am 25. Juni 2021

[Herausgeber – Dieser Beitrag wurde aktualisiert, um die ab Juni 2021 von NGINX Plus und den Azure-Lastausgleichsdiensten unterstützten Funktionen widerzuspiegeln. Es bezieht sich auch auf die NGINX Plus API , die das in der Originalversion des Beitrags erwähnte separate dynamische Konfigurationsmodul ersetzt und veraltet.]

Kunden, die Microsoft Azure verwenden, haben drei Optionen für den Lastenausgleich: NGINX Plus , die Azure-Lastausgleichsdienste oder NGINX Plus in Verbindung mit den Azure-Lastausgleichsdiensten. Dieser Beitrag soll Ihnen genügend Informationen für eine Entscheidung geben und zeigt Ihnen außerdem, wie Sie durch die Verwendung von NGINX Plus mit Azure Load Balancer einen hochverfügbaren HTTP-Load Balancer mit umfassender Layer 7-Funktionalität erhalten.

Überblick

Microsoft Azure bietet seinen Benutzern zwei Möglichkeiten für einen Lastenausgleich: Azure Load Balancer für grundlegenden TCP/UDP-Lastenausgleich (auf Ebene 4, der Netzwerkebene) und Azure Application Gateway für HTTP/HTTPS-Lastenausgleich (auf Ebene 7, der Anwendungsebene) . Obwohl diese Lösungen für einfache Anwendungsfälle geeignet sind, bieten sie nicht viele der Funktionen, die standardmäßig bei NGINX Plus enthalten sind.

Hier ist ein allgemeiner Vergleich zwischen NGINX Plus und den Azure-Lastausgleichsangeboten:

Besonderheit NGINX Plus Azure-Lastenausgleich Azure-Anwendungsgateway NGINX Plus und Azure Load Balancer
HTTP- und HTTPS-Lastenausgleich
HTTP/2-Lastenausgleich
WebSocket-Lastausgleich
TCP/UDP-Lastausgleich
Lastausgleichsmethoden Fortschrittlich Einfach Einfach Fortschrittlich
Sitzungspersistenz Fortschrittlich Einfach Einfach Fortschrittlich
HTTP-Integritätsprüfungen Fortschrittlich Einfach Einfach Fortschrittlich
TCP/UDP-Integritätsprüfungen Fortschrittlich Einfach Fortschrittlich
SSL/TLS-Terminierung
Raten- und Verbindungslimits
URL-Umschreibung und Weiterleitung
Zuordnung von URL-Anforderungen
Aktiv/aktiver NGINX Plus-Cluster

Sehen wir uns nun einige der Unterschiede zwischen NGINX Plus und den Azure-Lastausgleichsdiensten, ihre einzigartigen Funktionen und die Zusammenarbeit von NGINX Plus und Azure-Lastausgleichsdiensten an.

Vergleich der Load Balancing-Dienste von NGINX Plus und Azure

Methoden zum Lastenausgleich

NGINX Plus bietet neben der standardmäßigen Round-Robin-Methode mehrere Möglichkeiten zum Lastausgleich :

  • Wenigste Verbindungen – Jede Anfrage wird an den Server mit der geringsten Anzahl aktiver Verbindungen gesendet.
  • Geringste Zeit – Jede Anfrage wird an den Server mit der niedrigsten Punktzahl gesendet, die aus einer gewichteten Kombination aus durchschnittlicher Latenz und niedrigster Anzahl aktiver Verbindungen berechnet wird.
  • IP-Hash – Jede Anfrage wird an den Server gesendet, der durch die Quell-IP-Adresse der Anfrage bestimmt wird.
  • Generischer Hash – Jede Anfrage wird an den Server gesendet, der anhand eines benutzerdefinierten Schlüssels bestimmt wird, der jede Kombination aus Text und NGINX- Variablen enthalten kann, z. B. die Variablen, die den Headerfeldern „Quell- IP- Adresse“ und „Quellport oder der URI entsprechen.
  • Zufällig – Jede Anfrage wird an einen zufällig ausgewählten Server gesendet. Wenn der Parameter „Zwei “ enthalten ist, wählt NGINX Plus zwei Server nach dem Zufallsprinzip aus und wählt dann zwischen ihnen entweder den Algorithmus „Least Connections“ (Standard) oder „Least Time“, je nach Konfiguration.

Alle Methoden können erweitert werden, indem jedem Backend-Server unterschiedliche Gewichtungswerte zugewiesen werden. Einzelheiten zu den Methoden finden Sie im NGINX Plus Admin Guide.

Azure Load Balancer bietet eine Lastenausgleichsmethode namens Hash , die standardmäßig einen Schlüssel basierend auf den Headerfeldern Quell- IP- Adresse , Quellport , Ziel- IP- Adresse , Zielport und Protokoll verwendet , um einen Back-End-Server auszuwählen.

Azure Application Gateway bietet nur eine Round‑Robin‑ Methode.

Sitzungspersistenz

Sitzungspersistenz , auch als Sticky Sessions oder Sitzungsaffinität bezeichnet, wird benötigt, wenn eine Anwendung erfordert, dass alle Anfragen eines bestimmten Clients weiterhin an denselben Backend-Server gesendet werden, weil der Clientstatus nicht zwischen den Backend-Servern geteilt wird.

NGINX Plus unterstützt drei erweiterte Methoden zur Sitzungspersistenz :

  • Sticky Cookie – NGINX Plus fügt der ersten Antwort der Upstream-Gruppe für einen bestimmten Client ein Sitzungscookie hinzu. Dieses Cookie identifiziert den Backend-Server, der zur Verarbeitung der Anfrage verwendet wurde. Der Client fügt dieses Cookie in nachfolgende Anfragen ein und NGINX Plus verwendet es, um die Client-Anforderung an denselben Backend-Server weiterzuleiten.
  • Sticky Learn – NGINX Plus überwacht Anfragen und Antworten, um Sitzungskennungen (normalerweise Cookies) zu lokalisieren und verwendet diese, um den Server für nachfolgende Anfragen in einer Sitzung zu bestimmen.
  • Sticky Route – Eine Zuordnung zwischen Routenwerten und Backend-Servern kann so konfiguriert werden, dass NGINX Plus Anfragen nach einem Routenwert überwacht und den passenden Backend-Server auswählt.

NGINX Plus bietet außerdem zwei grundlegende Methoden zur Sitzungspersistenz, die als zwei der oben beschriebenen Methoden zum Lastenausgleich implementiert sind:

  • IP-Hash – Der Backend-Server wird durch die IP-Adresse der Anfrage bestimmt.
  • Hash – Der Backend-Server wird anhand eines benutzerdefinierten Schlüssels , beispielsweise Quell -IP -Adresse und Quellport oder der URI, bestimmt.

Azure Load Balancer unterstützt das Äquivalent der NGINX Plus-Hash-Methode, obwohl der Schlüssel auf bestimmte Kombinationen der Headerfelder „Quell- IP- Adresse“ , „Quellport , „Ziel- IP- Adresse“ , „Zielport und „Protokoll“ beschränkt ist.

Azure Application Gateway unterstützt das Äquivalent der Sticky Cookie-Methode von NGINX Plus mit den folgenden Einschränkungen: Sie können den Namen des Cookies, sein Ablaufdatum, die Domäne, den Pfad oder die Cookieattribute „HttpOnly“ oder „Secure“ nicht konfigurieren.

Notiz: Wenn Sie Azure Load Balancer, die NGINX Plus IP-Hash-Methode oder die NGINX Plus-Hash-Methode mit im Schlüssel enthaltener Quell -IP -Adresse verwenden, funktioniert die Sitzungspersistenz nur dann ordnungsgemäß, wenn die IP-Adresse des Clients während der gesamten Sitzung gleich bleibt. Dies ist nicht immer der Fall, beispielsweise wenn ein mobiler Client von einem WLAN-Netzwerk zu einem Mobilfunknetzwerk wechselt. Um sicherzustellen, dass die Anfragen weiterhin denselben Backend-Server erreichen, ist es besser, eine der oben aufgeführten erweiterten Methoden zur Sitzungspersistenz zu verwenden.

Gesundheitschecks

Azure Load Balancer und Azure Application Gateway unterstützen grundlegende Anwendungsintegritätsprüfungen . Sie können die URL angeben, die der Load Balancer anfordert. Er betrachtet den Backend-Server als intakt, wenn er die erwartete HTTP-Nachricht empfängt.200 Rückgabecode. Sie können die Häufigkeit der Integritätsprüfung und die Zeitüberschreitung angeben, bevor der Server als fehlerhaft betrachtet wird. Mit Azure Application Gateway können Sie auch den erwarteten Antwortcode anpassen und mit dem Inhalt des Antworttexts abgleichen.

NGINX Plus erweitert diese Funktionalität um erweiterte Integritätsprüfungen . Zusätzlich zur Angabe der zu verwendenden URL können Sie mit NGINX Plus Header in die Anfrage einfügen, nach verschiedenen Antwortcodes suchen und sowohl die Header als auch den Text der Antwort untersuchen.

Eine nützliche zugehörige Funktion in NGINX Plus ist der langsame Start . NGINX Plus steigert die Last langsam auf einen neuen oder kürzlich wiederhergestellten Server, damit dieser nicht durch Verbindungen überlastet wird. Dies ist nützlich, wenn Ihre Backend-Server eine gewisse Aufwärmzeit benötigen und ausfallen, wenn ihnen ihr voller Verkehrsanteil zugewiesen wird, sobald sie als fehlerfrei angezeigt werden.

NGINX Plus unterstützt auch Integritätsprüfungen für TCP- und UDP -Server, sodass Sie eine zu sendende Zeichenfolge und eine Zeichenfolge angeben können, nach der in der Antwort gesucht werden soll.

Azure Load Balancer unterstützt TCP-Integritätsprüfungen, bietet dieses Überwachungsniveau jedoch nicht.

SSL/TLS-Terminierung

NGINX Plus unterstützt die SSL/TLS-Terminierung , ebenso wie Azure Application Gateway . Azure Load Balancer tut dies nicht.

Verbindungs- und Ratenbegrenzungen

Mit NGINX Plus können Sie mehrere Limits konfigurieren, um den Datenverkehr zu und von Ihrer NGINX Plus-Instanz zu steuern. Dazu gehören die Begrenzung eingehender Verbindungen , der Verbindungen zu Backend-Knoten , der Rate eingehender Anfragen und der Datenübertragungsrate von NGINX Plus an Clients.

Azure Application Gateway und Azure Load Balancer unterstützen keine Raten- oder Verbindungslimits. Sie können jedoch andere Azure-Dienste verwenden, um die Ratenbegrenzung zu konfigurieren und zu aktivieren.

Protokollunterstützung und URL-Umschreiben und -Weiterleitung

NGINX Plus, Azure Application Gateway und Azure Load Balancer unterstützen Folgendes:

  • HTTP/2 – NGINX Plus akzeptiert seit 2016 HTTP/2-Anfragen von Clients. Azure hat vor Kurzem WebSocket-Unterstützung hinzugefügt.
  • WebSocket – NGINX Plus akzeptiert seit 2014 WebSocket-Verbindungen von Clients. Azure hat vor Kurzem WebSocket-Unterstützung hinzugefügt.
  • URL-Umschreibung und Anforderungsumleitung – Die URL einer Anforderung kann geändert werden, bevor sie an einen Backend-Server weitergeleitet wird. Das bedeutet, dass Sie Anforderungspfade und Dateispeicherorte intern ändern können, ohne die den Clients angezeigten URLs zu ändern. Sie können Anforderungen auch umleiten, indem Sie beispielsweise das Schema einer HTTP-Anforderung auf HTTPS ändern.

NGINX Plus mit Azure Load Balancing Services

In Verbindung mit Azure Load Balancer und Azure Traffic Manager wird NGINX Plus zu einer hochverfügbaren Load Balancer-Lösung mit umfassender Layer 7-Funktionalität.

Aktiv-Aktiv-Hochverfügbarkeit

Indem Sie Azure Load Balancer zum Lastenausgleich zwischen NGINX Plus-Instanzen in einem Verfügbarkeitssatz verwenden, erstellen Sie einen hochverfügbaren Load Balancer innerhalb einer Region.

Automatische Skalierung von NGINX Plus

Sie können die automatische Skalierung von NGINX Plus-Instanzen basierend auf der durchschnittlichen CPU-Auslastung einrichten. Dies ist möglich, indem Sie Verfügbarkeitsgruppen im Azure Cloud Service erstellen, der Ihre NGINX Plus-Instanzen hostet. Sie müssen sich um die Synchronisierung der NGINX Plus-Konfigurationsdateien kümmern.

Automatische Skalierung von Backend-Instanzen

Sie können auch eine automatische Skalierung Ihrer Backend-Instanzen basierend auf der durchschnittlichen CPU-Auslastung einrichten. Dies ist möglich, indem Sie Verfügbarkeitsgruppen im Azure-Clouddienst erstellen, der Ihre Back-End-Instanzen hostet. Sie müssen sich darum kümmern, Backend-Instanzen zur NGINX Plus-Konfiguration hinzuzufügen oder daraus zu entfernen, was mit der NGINX Plus-API möglich ist.

Um Updates der NGINX Plus-Konfiguration zu automatisieren (entweder in Kombination mit Verfügbarkeitsgruppen oder bei alleiniger Verwendung von NGINX Plus), können Sie ein Service-Discovery-System in NGINX Plus integrieren, entweder über die NGINX Plus-API oder über DNS, wenn das System über eine DNS-Schnittstelle verfügt. Schauen Sie sich unsere Blogbeiträge zur Verwendung von NGINX Plus mit beliebten Service-Discovery-Systemen an:

Integration mit Azure Traffic Manager

Für eine global verteilte Umgebung können Sie Azure Traffic Manager verwenden, um den Datenverkehr von Clients auf viele Regionen zu verteilen.

Zusätzliche Features in Azure Load Balancing-Diensten

Azure Load Balancer und Application Gateway werden von Azure Cloud verwaltet und bieten beide eine hochverfügbare Lastenausgleichslösung.

Eine Funktion von Azure Load Balancer, die in NGINX Plus nicht verfügbar ist, ist Source-NAT , bei dem ausgehender Datenverkehr von Back-End-Instanzen dieselbe Quell-IP-Adresse wie der Load Balancer hat.

Azure Load Balancer bietet eine automatische Neukonfiguration bei Verwendung der Autoscaling-Funktion von Azure Cloud.

Zusammenfassung

Wenn Ihre Anforderungen an den Lastenausgleich einfach sind, können die Azure-Angebote zum Lastenausgleich eine gute Lösung darstellen. Wenn die Anforderungen komplexer werden, ist NGINX Plus eine gute Wahl. Sie können NGINX Plus entweder allein oder in Verbindung mit Azure Load Balancer für die Hochverfügbarkeit von NGINX Plus-Instanzen verwenden.

Um NGINX Plus auf Microsoft Azure auszuprobieren, 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."