Load Balancing-Weiterleitungsmodus konfigurieren

In diesem Dokument werden die beiden Dataplane V2-Weiterleitungsmodi für den Lastenausgleich beschrieben und es wird erläutert, wie Sie sie für Google Distributed Cloud aktivieren. 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 das Dataplane V2-Load Balancing. 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 an den Ziel-Worker-Knoten mit dem Backend-Pod weitergeleitet. Der Backend-Pod sieht, dass die Anfrage vom Load Balancer-Knoten und nicht vom Clientstandort stammt. Die Antwort wird dann an den Load-Balancer-Knoten zurückgegeben, rückübersetzt und an den Client zurückgesendet.

Paketfluss für SNAT

So sieht der Paketfluss von einem externen Client zu einem Backend-Pod und zurück im SNAT-Weiterleitungsmodus für das Dataplane V2-Load Balancing aus:

  • Ein Dienst vom Typ „LoadBalancer“ wird einem Load Balancer-Knoten zugewiesen und seine IP-Adresse 172.16.20.16 wird vom MetalLB-Speaker beworben, der auf diesem Knoten ausgeführt wird.

  • Dataplane V2 übersetzt die Quell-IP-Adresse und den Port 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 rückü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 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 Originalpaket wiederherstellen und an den Backend-Pod weiterleiten. Der Backend-Pod kann sehen, dass das Paket von der Client-IP-Adresse und nicht von der IP-Adresse des Load Balancer-Knotens stammt. Daher wird das Rückgabepaket direkt an die Client-IP-Adresse zurückgesendet, anstatt zum Load-Balancer-Knoten zurückzukehren.

Dieser Modus löst nicht nur das Problem der Sichtbarkeit der Client-IP-Adresse, sondern spart auch Bandbreite für den Load-Balancer-Knoten. Der Rückgabeverkehr muss nicht über den Load Balancer-Knoten laufen und der Load Balancer-Knoten muss kein Verbindungs-Tracking mehr durchführen. Dieser Ansatz spart Speicherplatz und gibt den Weiterleitungsport frei. Bei asymmetrischen Arbeitslasten, bei denen der Download-Traffic viel höher ist als der Anfrage-Traffic, wird die Bandbreite durch den DSR-Ablauf erheblich reduziert.

Paketfluss für DSR

So sieht der Paketfluss von einem externen Client zu einem Backend-Pod und zurück im DSR-Weiterleitungsmodus für Dataplane V2-Load-Balancing aus:

  • Ein Dienst vom Typ „LoadBalancer“ wird dem Load Balancer-Knoten zugewiesen und seine IP-Adresse 172.16.20.16 wird vom MetalLB-Speaker beworben, der auf diesem Knoten ausgeführt wird.

  • Dataplane V2 leitet das Paket an den Worker-Knoten weiter und verwendet IP-Optionen, um die ursprüngliche Client-Quell-IP-Adresse und den Port zu speichern.

  • Dataplane V2 auf dem Worker-Knoten leitet das Paket an den Backend-Pod weiter.

  • Der Backend-Pod stellt die Quell-IP-Adresse und den Port 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

Um den DSR-Modus zu aktivieren, fügen Sie das Feld spec.clusterNetwork.forwardMode in Ihre Clusterkonfigurationsdatei ein 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. Achten Sie darauf, dass Sie die richtige Option für Ihre Anforderungen konfiguriert haben, bevor Sie den Cluster erstellen.