Este documento descreve os dois modos de encaminhamento do plano de dados V2 para o equilíbrio de carga e como ativá-los para o Google Distributed Cloud. O plano de dados V2 suporta dois modos de encaminhamento para o equilíbrio de carga:
- Tradução de endereços de rede de origem (SNAT)
- Devolução direta do servidor (DSR)
O modo de encaminhamento para o equilíbrio de carga só pode ser configurado quando cria um cluster.
Balanceamento de carga SNAT
A tradução de endereços de rede de origem (SNAT) é o modo de encaminhamento predefinido para o equilíbrio de carga do Dataplane V2. No entanto, no modo SNAT, o endereço IP do cliente não é preservado para os pods de back-end. Quando o pacote do cliente chega ao nó do equilibrador de carga, é traduzido e encaminhado para o nó de trabalho de destino com o pod de back-end. O agrupamento de back-end vê que o pedido é proveniente do nó do equilibrador de carga, em vez da localização do cliente. Como resultado, a resposta é devolvida ao nó do balanceador de carga, traduzida de forma inversa e enviada de volta ao cliente.
Fluxo de pacotes para SNAT
Com o modo de encaminhamento SNAT para o equilíbrio de carga do Dataplane V2, segue-se o fluxo de pacotes de um cliente externo para um pod de back-end e vice-versa:
O serviço do tipo LoadBalancer é atribuído a um nó do balanceador de carga e o respetivo endereço IP
172.16.20.16
é anunciado pelo altifalante do MetalLB em execução nesse nó.O Dataplane V2 traduz o endereço IP de origem e a porta com SNAT para
<LB_NODE_IP>:52000
e encaminha o pacote para o nó de trabalho.A resposta é enviada de volta para o nó do balanceador de carga e o endereço de destino é traduzido inversamente.
O diagrama seguinte mostra o fluxo de pacotes para o modo SNAT:
Balanceamento de carga DSR
O retorno direto do servidor (DSR) supera os problemas com o balanceamento de carga SNAT. No modo DSR, o nó do balanceador de carga usa opções de IP para guardar o endereço de origem do cliente. O nó de trabalho pode recuperar o pacote original e encaminhá-lo para o pod de back-end. O pod de back-end pode ver que o pacote está a chegar do endereço IP do cliente, em vez do endereço IP do nó do balanceador de carga. Como resultado, o pacote de retorno regressa diretamente ao endereço IP do cliente em vez de voltar ao nó do equilibrador de carga.
Este modo não só resolve o problema de visibilidade do endereço IP do cliente, como também poupa a largura de banda do nó do equilibrador de carga. O tráfego de retorno não tem de passar pelo nó do balanceador de carga, e o nó do balanceador de carga já não tem de fazer o acompanhamento das ligações. Esta abordagem poupa memória e liberta a porta de encaminhamento. Para cargas de trabalho assimétricas, em que o tráfego de transferência é muito superior ao tráfego de pedidos, o fluxo de DSR reduz significativamente a largura de banda.
Fluxo de pacotes para DSR
Com o modo de encaminhamento DSR para o equilíbrio de carga do Dataplane V2, segue-se o fluxo de pacotes de um cliente externo para um pod de back-end e vice-versa:
O serviço do tipo LoadBalancer é atribuído ao nó do balanceador de carga e o respetivo endereço IP
172.16.20.16
é anunciado pelo altifalante do MetalLB em execução nesse nó.O Dataplane V2 encaminha o pacote para o nó de trabalho e usa as opções de IP para guardar o endereço IP e a porta de origem do cliente original.
O plano de dados V2 no nó de trabalho encaminha o pacote para o pod de back-end.
O pod de back-end recupera o endereço IP e a porta de origem e responde ao cliente.
O diagrama seguinte mostra o fluxo de pacotes para o modo DSR:
Ative o modo DSR
Para ativar o modo DSR, adicione o campo
spec.clusterNetwork.forwardMode
ao ficheiro de configuração do cluster e defina-o como dsr
. Conforme mencionado anteriormente, o modo SNAT está ativado por predefinição. Pode especificar o modo SNAT explicitamente definindo forwardMode
como snat
. O modo de encaminhamento para o equilíbrio de carga do Dataplane V2 só pode ser configurado no momento da criação do 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
...
Não é possível modificar o valor forwardMode
após a criação do cluster. Certifique-se de que
configurou a opção correta para as suas necessidades antes de criar o cluster.