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 GKE sur une solution Bare Metal. Dataplane V2 accepte deux modes de transfert pour l'équilibrage de charge:

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

Le mode de transfert pour l'équilibrage de charge peut être configuré lorsque vous créez un cluster uniquement.

É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 cliente n'est pas conservée pour les pods de backend. Lorsque le paquet provenant du client arrive au nœud d'équilibreur de charge, il est traduit et transféré vers le 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 de l'équilibreur de charge, traduite et renvoyée au client.

Flux de paquets pour SNAT

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

  • Le 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 haut-parleur MetalLB exécuté sur ce nœud.

  • Dataplane V2 traduit l'adresse IP et le port source avec 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 de l'é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'équilibrage de charge Dataplane V2 en mode SNAT

Équilibrage de charge DSR

Le retour direct du serveur (DSR) permet de résoudre les problèmes liés à l'équilibrage de charge SNAT. En mode DSR, le nœud d'équilibreur de charge utilise des 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 de 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 renvoyé renvoie 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 client, mais il permet également d'économiser la bande passante pour le nœud de l'équilibreur de charge. Le trafic de retour ne doit pas nécessairement passer par le nœud d'équilibreur de charge, et le nœud de l'équilibreur de charge 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ête, 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 depuis un client externe vers un pod de backend, et inversement:

  • Le service de type LoadBalancer est attribué au nœud de l'équilibreur de charge, et son adresse IP 172.16.20.16 est annoncée par le haut-parleur 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 de backend.

  • Le pod de 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'é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
...

Une fois le cluster créé, la valeur forwardMode ne peut plus être modifiée. Assurez-vous d'avoir configuré l'option adaptée à vos besoins avant de créer le cluster.