In diesem Dokument werden die beiden Dataplane V2-Weiterleitungsmodi für das Load-Balancing beschrieben und wie sie für Google Distributed Cloud aktiviert werden. Dataplane V2 unterstützt zwei Weiterleitungsmodi für das Load-Balancing:
- Quellnetzwerkadressübersetzung (Source Network Address Translation, SNAT)
- Direct Server Return (DSR)
Der Weiterleitungsmodus für das Load-Balancing kann nur beim Erstellen eines Clusters konfiguriert werden.
SNAT-Load-Balancing
Quellnetzwerkadressübersetzung (Source Network Address Translation, SNAT) ist der Standardweiterleitungsmodus für Dataplane V2-Load-Balancing. Im SNAT-Modus wird die Client-IP-Adresse jedoch nicht für Back-End-Pods beibehalten. Wenn das Paket vom Client beim Load-Balancer-Knoten ankommt, wird es übersetzt und mit dem Back-End-Pod an den Ziel-Worker-Knoten weitergeleitet. Der Back-End-Pod erkennt, dass die Anfrage vom Knoten des Load-Balancers und nicht vom Standort des Clients kommt. Daraufhin wird die Antwort an den Load-Balancer-Knoten zurückgegeben, umgekehrt übersetzt und an den Client zurückgesendet.
Paketfluss für SNAT
Mit dem SNAT-Weiterleitungsmodus für Dataplane V2-Load-Balancing sehen Sie den Paketfluss von einem externen Client zu einem Back-End-Pod und zurück:
Ein Dienst vom Typ LoadBalancer wird einem Load-Balancer-Knoten zugewiesen und seine IP-Adresse
172.16.20.16
wird von dem auf diesem Knoten ausgeführten MetalLB-Lautsprecher beworben.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 umgekehrt übersetzt.
Das folgende Diagramm zeigt den Paketfluss für den SNAT-Modus:
DSR-Load-Balancing
Direct Server Return (DSR) behebt Probleme mit dem SNAT-Load-Balancing. Im DSR-Modus verwendet der Load-Balancer-Knoten IP-Optionen, um die Quelladresse des Clients zu speichern. Der Worker-Knoten kann das ursprüngliche Paket wiederherstellen und an den Back-End-Pod weiterleiten. Der Back-End-Pod kann sehen, dass das Paket von der IP-Adresse des Clients statt von der IP-Adresse des Load-Balancer-Knotens stammt. Daher kehrt das Rückgabepaket direkt an die IP-Adresse des Clients und nicht zum Knoten des Load-Balancers zurück.
Dieser Modus löst nicht nur das Problem mit der Sichtbarkeit der Client-IP-Adresse, sondern spart auch die Bandbreite für den Load-Balancer-Knoten. Der zurückgegebene Traffic muss nicht den Load-Balancer-Knoten durchlaufen und der Load-Balancer-Knoten muss kein Verbindungstracking mehr durchführen. Auf diese Weise wird Arbeitsspeicher gespart und der Weiterleitungsport wird freigegeben. Bei asymmetrischen Arbeitslasten, bei denen der Download-Traffic viel höher ist als der Anfrage-Traffic, reduziert der DSR-Ablauf die Bandbreite erheblich.
Paketfluss für DSR
Mit dem DSR-Weiterleitungsmodus für Dataplane V2-Load-Balancing sieht der Paketfluss von und vom externen Client zu einem Back-End-Pod und wieder zurück:
Ein Dienst vom Typ LoadBalancer wird dem Load-Balancer-Knoten zugewiesen und seine IP-Adresse
172.16.20.16
wird von dem auf diesem Knoten ausgeführten MetalLB-Lautsprecher beworben.Dataplane V2 leitet das Paket an den Worker-Knoten weiter und verwendet IP-Optionen, um die ursprüngliche Quell-IP-Adresse und den Port des Clients zu speichern.
Dataplane V2 auf dem Worker-Knoten leitet das Paket an den Back-End-Pod weiter.
Der Back-End-Pod stellt die Quell-IP-Adresse und den Quellport wieder her und antwortet dem Client.
Das folgende Diagramm zeigt den Paketfluss für den DSR-Modus:
DSR-Modus aktivieren
Zum Aktivieren des DSR-Modus 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 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 forwardMode
kann nach dem Erstellen des Clusters nicht mehr geändert werden. Prüfen Sie, ob Sie die richtige Option für Ihre Anforderungen konfiguriert haben, bevor Sie den Cluster erstellen.