Weiterleitungsmodus für Load-Balancing konfigurieren

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:

Paketfluss für Dataplane V2-Load-Balancing im 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:

Paketfluss für Dataplane V2-Load-Balancing im SNAT-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.