Neste documento, descrevemos os dois modos de encaminhamento do Dataplane V2 para balanceamento de carga e como ativá-los para o Google Distributed Cloud. O Dataplane V2 é compatível com dois modos de encaminhamento para balanceamento de carga:
- Conversão de endereços de rede de origem (SNAT)
- Retorno direto do servidor (DSR, na sigla em inglês)
O modo de encaminhamento para balanceamento de carga só pode ser configurado quando você cria um cluster.
Balanceamento de carga SNAT
A conversão de endereços de rede de origem (SNAT) é o modo de encaminhamento padrão para o balanceamento de carga do Dataplane V2. No entanto, no modo SNAT, o endereço IP do cliente não é preservado para pods de back-end. Quando o pacote do cliente chega ao nó do balanceador de carga, ele é convertido e encaminhado para o nó de trabalho de destino com o pod de back-end. O pod de back-end vê que a solicitação vem do nó do balanceador de carga, e não do local do cliente. Como resultado, a resposta é retornada ao nó do balanceador de carga e revertida, traduzida e enviada de volta ao cliente.
Fluxo de pacotes para SNAT
Com o modo de encaminhamento de SNAT para balanceamento de carga do Dataplane V2, veja o fluxo de pacotes de um cliente externo para um pod de back-end e de volta:
O serviço do tipo LoadBalancer é atribuído a um nó do balanceador de carga, e o endereço IP
172.16.20.16
é divulgado pelo alto-falante do MetalLB em execução nesse nó.O Dataplane V2 converte o endereço IP e a porta de origem com SNAT para
<LB_NODE_IP>:52000
e encaminha o pacote para o nó de trabalho.A resposta é enviada de volta ao nó do balanceador de carga, e o endereço de destino é convertido inversamente.
O diagrama a seguir mostra o fluxo de pacotes para o modo SNAT:
Balanceamento de carga DSR
O retorno do servidor direto (DSR, na sigla em inglês) resolve problemas com o balanceamento de carga SNAT. No modo DSR, o nó do balanceador de carga usa opções de IP para salvar o endereço de origem do cliente. O nó de trabalho pode recuperar o pacote original e encaminhá-lo ao pod de back-end. O pod de back-end pode ver que o pacote vem do endereço IP do cliente em vez do endereço IP do nó do balanceador de carga. Como resultado, o pacote de retorno retorna diretamente ao endereço IP do cliente em vez de viajar de volta ao nó do balanceador de carga.
Esse modo não apenas resolve o problema de visibilidade do endereço IP do cliente, como também economiza a largura de banda para o nó do balanceador de carga. O tráfego de retorno não precisa passar pelo nó do balanceador de carga, e o nó do balanceador de carga não precisa mais fazer o rastreamento de conexão. Essa abordagem economiza memória e libera a porta de encaminhamento. Para cargas de trabalho assimétricas, em que o tráfego de download é muito maior do que o de solicitação, o fluxo de DSR reduz a largura de banda significativamente.
Fluxo de pacotes para DSR
Com o modo de encaminhamento DSR para balanceamento de carga do Dataplane V2, veja o fluxo de pacotes de um cliente externo para um pod de back-end e de volta:
O serviço do tipo LoadBalancer é atribuído ao nó do balanceador de carga, e o endereço IP dele
172.16.20.16
é anunciado pelo alto-falante 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 salvar a porta e o endereço IP da origem do cliente original.
O Dataplane V2 no nó de trabalho encaminha o pacote ao 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 a seguir mostra o fluxo de pacotes para o modo DSR:
Ativar modo DSR
Para ativar o modo DSR, adicione o campo
spec.clusterNetwork.forwardMode
ao arquivo de configuração do cluster e defina-o como dsr
. Conforme observado anteriormente,
o modo SNAT é ativado por padrão. É possível especificar o modo SNAT explicitamente definindo forwardMode
como snat
. O modo de encaminhamento para o balanceamento 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
...
O valor forwardMode
não pode ser modificado após a criação do cluster. Verifique se você
configurou a opção correta para suas necessidades antes de criar o cluster.