Configurar o modo de encaminhamento do balanceamento de carga

Neste documento, descrevemos os dois modos de encaminhamento do Dataplane V2 para balanceamento de carga e como ativá-los no 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 ao criar um cluster.

Balanceamento de carga SNAT

A conversão de endereços de rede de origem (SNAT, na sigla em inglês) é 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 SNAT para balanceamento de carga do Dataplane V2, este é 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 endereço IP dele 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:

Fluxo de pacotes para balanceamento de carga do Dataplane V2 no 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, esté é 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 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:

Fluxo de pacotes para balanceamento de carga do Dataplane V2 no modo SNAT

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 de 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.