Grundlegende Konzepte
Zuletzt aktualisiert am
Der STACKIT Network Load Balancer (NLB) hilft Ihnen, gehostete Dienste bei hoher Nachfrage zu skalieren und vor Ausfällen zu schützen. Der STACKIT Network Load Balancer verwendet zwei leichtgewichtige virtuelle Maschinen mit dedizierter Load-Balancing-Software. Diese virtuellen Maschinen werden über mehrere Verfügbarkeitszonen hinweg bereitgestellt, um Hochverfügbarkeit und Fehlertoleranz zu gewährleisten. Dieses Setup reduziert das Risiko von Ausfallzeiten, wenn ein Infrastrukturausfall in einer einzelnen Zone auftritt. Die Maschinen sind in einem geclusterten Aktiv/Passiv-Setup innerhalb Ihres Projekts konfiguriert und bieten Hochverfügbarkeit und Zuverlässigkeit. Der Netzwerkzugang wird durch automatisch bereitgestellte und konfigurierte Sicherheitsgruppen gesichert.
Sie erstellen einen STACKIT Network Load Balancer über das STACKIT Portal oder die Network Load Balancer API. Dienste laufen typischerweise auf virtuellen Maschinen oder in Containern und sind über ein STACKIT Netzwerk verbunden. Eine virtuelle Dienst-Maschine (IP-Adresse) und ein Netzwerk sind erforderlich, um einen NLB zu konfigurieren.
Der STACKIT Network Load Balancer unterstützt derzeit Layer 4 TCP-Netzwerkverkehr. Er verwendet entweder die Round Robin- oder Maglev-Methode in einem Aktiv/Passiv-Cluster-Setup.
Externe IP-Adresse
Abschnitt betitelt „Externe IP-Adresse“Eine externe IP-Adresse ist eine vom Benutzer verwaltete, statische öffentliche IP-Adresse, über die der NLB erreichbar ist. Sie müssen diese IP-Adresse vorab beziehen und dem Load Balancer bei der Erstellung zuweisen. Nach der Zuweisung können Sie die externe IP-Adresse für die gesamte Lebensdauer des Load Balancers nicht mehr ändern.
Dynamische IP-Adresse
Abschnitt betitelt „Dynamische IP-Adresse“Eine dynamische IP-Adresse ist eine temporäre öffentliche IP-Adresse, über die der NLB erreichbar ist. STACKIT weist diese Adresse automatisch zu, wenn Sie den Load Balancer erstellen. Im Gegensatz zu einer externen IP-Adresse wird die dynamische Adresse nicht vom Benutzer verwaltet, ist temporär und an die Lebensdauer des Load Balancers gebunden. Wenn Sie den Load Balancer löschen, gibt STACKIT die dynamische IP-Adresse automatisch frei und sie ist nicht mehr erreichbar.
Listener
Abschnitt betitelt „Listener“Ein Listener ist der Einstiegspunkt für die Kommunikation. Er empfängt Netzwerkverkehr und leitet ihn an mehrere Ziele, sogenannte Targets, weiter.
- Service-Port: Gibt den Port an, den der Listener zum Empfangen von Verkehr verwendet.
- Protokoll: Definiert das Kommunikationsprotokoll für den Listener.
Zielpool und Ziele
Abschnitt betitelt „Zielpool und Ziele“Ein Ziel (Target) ist ein Dienst, eine virtuelle Maschine oder ein Container in Ihrem Projekt, der lastverteilten Verkehr vom Listener empfängt.
Ein Zielpool ist eine Gruppe aus einem oder mehreren Zielen und einem Zielpool-Port, der für die Kommunikation mit den Zielen verwendet wird. Um einen Zielpool einzurichten, müssen Sie mindestens ein Ziel (IP-Adresse) und einen Zielpool-Port angeben.
Sie können die Session-Persistenz für den Zielpool aktivieren, indem Sie session_persistence.use_source_ip_address auf true setzen. Wenn diese Option aktiviert ist, wechselt der Load-Balancing-Algorithmus zu Maglev.
Der STACKIT Network Load Balancer verwendet einen oder mehrere Listener, wobei jedem Listener ein einzelner Zielpool zugeordnet ist. Jeder Zielpool muss mindestens ein Ziel haben. Für Load Balancing geben Sie mindestens zwei Ziele an.
Aktiver Health Check
Abschnitt betitelt „Aktiver Health Check“Ein aktiver Health Check ist ein Monitor, den der NLB verwendet, um die Verfügbarkeit der Ziele zu überprüfen. Der Health Check ist standardmäßig aktiviert und unterstützt optionale Anpassungen:
- Prüfintervall (
interval): Steuert, wie oft der Load Balancer die Verbindungen zu den Zielen prüft. - Ausfallschwelle (
healthyThreshold): Legt die Anzahl fehlgeschlagener Verbindungsversuche fest, bevor ein Ziel als nicht erreichbar gilt. - Wiederherstellungsschwelle (
unhealthyThreshold): Legt die Anzahl erfolgreicher Prüfungen fest, die erforderlich sind, damit ein Ziel als erreichbar gilt.
Verbindungs-Idle-Timeouts
Abschnitt betitelt „Verbindungs-Idle-Timeouts“Der STACKIT Network Load Balancer verfolgt jede Client-Verbindung. Um Ressourcen freizugeben, schließt der Load Balancer Verbindungen, die zu lange inaktiv bleiben. Verbindungen werden ordnungsgemäß geschlossen: Ein FIN-Segment wird sowohl an den Client als auch an das Ziel gesendet. Wenn der Load Balancer ein Segment für eine nicht verfolgte Verbindung empfängt, sendet er ein RST-Segment an den Client.
Sie können den Idle-Timeout pro Listener konfigurieren. Niedrigere Timeout-Werte geben Ressourcen schneller frei und ermöglichen dem Load Balancer, neue Verbindungen schneller anzunehmen. Höhere Timeout-Werte lassen langbestehende Verbindungen ohne Datentransfer bestehen, was für Anwendungen nützlich ist, die eine dauerhafte Kommunikation erfordern, aber mehr Ressourcen verbraucht.
Der Idle-Timer wird zurückgesetzt, sobald der Load Balancer Daten in eine der beiden Richtungen weiterleitet. Ein TCP-Keepalive-Probe ohne Daten setzt den Timer nicht zurück.
Ziel-Sicherheitsgruppe
Abschnitt betitelt „Ziel-Sicherheitsgruppe“Der STACKIT Network Load Balancer konfiguriert Sicherheitsgruppen, um den Verkehr zwischen dem Load Balancer und seinen Zielen zu steuern. Diese Sicherheitsgruppen sind für die ordnungsgemäße Funktion des LB erforderlich. Sie erlauben Verbindungen von den Load-Balancer-Maschinen zu den Zielen auf den angegebenen Ports.
Standardmäßig wird Zielen, die sich im selben STACKIT Netzwerk befinden, automatisch eine korrekt konfigurierte Sicherheitsgruppe zugewiesen. Dies stellt die Konnektivität ohne Eingriff Ihrerseits sicher.
Diese automatische Zuweisung ist jedoch nicht möglich, wenn sich die Ziele in einem anderen Netzwerk befinden. In diesem Fall müssen Sie das Feld disableTargetSecurityGroupAssignment bei der Erstellung auf true setzen. Dadurch wird die automatische Zuweisung deaktiviert und signalisiert, dass Sie die Konnektivität manuell verwalten.
Die erforderliche Sicherheitsgruppe wird im schreibgeschützten Feld targetSecurityGroup in der API angezeigt. Sie können die Ziel-Sicherheitsgruppe manuell zuweisen, wenn sich Ihre Ziele im selben Projekt befinden. Wenn sich Ihre Ziele in einem anderen Projekt befinden, aber innerhalb derselben SNA liegen, können Sie die loadBalancerSecurityGroup verwenden (siehe unten).
Diese Einstellung kann nur bei der Erstellung konfiguriert werden. Sie kann nachträglich nicht geändert werden. Wenn die Konnektivität nicht korrekt konfiguriert ist, sind die Ziele nicht erreichbar. Die Erreichbarkeit der Ziele wird nur geprüft, wenn disableTargetSecurityGroupAssignment auf false gesetzt ist.
Load-Balancer-Sicherheitsgruppe
Abschnitt betitelt „Load-Balancer-Sicherheitsgruppe“Das Feld loadBalancerSecurityGroup zeigt die interne Egress-Sicherheitsgruppen-ID an, die den Load-Balancer-Maschinen zugewiesen ist. Es enthält die id und den name dieser Sicherheitsgruppe:
"loadBalancerSecurityGroup": { "id": "string", "name": "string"}Diese id im Feld loadBalancerSecurityGroup ist entscheidend für die Herstellung der Konnektivität, wenn sich Ihre Ziel-VMs in einem anderen Projekt befinden, aber dennoch innerhalb derselben STACKIT Network Area (SNA) liegen. Für Szenarien, in denen sich die Ziele im selben Projekt, aber in verschiedenen Netzwerken befinden, verwenden Sie targetSecurityGroup (siehe oben).
In solchen projektübergreifenden Szenarien muss disableTargetSecurityGroupAssignment auf true gesetzt werden. Sie müssen die Sicherheitsgruppen für Ihre Ziel-VMs manuell konfigurieren, um Verkehr von diesem Load Balancer zu Ihren externen Zielen zuzulassen. Zunächst müssen Sie eine Sicherheitsgruppe erstellen, die eine Sicherheitsgruppenregel enthält. In dieser Regel geben Sie die loadBalancerSecurityGroupID als remoteSecurityGroupID an und weisen die endgültige Sicherheitsgruppe den jeweiligen Zielen zu. Dies erlaubt explizit, dass Netzwerkverkehr von diesem spezifischen Load Balancer von Ihren Ziel-VMs akzeptiert wird, und gewährleistet eine sichere und kontrollierte Kommunikation über Netzwerkgrenzen hinweg.
Verwendung der Load-Balancer-Sicherheitsgruppe
Abschnitt betitelt „Verwendung der Load-Balancer-Sicherheitsgruppe“Szenario 1 – Automatischer Modus (Standard)
Abschnitt betitelt „Szenario 1 – Automatischer Modus (Standard)“Im Standard-Setup wird die Konnektivität automatisch für Sie verwaltet.
- Bei der Erstellung des Load Balancers müssen Sie das Flag
disableTargetSecurityGroupAssignmentauffalsesetzen (siehe: NLB über API erstellen). - Eine dedizierte Ziel-Sicherheitsgruppe wird erstellt und auf alle Ihre Ziel-VMs angewendet.
- Diese Sicherheitsgruppe enthält die notwendigen Regeln, um Verkehr vom Load Balancer zuzulassen.
- Es ist keine manuelle Konfiguration erforderlich.
Szenario 2 – Manueller Modus (netzwerkübergreifendes Setup)
Abschnitt betitelt „Szenario 2 – Manueller Modus (netzwerkübergreifendes Setup)“Wenn sich Ihre Ziele außerhalb des primären Netzwerks des Load Balancers befinden, ist eine automatische Zuweisung nicht möglich. Sie müssen das Netzwerk manuell konfigurieren, um Verkehr zuzulassen.
Zur manuellen Konfiguration der Sicherheitsgruppen der Ziel-VMs müssen Sie die IaaS API verwenden (siehe Dokumentation: IaaS API oder Terraform Provider).
-
Load Balancer mit aktiviertem
disableTargetSecurityGroupAssignmenterstellenZur Erstellung eines Network Load Balancers mit der API siehe: NLB über API erstellen
- Bei der Erstellung des Load Balancers müssen Sie das Flag
disableTargetSecurityGroupAssignmentauftruesetzen. - Dies verhindert, dass das System eine automatische Zuweisung versucht, und signalisiert, dass Sie das Setup selbst durchführen.
- Bei der Erstellung des Load Balancers müssen Sie das Flag
-
Die korrekte Load-Balancer-Sicherheitsgruppen-ID ermitteln
Nachdem der Load Balancer erstellt wurde, zeigt die API schreibgeschützte Informationen über seine internen Sicherheitsgruppen an. Sie müssen diese ID im nächsten Schritt referenzieren.
loadBalancerSecurityGroup: Verwenden Sie dieidaus diesem Feld, wenn sich Ihre Ziele in einem anderen Projekt oder Netzwerk befinden (aber innerhalb derselben STACKIT Network Area). Dies ist die ID der internen Egress-Sicherheitsgruppe des Load Balancers.
-
Sicherheitsgruppe Ihrer Ziel-VMs konfigurieren
Erstellen und wenden Sie nun eine neue Sicherheitsgruppe auf Ihre Ziel-VMs an, um Verkehr vom Load Balancer zuzulassen. Dies umfasst drei Aktionen über die IaaS API:
- Neue Sicherheitsgruppe für Ihre Ziele erstellen: Geben Sie dieser Sicherheitsgruppe einen beschreibenden Namen (z. B.
my-app-lb-access-sg). Notieren Sie sich die zurückgegebene neue ID. - Ingress-Regel zur neuen Gruppe hinzufügen: Erstellen Sie eine neue Sicherheitsgruppenregel, die eingehenden Verkehr erlaubt. Setzen Sie in der Regelkonfiguration die
remoteSecurityGroupIdauf die ID, die Sie in Schritt 2 ermittelt haben. - Neue Gruppe Ihren Zielen zuweisen: Aktualisieren Sie die Netzwerkschnittstelle jeder Ihrer Ziel-VMs, um die ID der in Schritt 3.1 erstellten neuen Sicherheitsgruppe aufzunehmen. Sobald diese Schritte abgeschlossen sind, sind Ihre Ziele korrekt konfiguriert, um Verkehr vom Load Balancer über Netzwerkgrenzen hinweg zu akzeptieren.
- Neue Sicherheitsgruppe für Ihre Ziele erstellen: Geben Sie dieser Sicherheitsgruppe einen beschreibenden Namen (z. B.
-
Neue Sicherheitsgruppe erstellen
Erstellen Sie zunächst eine Sicherheitsgruppe mit dem POST-Aufruf unter Angabe Ihrer ProjectId (siehe Neue Sicherheitsgruppe erstellen).
-
Pfadparameter: Geben Sie Ihre
ProjectIdan. -
Request Body:
{"description": "Allows ingress traffic to the targets from the Load Balancer","name": "TargetSecurityGroup","stateful": true}
Notieren Sie sich nach erfolgreicher Erstellung die
idder neu erstellten Sicherheitsgruppe. Diese wird im Folgenden alsYour-New-Security-Group-Idbezeichnet. -
-
Sicherheitsgruppenregel erstellen, die Load-Balancer-Verkehr akzeptiert
Erstellen Sie als Nächstes eine neue Sicherheitsgruppenregel mit dem POST-Aufruf unter Angabe Ihrer ProjectId und der SecurityGroupId der neu erstellten Sicherheitsgruppe (siehe Neue Sicherheitsgruppenregel erstellen).
-
Pfadparameter: Geben Sie Ihre
ProjectIdundYour-New-Security-Group-Idan. -
Request Body:
{"description": "Accept traffic from the Load Balancer","direction": "ingress","ethertype": "IPv4","portRange": {"max": <targetPort>,"min": <targetPort>},"remoteSecurityGroupId": <loadBalancerSecurityGroup ID>,"protocol": <protocol number (e.g. 6 for tcp)>}
-
-
Netzwerkschnittstelle aktualisieren
Aktualisieren Sie abschließend die Netzwerkschnittstellen Ihrer Ziele, um die neu erstellte
TargetSecurityGroupzuzuweisen. Dadurch können die Ziele eingehenden Verkehr vom Load Balancer akzeptieren (siehe Netzwerkschnittstelle aktualisieren).-
Pfadparameter: Sie benötigen die
ProjectId,networkIdund die spezifischenicIdder NIC jeder VM, die Sie aktualisieren möchten. Möglicherweise müssen Sie zuerst die NICs auflisten, um deren IDs zu erhalten (siehe: Alle Netzwerkschnittstellen innerhalb eines Netzwerks auflisten). -
Request Body:
{"securityGroups": [<other existing IDs - use list call>,<Your-New-Security-Group-Id>]}
Führen Sie diesen Schritt für alle Ziel-VMs durch, die im Zielpool des Load Balancers aufgeführt sind. Wenn Sie fertig sind, sind Ihre VMs so konfiguriert, dass sie Verkehr vom Load Balancer akzeptieren, auch wenn sich die Ziel-VMs außerhalb des Netzwerks des Load Balancers befinden (beachten Sie jedoch, dass sie sich in derselben SNA befinden müssen).
-
General recommendations
Abschnitt betitelt „General recommendations“- STACKIT Network Load Balancers operate at Layer 4 only. You are responsible for encrypting traffic as needed.
- Estimate your required maximum concurrent connections in advance to select the right service plan.
- Use observability integration to identify if a larger plan is more suitable for your workload.
- Follow the principle of least privilege by assigning load balancer-specific roles:
- NLB admin: Can perform create, read, update, and delete operations on load balancer resources.
- NLB reader: Can read all load balancer resources.