Configurer le mode de transfert de l'équilibrage de charge

Ce document décrit les deux modes de transfert Dataplane V2 pour l'équilibrage de charge et explique comment les activer pour Google Distributed Cloud. Dataplane V2 est compatible avec deux modes de transfert pour l'équilibrage de charge :

  • Traduction d'adresse réseau source (SNAT)
  • Retour direct du serveur (DSR)

Vous ne pouvez configurer le mode de transfert pour l'équilibrage de charge que lorsque vous créez un cluster.

Équilibrage de charge SNAT

La traduction d'adresse réseau source (SNAT) est le mode de transfert par défaut pour l'équilibrage de charge Dataplane V2. Toutefois, en mode SNAT, l'adresse IP du client n'est pas conservée pour les pods de backend. Lorsque le paquet du client arrive au nœud de l'équilibreur de charge, il est traduit et transféré au nœud de calcul de destination avec le pod de backend. Le pod de backend voit que la requête provient du nœud de l'équilibreur de charge, et non de l'emplacement du client. La réponse est donc renvoyée au nœud d'équilibreur de charge, traduite en sens inverse et renvoyée au client.

Flux de paquets pour le transfert SNAT

Avec le mode de transfert SNAT pour l'équilibrage de charge Dataplane V2, voici le flux de paquets d'un client externe vers un pod backend, puis retour :

  • Un service de type LoadBalancer est attribué à un nœud d'équilibreur de charge, et son adresse IP 172.16.20.16 est annoncée par le speaker MetalLB exécuté sur ce nœud.

  • Dataplane V2 traduit l'adresse IP et le port source avec le SNAT en <LB_NODE_IP>:52000, puis transfère le paquet au nœud de calcul.

  • La réponse est renvoyée au nœud d'équilibreur de charge et l'adresse de destination est traduite en sens inverse.

Le schéma suivant illustre le flux de paquets pour le mode SNAT :

Flux de paquets pour l&#39;équilibrage de charge Dataplane V2 en mode SNAT

Équilibrage de charge DSR

Le mode retour serveur direct (DSR) résout les problèmes liés à l'équilibrage de charge SNAT. En mode DSR, le nœud de l'équilibreur de charge utilise les options IP pour enregistrer l'adresse source du client. Le nœud de calcul peut récupérer le paquet d'origine et le transférer au pod backend. Le pod de backend peut voir que le paquet provient de l'adresse IP du client et non de l'adresse IP du nœud de l'équilibreur de charge. Par conséquent, le paquet de retour revient directement à l'adresse IP du client au lieu de revenir au nœud de l'équilibreur de charge.

Ce mode résout non seulement le problème de visibilité de l'adresse IP du client, mais il permet également d'économiser la bande passante du nœud de l'équilibreur de charge. Le trafic retour n'a pas besoin de passer par le nœud de l'équilibreur de charge, et celui-ci n'a plus besoin d'effectuer le suivi des connexions. Cette approche permet d'économiser de la mémoire et de libérer le port de transfert. Pour les charges de travail asymétriques, où le trafic de téléchargement est beaucoup plus élevé que le trafic de requêtes, le flux DSR réduit considérablement la bande passante.

Flux de paquets pour DSR

Avec le mode de transfert DSR pour l'équilibrage de charge Dataplane V2, voici le flux de paquets d'un client externe vers un pod backend et inversement :

  • Un service de type LoadBalancer est attribué au nœud d'équilibrage de charge, et son adresse IP 172.16.20.16 est annoncée par le speaker MetalLB exécuté sur ce nœud.

  • Dataplane V2 transfère le paquet au nœud de calcul et utilise les options IP pour enregistrer l'adresse IP et le port source du client d'origine.

  • Dataplane V2 sur le nœud de calcul transfère le paquet au pod backend.

  • Le pod backend récupère l'adresse IP et le port sources, et répond au client.

Le schéma suivant illustre le flux de paquets pour le mode DSR :

Flux de paquets pour l&#39;équilibrage de charge Dataplane V2 en mode SNAT

Activer le mode DSR

Pour activer le mode DSR, ajoutez le champ spec.clusterNetwork.forwardMode au fichier de configuration de votre cluster et définissez-le sur dsr. Comme indiqué précédemment, le mode SNAT est activé par défaut. Vous pouvez spécifier explicitement le mode SNAT en définissant forwardMode sur snat. Le mode de transfert pour l'équilibrage de charge Dataplane V2 ne peut être configuré qu'au moment de la création du cluster.

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

La valeur forwardMode ne peut pas être modifiée une fois le cluster créé. Avant de créer le cluster, assurez-vous d'avoir configuré l'option qui répond le mieux à vos besoins.