Es gibt fast keine systematischen Informationen über den NSX ALB in russischer Sprache im Netzwerk, nur die Dokumentation des Anbieters in englischer Sprache. Daher habe ich im ersten Teil unterschiedliche Quellen zusammengefasst und einen Überblick über das Produkt gegeben: Ich habe über die Merkmale, die Architektur und die Logik der Arbeit gesprochen, auch für geografisch verteilte Standorte. Im zweiten Teil werde ich beschreiben, wie das System bereitgestellt und konfiguriert wird. Hoffentlich sind beide Artikel hilfreich für diejenigen, die einen Balancer für Cloud-Umgebungen suchen und die Funktionen des NSX ALB schnell bewerten möchten.
Merkmale und Fähigkeiten
NSX ALB ist ein Software Defined Load Balancer (SDLB) auf Unternehmensebene. Dies ist nicht typisch für Lastausgleichssysteme dieser Ebene, bei denen üblicherweise Hardware-Lastausgleicher verwendet werden. Dieser Ansatz zum Aufbau des Systems bietet dem NSX ALB eine einfache Verwaltbarkeit sowie horizontale und vertikale Skalierbarkeit.
Welche Funktionen bietet NSX ALB:
- Automatische Leistungsregelung des Balancers. Wenn die Last von den Clients zunimmt, wird die Leistung automatisch erhöht, wenn die Last abnimmt, wird sie fallen gelassen.
- Lastausgleich über geografisch verteilte Server. Hierfür ist ein separater GSLB-Mechanismus (Global Server Load Balancing) verantwortlich.
- Balancing auf einer der Ebenen: L4 (über TCP / UDP) und L7 (über HTTP / HTTPS).
- . NSX ALB ( VMware) on-premise :
- Integrierte Application Intelligence. Das System überwacht die Anwendungsleistung und sammelt Daten: Zeit für jede Phase der Verbindungsverarbeitung, Bewertung des Anwendungsstatus und Verkehrsprotokolle in Echtzeit. Wenn es ein Problem gibt, kann die Überwachung schnell erkennen, wo danach gesucht werden muss.
Echtzeitdaten werden über gleichzeitig offene Verbindungen, Roundtrip-Zeit (RTT), Durchsatz, Fehler, Antwortverzögerungen, SSL-Handshake-Verzögerungen, Antworttypen und mehr erfasst. Alle Informationen an einem Ort:
Im Block Log Analytics auf der rechten Seite werden Statistiken zu den wichtigsten Verbindungsparametern gesammelt. Sie können mit der Maus über den gewünschten Bereich fahren und sich schnell vertraut machen.
Darüber hinaus hat NSX ALB:
- Unterstützung für Mandantenfähigkeit zur Differenzierung des Zugriffs auf Ressourcen.
- Health Monitor .
- Web Application Firewall (WAF).
- IPAM DNS.
- , . . IP-, . : Botnet, DoS, Mobile threats, Phishing, Proxy, Scanner, Spam source, Web attacks, Windows exploit .., – .
- Analysieren der HTTP-Header von übergebenen Paketen. Sie können Skripte (DataScript) verwenden, die auf der Lua-Sprache basieren, und Avi-Aktionen in Abhängigkeit von den Werten in diesen Headern definieren: Umleiten einer Anforderung, Schließen oder Zurücksetzen einer Verbindung, Spoofing von URIs oder Werten in einem HTTP-Header, Auswählen eines bestimmten Serverpools für die Verarbeitung einer Anforderung, Arbeiten mit Cookies usw.
- Als Ingress-Controller für Kubernetes fungieren.
NSX ALB kann über GUI, CLI und REST-API verwaltet werden.
Architektur und Arbeitsschema NSX ALB
Der NSX ALB arbeitet für die meisten SDLBs nach Standardprinzipien. Die Server, die den Ausgleichsdienst bereitstellen, werden zu Pools zusammengefasst . Über den Pools erstellt der Systemadministrator virtuelle Dienste (VS) . Sie enthalten Parameter des Dienstes, der ausgeglichen wird, z. B. Anwendungstyp, Ausgleichsalgorithmus, Verbindungseinstellungen. VS stellt Clients auch eine externe virtuelle IP-Adresse (Virtual IP, VIP) zur Verfügung, um auf den ausgeglichenen Dienst zuzugreifen.
Schauen wir uns die Architektur genauer an: Das
Schlüsselelement des Systems ist der Controller (Avi Controller).... Er ist verantwortlich für den automatischen Stromaufbau und steuert den VS zentral. Sie können einen einzelnen Controller oder einen Failover-Cluster von Controllern in Ihrer Infrastruktur bereitstellen.
In der Failover-Konfiguration besteht der Controller-Cluster aus 3 Knoten. Einer der Knoten wird zum Anführer, der Rest der Anhänger. Alle 3 Knoten sind aktiv und teilen die Last untereinander. Die wichtigsten Szenarien für einen Cluster von Controllern:
- Wenn ein Knoten ausfällt, hat dies keine Auswirkungen auf den Betrieb des Clusters.
- Wenn der führende Knoten ausfällt, wird diese Rolle an einen der verbleibenden übertragen.
- Wenn 2 Knoten ausfallen, wechselt der Controller-Dienst auf dem verbleibenden Knoten in den schreibgeschützten Modus, um ein Split-Brain zu vermeiden, und wartet darauf, dass ein anderer Knoten wieder verfügbar ist.
Nach der Bereitstellung des Controllers erstellt der Techniker für jeden VS einen VS- und einen Serverpool. Für Server innerhalb des Pools können Sie einen Ausgleichsalgorithmus auswählen :
- Round Robin - Die neue Verbindung wird zum nächsten Server im Pool geleitet.
- Geringste Verbindungen - Die neue Verbindung wird an den Server mit den wenigsten gleichzeitigen Verbindungen gesendet.
- Geringste Last - Die neue Verbindung wird unabhängig von der Anzahl der Verbindungen an den Server mit der geringsten Last gesendet.
- Konsistenter Hash - Neue Verbindungen werden basierend auf dem berechneten Hash auf Server verteilt. Der Schlüssel zur Berechnung des Hashs wird in einem speziellen Feld oder in einer benutzerdefinierten Zeichenfolge angegeben. Für jede Anforderung wird mit diesem Schlüssel ein Hash berechnet. Die Verbindung wird an den Server gesendet, der dem berechneten Hash entspricht.
- Fastest Response – .
- Fewest Tasks – ( Avi CLI REST API.
- Fewest Servers – , .
Nach dem Erstellen von VS und des Serverpools stellt der Controller selbst die virtuellen Dienstmaschinen Service Engine (SE) bereit , auf denen sich der ausgeglichene Dienst befindet. Jeder Dienst (VS) ist auf mehrere SEs verteilt, die Clientanforderungen parallel verarbeiten. Dies stellt die Ausfallsicherheit des Dienstes bei Ausfällen der virtuellen Maschine sicher.
Der Controller kann die Last auswerten und neue SEs hinzufügen oder entladene löschen. Aufgrund dieser Architektur kann NSX ALB sowohl horizontal skalieren - wodurch die Anzahl der SEs erhöht wird, als auch vertikal - wodurch die Kapazität jeder SE erhöht wird.
Je mehr Dienste die SE ausgleicht, desto mehr Netzwerkschnittstellen werden verwendet. In der detaillierten Abbildung unten sehen wir zwei Arten von Netzwerken:
- Das Netzwerk zur Steuerung und Übertragung von Dienstinformationen bildet die Steuerebene .
- Datennetze bilden die Datenebene .
Jede SE verfügt über eine separate Netzwerkschnittstelle im Steuerungsnetzwerk für die Kommunikation mit der Steuerung. Die restlichen Schnittstellen sind mit dem externen Netzwerk und dem Netzwerk verbunden, in dem sich der Serverpool für den Ausgleich befindet. Diese Trennung der Netzwerkinfrastruktur verbessert die Sicherheit.
Für jeden VS müssen Sie die SE-Parameter definieren, auf denen der Dienst gehostet wird. Diese Parameter werden in der SE-Gruppe (SE-Gruppe) eingestellt . Beim Erstellen von VS wählen wir die SE-Gruppe aus: Sie können eine Standardgruppe (Standardgruppe) angeben oder eine neue Gruppe erstellen, wenn VS spezielle Einstellungen für die virtuelle Maschine benötigt.
Die ausgewählte Gruppe bestimmt, wie der neue VS platziert wird. Wenn beispielsweise SEs der Standardgruppe bereits im System bereitgestellt sind und diese SEs noch über Ressourcen verfügen, befindet sich der neue VS mit der angegebenen Standardgruppe auf diesen. Wenn wir eine neue Gruppe für VS angeben, werden neue SEs mit unterschiedlichen Parametern darunter bereitgestellt.
Legen Sie auf SE-Gruppenebene die folgenden VS-Platzierungseinstellungen fest:
- maximale Anzahl von SEs in einer Gruppe,
- maximale Anzahl von VS pro SE,
- Art und Weise, VS auf SE zu platzieren: Kompakt, wenn wir die erste SE zum ersten Mal so dicht wie möglich füllen und zur nächsten übergehen, oder verteilt mit einer gleichmäßigen Verteilung:
- Parameter der virtuellen SE-Maschine: vCPU-Nummer, Speicher und Festplattengröße,
Der Durchsatz pro 1 vCPU beträgt ungefähr 40.000 Verbindungen / s mit einem Durchschnitt von 4 GB / s. Dieser Indikator unterscheidet sich für verschiedene Ausgleichsebenen und das verwendete Protokoll: Er ist mehr auf L4, weniger auf L7 aufgrund der Notwendigkeit, den Verkehr zu analysieren, und bei SSL ist er aufgrund der Notwendigkeit der Verschlüsselung viel weniger.
- die Lebensdauer einer nicht verwendeten SE, nach der sie gelöscht werden muss,
- Ressourcen zum Hosten von SE. In einer VMware-Umgebung können Sie einen bestimmten Cluster oder Hosts und Datenspeicher zur Verwendung angeben oder ausschließen.
Kommen wir zur Architektur und zum Workflow des GSLB Global Balancing Service.
Architektur und Workflow für geografisch verteilte Server
In einem regulären virtuellen Dienst können wir dem Pool Server aus nur einer Cloud hinzufügen. Selbst wenn wir mehrere Clouds gleichzeitig auf dem Controller hinzufügen, können wir Server aus verschiedenen Clouds nicht in einem VS kombinieren. Diese Aufgabe wird vom GSLB Global Balancing Service gelöst. Sie können damit geografisch verteilte Server in verschiedenen Clouds ausgleichen.
Innerhalb eines globalen Dienstes können Sie sowohl private als auch öffentliche Clouds gleichzeitig verwenden. Hier sind die Fälle, in denen Sie möglicherweise eine GSLB benötigen:
- hohe Serviceverfügbarkeit, wenn nicht alle Server in einer der Clouds verfügbar sind,
- Disaster Recovery, wenn auf eine Cloud nicht zugegriffen werden kann,
- , , . .
Schauen wir uns die Architektur von GSLB an:
Das Arbeitsschema in Kürze: Der Ausgleich wird vom lokalen DNS-Dienst durchgeführt, der in der NSX ALB bereitgestellt wird. Der Client sendet eine Anforderung zum Herstellen einer Verbindung mit dem Dienst unter Verwendung des FQDN-Namens. DNS gibt dem Client die virtuelle IP des lokalen VS in der optimalsten Cloud. Der Service wählt die optimalste Cloud basierend auf dem Ausgleichsalgorithmus, Daten zur Verfügbarkeit lokaler VS auf dem Health Monitor und dem geografischen Standort des Kunden aus. Sie können verschiedene Ausgleichsalgorithmen festlegen - sowohl auf globaler Serviceebene als auch auf GSLB-Ebene.
Wie Sie dem GSLB-Diagramm entnehmen können, basiert es auf den Elementen des vorherigen Diagramms: Serverpools, darüber lokale virtuelle Dienste (VS) mit lokalen virtuellen IPs (VIP) und virtuelle Dienstmaschinen (SE). Beim Erstellen der GSLB werden neue Elemente angezeigt.
Globaler Dienst (Global VS) - Ein Dienst, der zwischen geografisch verteilten Servern oder privaten und öffentlichen Clouds ausgewogen ist.
Eine GSLB-Site enthält den Controller und die von ihr verwalteten SEs in derselben Cloud. Für jeden Standort können Sie die Geolokalisierung in Breiten- und Längengrad festlegen. Dadurch kann GSLB den Serverpool basierend auf der Entfernung vom Client auswählen.
GSLB-Sites, die auf dem NSX ALB-System basieren, sind in Leader (Leader) und Follower (Follower) unterteilt. Wie bei Controllern bietet dieses Schema eine Fehlertoleranz für den GSLB-Dienst.
Die Lead-Site trifft Ausgleichsentscheidungen, verwaltet Verbindungen und überwacht. Sie können die GSLB-Konfiguration nur über den Master-Site-Controller ändern.
Slave-Sites können aktiv oder passiv sein.
- Ein passiver Slave-Standort verarbeitet eingehende Client-Verbindungen nur, wenn der Master-Standort seinen lokalen VS auswählt.
- Der aktive Slave-Standort erhält seine Konfiguration vom Master-Standort und kann bei einem Absturz die führende Rolle übernehmen.
GSLB-Sites können auch externe Sites sein, die auf Balancern von Dritten basieren.
Der globale Pool unterscheidet sich vom lokalen Pool, der lokale Server enthält. In einem globalen Pool können Sie geografisch verteilte virtuelle Dienste von verschiedenen Standorten kombinieren. Mit anderen Worten, der globale Pool enthält lokale VSs, die auf der Ebene der GSLB-Standorte eingerichtet werden.
Das Ausgleichen der Verbindungen zwischen Servern im globalen Pool wird durchgeführt:
- von Round Robin Algorithmus,
- nach Server-Geolokalisierung,
- ,
- Consistent Hash.
Für einen globalen Dienst können Sie mehrere globale Pools erstellen und einen oder mehrere Standorte in jeden lokalen VS aufnehmen. In diesem Fall werden neue Verbindungen nach Geolokalisierung oder nach festgelegten Prioritäten verteilt. Um Prioritäten für die Server im Pool festzulegen, können Sie für jeden Server ein anderes Gewicht festlegen.
Ein Beispiel für den Ausgleich zwischen globalen Pools . So verteilt der globale VS Verbindungen in diesem Schema: Der
GslbPool_3 hat eine Priorität von 10 und wird für Clientverbindungen bevorzugt. Von diesen Verbindungen gehen 40% der Last an VS-B3 und 60% an VS-B4. Wenn GslbPool_3 nicht mehr verfügbar ist, gehen alle Clientverbindungen vollständig zu GslbPool_2 und die Last zwischen VS-B3 und VS-B4 wird gleichmäßig verteilt.
Lokales DNSEnthält Datensätze mit den FQDN-Namen der durch sie ausgeglichenen Dienste.
GSLB-DNS ist der lokale DNS-VS-Betriebsmodus, mit dem Verbindungen zwischen GSLB-Standorten ausgeglichen werden.
Lokales DNS VS beginnt als GSLB-DNS zu fungieren, wenn wir es als DNS-Dienst für eine erhöhte GSLB auswählen. Ein solcher DNS-VS sollte auf allen Standorten bereitgestellt werden, die in globalen Pools enthalten sind.
GSLB fügt jedem lokalen DNS FQDN-Einträge für globale Dienste hinzu. NSX ALB füllt diesen Datensatz mit den virtuellen IPs des lokalen VS von allen Standorten, die im globalen VS-Pool enthalten sind. Diese zusätzlichen VIPs werden automatisch hinzugefügt, wobei dem Pool neue lokale VS hinzugefügt werden. Die Daten in den Datensätzen werden aktualisiert, wenn Informationen über die Dienstlast, die Verfügbarkeit von Servern und die Entfernung von Clients von Standorten gesammelt werden. Wenn ein neuer Client über den FQDN eine Verbindung herstellt, gibt einer der lokalen DNS die VIP-Adresse des lokalen VS unter Berücksichtigung dieser akkumulierten tatsächlichen Daten aus.
Wie Sie das NSX ALB-System bereitstellen und konfigurieren sowie den GSLB-Dienst darin erhöhen, werde ich im zweiten Teil dieses Artikels beschreiben.