Questo documento descrive le due modalità di forwarding di Dataplane V2 per il bilanciamento del carico e come abilitarle per Google Distributed Cloud. Dataplane V2 supporta due modalità di forwarding per il bilanciamento del carico:
- Network Address Translation (SNAT) di origine
- Ritorno diretto del server (DSR)
La modalità di forwarding per il bilanciamento del carico può essere configurata solo quando crei un cluster.
Bilanciamento del carico SNAT
SNAT (Network Address Translation) di origine è la modalità di inoltro predefinita per il bilanciamento del carico di Dataplane V2. Tuttavia, in modalità SNAT, l'indirizzo IP del client non viene conservato per i pod di backend. Quando il pacchetto dal client arriva al nodo del bilanciatore del carico, viene tradotto e inoltrato al nodo worker di destinazione con il pod di backend. Il pod di backend vede che la richiesta proviene dal nodo del bilanciatore del carico, anziché dalla località del client. Di conseguenza, la risposta viene restituita al nodo del bilanciatore del carico, tradotta e inviata al client.
Flusso di pacchetti per SNAT
Con la modalità di forwarding SNAT per il bilanciamento del carico di Dataplane V2, ecco il flusso di pacchetti da un client esterno a un pod di backend e viceversa:
Il servizio di tipo LoadBalancer viene assegnato a un nodo del bilanciatore del carico e il suo indirizzo IP
172.16.20.16
è pubblicizzato dall'altoparlante MetalLB in esecuzione su quel nodo.Dataplane V2 converte l'indirizzo IP e la porta di origine con SNAT in
<LB_NODE_IP>:52000
e inoltra il pacchetto al nodo worker.La risposta viene inviata al nodo del bilanciatore del carico e l'indirizzo di destinazione viene tradotto in modo inverso.
Il seguente diagramma mostra il flusso di pacchetti per la modalità SNAT:
Bilanciamento del carico DSR
La funzione Direct Server Return (DSR) consente di risolvere i problemi relativi al bilanciamento del carico SNAT. In modalità DSR, il nodo del bilanciatore del carico utilizza le opzioni IP per salvare l'indirizzo di origine del client. Il nodo worker può recuperare il pacchetto originale e inoltrarlo al pod di backend. Il pod di backend può vedere che il pacchetto proviene dall'indirizzo IP del client invece che dall'indirizzo IP del nodo del bilanciatore del carico. Di conseguenza, il pacchetto restituito ritorna direttamente all'indirizzo IP del client invece di tornare al nodo del bilanciatore del carico.
Questa modalità non solo risolve il problema di visibilità degli indirizzi IP del client, ma consente anche di risparmiare larghezza di banda per il nodo del bilanciatore del carico. Il traffico restituito non deve necessariamente passare attraverso il nodo del bilanciatore del carico e il nodo del bilanciatore del carico non deve più eseguire il monitoraggio delle connessioni. Questo approccio consente di risparmiare memoria e libera la porta di forwarding. Per i carichi di lavoro asimmetrici, in cui il traffico di download è molto più elevato rispetto al traffico di richiesta, il flusso DSR riduce in modo significativo la larghezza di banda.
Flusso di pacchetti per DSR
Con la modalità di forwarding DSR per il bilanciamento del carico di Dataplane V2, ecco il flusso di pacchetti da un client esterno a un pod di backend e viceversa:
Il servizio di tipo LoadBalancer viene assegnato al nodo del bilanciatore del carico e il suo indirizzo IP
172.16.20.16
è pubblicizzato dall'altoparlante MetalLB in esecuzione su quel nodo.Dataplane V2 inoltra il pacchetto al nodo worker e utilizza le opzioni IP per salvare l'indirizzo IP e la porta di origine del client originali.
Dataplane V2 sul nodo worker inoltra il pacchetto al pod di backend.
Il pod di backend recupera l'indirizzo IP e la porta di origine e risponde al client.
Il seguente diagramma mostra il flusso di pacchetti per la modalità DSR:
Attiva modalità DSR
Per abilitare la modalità DSR, aggiungi il campo spec.clusterNetwork.forwardMode
al file di configurazione del cluster e impostalo su dsr
. Come indicato in precedenza,
la modalità SNAT è abilitata per impostazione predefinita. Puoi specificare esplicitamente la modalità SNAT impostando
forwardMode
su snat
. La modalità di forwarding per il bilanciamento del carico di Dataplane V2 può essere configurata solo al momento della creazione del 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
...
Il valore forwardMode
non può essere modificato dopo la creazione del cluster. Assicurati di aver configurato l'opzione corretta per le tue esigenze prima di creare il cluster.