In diesem Dokument werden die beiden Dataplane V2-Weiterleitungsmodi für das Load Balancing und ihre Aktivierung für Google Distributed Cloud beschrieben. Dataplane V2 unterstützt zwei Weiterleitungsmodi für das Load Balancing:
- Quellnetzwerkadressübersetzung (SNAT)
- Direct Server Return (DSR)
Der Weiterleitungsmodus für das Load Balancing kann nur beim Erstellen eines Clusters konfiguriert werden.
SNAT-Load Balancing
Die Quellnetzwerkadressübersetzung (SNAT) ist der Standardweiterleitungsmodus für den Dataplane V2-Lastenausgleich. Im SNAT-Modus wird die Client-IP-Adresse jedoch nicht für Backend-Pods beibehalten. Wenn das Paket vom Client am Load Balancer-Knoten ankommt, wird es übersetzt und mit dem Backend-Pod an den Ziel-Worker-Knoten weitergeleitet. Der Backend-Pod erkennt, dass die Anfrage vom Load Balancer-Knoten und nicht vom Client-Standort stammt. Die Antwort wird daher an den Load Balancer-Knoten zurückgegeben, rückwärts übersetzt und an den Client zurückgesendet.
Paketfluss für SNAT
Im SNAT-Weiterleitungsmodus für das Dataplane V2-Load Balancing sieht der Paketfluss von einem externen Client zu einem Backend-Pod und zurück so aus:
Ein Dienst vom Typ „LoadBalancer“ wird einem Load Balancer-Knoten zugewiesen und seine IP-Adresse
172.16.20.16
wird vom MetalLB-Lautsprecher beworben, der auf diesem Knoten ausgeführt wird.Dataplane V2 übersetzt die Quell-IP-Adresse und den Quellport mit SNAT in
<LB_NODE_IP>:52000
und leitet das Paket an den Worker-Knoten weiter.Die Antwort wird an den Load Balancer-Knoten zurückgesendet und die Zieladresse wird in umgekehrter Reihenfolge übersetzt.
Das folgende Diagramm zeigt den Paketfluss für den SNAT-Modus:
DSR-Load Balancing
Mit Direct Server Return (DSR) können Probleme mit dem SNAT-Load Balancing behoben werden. Im DSR-Modus verwendet der Load Balancer-Knoten IP-Optionen, um die Client-Quelladresse zu speichern. Der Worker-Knoten kann das ursprüngliche Paket wiederherstellen und an den Backend-Pod weiterleiten. Der Backend-Pod kann sehen, dass das Paket von der Client-IP-Adresse statt von der IP-Adresse des Load Balancer-Knotens stammt. Das Rückgabepaket wird daher direkt an die Client-IP-Adresse zurückgesendet, anstatt zum Load Balancer-Knoten zurückzukehren.
Mit diesem Modus wird nicht nur das Problem mit der Sichtbarkeit der Client-IP-Adresse gelöst, sondern auch die Bandbreite für den Load Balancer-Knoten gespart. Rücklauf-Traffic muss nicht mehr über den Load Balancer-Knoten geleitet werden und der Load Balancer-Knoten muss kein Verbindungs-Tracking mehr durchführen. Dieser Ansatz spart Arbeitsspeicher und gibt den Weiterleitungsport frei. Bei asymmetrischen Arbeitslasten, bei denen der Download-Traffic viel höher ist als der Anfrage-Traffic, reduziert der DSR-Flow die Bandbreite erheblich.
Paketfluss für DSR
Im DSR-Weiterleitungsmodus für das Dataplane V2-Load Balancing sieht der Paketfluss von einem externen Client zu einem Backend-Pod und zurück so aus:
Dem Load Balancer-Knoten wird ein Dienst vom Typ LoadBalancer zugewiesen und seine IP-Adresse
172.16.20.16
wird vom MetalLB-Lautsprecher angekündigt, der auf diesem Knoten ausgeführt wird.Dataplane V2 leitet das Paket an den Workerknoten weiter und speichert mithilfe von IP-Optionen die ursprüngliche Client-Quell-IP-Adresse und den Port.
Dataplane V2 auf dem Worker-Knoten leitet das Paket an den Backend-Pod weiter.
Der Back-End-Pod ruft die Quell-IP-Adresse und den Quellport ab und antwortet dem Client.
Das folgende Diagramm zeigt den Paketfluss für den DSR-Modus:
DSR-Modus aktivieren
Wenn Sie den DSR-Modus aktivieren möchten, fügen Sie der Clusterkonfigurationsdatei das Feld spec.clusterNetwork.forwardMode
hinzu und legen Sie es auf dsr
fest. Wie bereits erwähnt, ist der SNAT-Modus standardmäßig aktiviert. Sie können den SNAT-Modus explizit angeben, indem Sie forwardMode
auf snat
setzen. Der Weiterleitungsmodus für das Dataplane V2-Load Balancing kann nur beim Erstellen des Clusters konfiguriert werden.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: lb-mode
namespace: cluster-lb-mode
...
spec:
clusterNetwork:
forwardMode: dsr # valid options are dsr or snat
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/20
...
Der Wert für forwardMode
kann nach dem Erstellen des Clusters nicht mehr geändert werden. Achten Sie darauf, dass Sie die richtige Option für Ihre Anforderungen konfiguriert haben, bevor Sie den Cluster erstellen.