Load-Balancing-Weiterleitungsmodus konfigurieren

In diesem Dokument werden die beiden Dataplane V2-Weiterleitungsmodi für das Load-Balancing und ihre Aktivierung für GKE on Bare Metal beschrieben. 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

Die Quellnetzwerkadressübersetzung (Source Network Address Translation, SNAT) ist der Standardweiterleitungsmodus für Dataplane V2-Load-Balancing. Im SNAT-Modus wird die IP-Adresse des Clients jedoch nicht für Back-End-Pods beibehalten. Wenn das Paket vom Client den Load-Balancer-Knoten erreicht, wird es übersetzt und an den Worker-Zielknoten mit dem Back-End-Pod weitergeleitet. Der Back-End-Pod erkennt, dass die Anfrage vom Knoten des Load-Balancers und nicht vom Clientstandort stammt. Dadurch 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 sieht der Paketfluss von einem externen Client zu einem Back-End-Pod und wieder zurück:

  • 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 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

Durch Direct Server Return (DSR) werden Probleme mit dem SNAT-Load-Balancing behoben. 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 und nicht von der IP-Adresse des Load-Balancer-Knotens stammt. Infolgedessen kehrt das Rückgabepaket direkt an die Client-IP-Adresse zurück, anstatt 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 keine Verbindungen mehr verfolgen. Dieser Ansatz spart Arbeitsspeicher und gibt den Weiterleitungsport frei. Bei asymmetrischen Arbeitslasten, bei denen der Downloadtraffic viel höher als der Anfragetraffic ist, reduziert der DSR-Ablauf die Bandbreite erheblich.

Paketfluss für DSR

Mit dem DSR-Weiterleitungsmodus für Dataplane V2-Load-Balancing sieht der Paketfluss vom und dem 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 vom MetalLB-Lautsprecher 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 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

Fügen Sie der Clusterkonfigurationsdatei das Feld spec.clusterNetwork.forwardMode hinzu und setzen Sie es auf dsr, um den DSR-Modus zu aktivieren. 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.