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 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 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 de backend. Lorsque le paquet du client arrive sur le nœud de l'é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 détecte 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, et la traduction inversée est inversée, puis renvoyée au client.
Flux de paquets pour la SNAT
Avec le mode de transfert SNAT pour l'équilibrage de charge Dataplane V2, voici le flux de paquets depuis un client externe vers un pod backend, puis retour:
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 sources 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 fait l'objet d'une traduction inversée.
Le schéma suivant illustre le flux de paquets pour le mode SNAT:
Équilibrage de charge DSR
Le retour direct du serveur (DSR) permet de pallier 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 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é est directement renvoyé à l'adresse IP du client au lieu d'être retransmis au nœud de l'équilibreur de charge.
Ce mode résout non seulement le problème de visibilité des adresses 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 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 le 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 backend, puis retour:
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 sources 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, puis 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
au 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.