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)
Le mode de transfert pour l'équilibrage de charge ne peut être configuré 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 backend. Lorsque le paquet du client arrive sur le 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 backend voit que la requête provient du nœud de l'équilibreur de charge, et non de l'emplacement du client. Par conséquent, la réponse est renvoyée au nœud de l'é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 :
Le service de type LoadBalancer est attribué à un nœud d'équilibrage de charge, et son adresse IP
172.16.20.16
est annoncée par l'émetteur 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 :
É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 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 backend. Le pod backend peut voir que le paquet provient de l'adresse IP du client plutôt que de l'adresse IP du nœud de l'équilibreur de charge. Par conséquent, le paquet de retour est renvoyé 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 économise également 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ê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 d'un client externe vers un pod backend et inversement :
Le service de type LoadBalancer est attribué au nœud d'équilibreur de charge, et son adresse IP
172.16.20.16
est annoncée par le locuteur 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 sources 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 :
Activer le mode DSR
Pour activer le mode DSR, ajoutez le champ spec.clusterNetwork.forwardMode
à votre fichier de configuration du 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.