Como configurar balanceamento de carga de rede

Com o balanceamento de carga da rede, você pode balancear a carga dos sistemas com base nos dados de protocolos IP recebidos como endereço, porta e tipo de protocolo.

O balanceamento de carga da rede usa as regras de encaminhamento que apontam para os pools de destino, onde são listadas as instâncias disponíveis para o balanceamento de carga e é definido o tipo de verificação de integridade que será feita nessas instâncias. Consulte o exemplo de balanceamento de carga de rede para mais informações.

O balanceamento de carga de rede é um balanceador de carga regional sem proxy. Você pode usá-lo para balancear a carga do tráfego de UDP e o tráfego de TCP e SSL em portas que não sejam compatíveis com balanceadores de carga proxy SSL e proxy TCP.

Um balanceador de carga de rede é um balanceador de carga de passagem. Ele não cria proxy entre conexões de clientes.

Para outros tipos de balanceadores de carga, consulte a página de balanceamento de carga principal.

Algoritmo de distribuição de carga

Por padrão, para distribuir o tráfego para as instâncias, a Afinidade de sessão é definida como NONE. O Google Compute Engine seleciona uma instância com base no hash do IP e porta de origem, IP e porta de destino, e protocolo. Isso significa que as conexões TCP de entrada são distribuídas entre as instâncias e que cada conexão pode seguir para uma instância diferente. Todos os pacotes de uma conexão são direcionados para a mesma instância até a conexão ser encerrada. As conexões estabelecidas não são consideradas no balanceamento.

Independentemente da configuração da afinidade de sessão, todos os pacotes de uma conexão são direcionados para a instância escolhida e não afetam as decisões de balanceamento de carga para as novas conexões de entrada. Isto poderá resultar em desequilíbrio entre back-ends se forem usadas conexões TCP de longa duração.

Opte por uma configuração diferente da Afinidade de sessão se várias conexões de um cliente precisam seguir para a mesma instância. Para mais informações, consulte sessionAffinity na documentação de Pools de destino.

Pools de destino

Um recurso de Pool de destino define um grupo de instâncias que receberá o tráfego recebido pelas regras de encaminhamento. Quando uma regra de encaminhamento direciona o tráfego para um pool de destino, o Google Compute Engine seleciona uma instância desses pools de destino com base em um hash do IP e porta de origem e do IP e porta de destino. Consulte Algoritmo de distribuição de carga para mais informações sobre como o tráfego é distribuído para as instâncias.

Os pools de destino só podem ser usados com regras de encaminhamento que tratem o tráfego TCP e UDP. Para todos os outros protocolos, crie uma instância de destino. Crie um pool de destino para usá-lo com uma regra de encaminhamento. Cada projeto pode ter até 50 pools de destino.

Se você deseja que o pool de destino contenha uma única instância de máquina virtual, use o recurso Encaminhamento de protocolo.

O balanceamento de carga da rede é compatível com o Autoescalador do Compute Engine para que os usuários façam escalonamentos automáticos nos grupos de instâncias de um pool de destino com base na utilização da CPU. Para mais informações, consulte Escalonamento baseado na utilização de CPU.

Aprenda mais sobre pools de destino e como configurá-los.

Regras de encaminhamento

As regras de encaminhamento funcionam em conjunto com pools e instâncias de destino para oferecer suporte a recursos de balanceamento de carga e encaminhamento de protocolo. Para usar o balanceamento de carga e o encaminhamento de protocolo, crie uma regra de encaminhamento que direcione o tráfego para pools de destino específicos, no caso do balanceamento de carga, ou instâncias de destino, no caso do encaminhamento de protocolo. Não use esses recursos sem uma regra de encaminhamento.

Os recursos de regra de encaminhamento fazem parte da coleção Regras de encaminhamento. Cada regra corresponde a um determinado endereço IP, protocolo e, opcionalmente, um intervalo de portas para um único pool ou instância de destino. Quando há envio de tráfego para um endereço IP externo veiculado por uma regra de encaminhamento, esse tráfego é direcionado para as instâncias ou pool de destino. Crie até 50 objetos de regra de encaminhamento por projeto.

Saiba mais sobre regras de encaminhamento e como configurá-las.

Se você estiver balanceando a carga de pacotes UDP possivelmente fragmentados antes de chegar à rede da Virtual Private Cloud (VPC) do Google Cloud Platform (GCP), consulte Balanceamento de carga e pacotes UDP fragmentados.

Verificação de integridade

As verificações de integridade garantem que o Compute Engine encaminhe novas conexões somente para instâncias que estiverem ativas e prontas para recebê-las. O Compute Engine envia solicitações de verificação de integridade para cada instância na frequência especificada. Quando uma instância exceder o número permitido de falhas de verificação de integridade, ela não será mais considerada qualificada para receber novos tráfegos. As conexões existentes não serão encerradas ativamente, o que permite que as instâncias sejam desligadas de maneira limpa e fechem conexões TCP.

A verificação de integridade continuará consultando instâncias não íntegras e retornará uma instância para o pool quando o número especificado de verificações bem sucedidas for alcançado.

O balanceamento de carga da rede depende das Verificações de integridade de HTTP legadas para determinar a integridade da instância. Mesmo que o HTTP não seja usado em seu serviço, execute pelo menos um servidor da web básico em cada instância que o sistema de verificação de integridade pode consultar.

Regras de firewall e balanceamento de carga da rede

Os testes de verificação de integridade de HTTP são enviados dos intervalos de IP 209.85.152.0/22, 209.85.204.0/22 e 35.191.0.0/16. Você precisa criar regras de firewall que permitam que o tráfego desses intervalos alcance as instâncias na porta 80.

O balanceamento de carga da rede é um balanceador de carga de passagem, ou seja, suas regras de firewall precisam permitir tráfego dos endereços IP de origem do cliente. Se o serviço estiver aberto para a Internet, será mais fácil permitir tráfego de todos os intervalos de IP. Para restringir o acesso a somente determinados IPs de origem, configure regras de firewall para impor essa restrição, mas será necessário que haja acesso de todos os intervalos de IP de verificação de integridade.

Afinidade de sessão

Consulte o parâmetro sessionAffinity em Pools de destino.

Balanceamento de carga e pacotes UDP fragmentados

No balanceamento de carga dos pacotes UDP, é importante lembrar que:

  1. os pacotes não fragmentados são tratados normalmente em todas as configurações;
  2. os pacotes UDP podem ficar fragmentados antes de chegar ao GCP. As redes intermediárias aguardam a chegada de todos os fragmentos para encaminhá-los, causando demoras ou perdendo fragmentos. O GCP não aguarda todos os fragmentos. Ele encaminha cada um deles assim que chegam;
  3. o fato de os fragmentos UDP, após o primeiro, não conterem a porta de destino, gera problemas em duas situações:

    • Se a afinidade de sessão dos pools de destino estiver definida como NONE (afinidade de cinco tuplas), os fragmentos subsequentes poderão ser perdidos, porque o balanceador de carga não consegue calcular o hash de cinco tuplas.
    • Se houver mais de uma regra de encaminhamento UDP para o mesmo endereço IP com carga balanceada, os fragmentos subsequentes poderão chegar na regra de encaminhamento incorreta.

Se você espera pacotes UDP fragmentados, faça o seguinte:

  • Defina a afinidade de sessão como CLIENT_IP_PROTO ou CLIENT_IP. Não use NONE (hash de 5 tuplas). CLIENT_IP_PROTO e CLIENT_IP não usam acessama porta de destino para hash, por isso, calculam o mesmo hash do primeiro fragmento para os subsequentes.
  • Use somente uma regra de encaminhamento UDP por endereço IP com carga balanceada. Isso garante que todos os fragmentos cheguem à mesma regra de encaminhamento.

Com essas configurações, os fragmentos UDP do mesmo pacote são encaminhados para a mesma instância para serem remontados.

Primeiros passos

O guia de balanceamento de carga da rede demonstra como configurar rapidamente uma solução de balanceamento de carga e distribuir o tráfego para um conjunto de instâncias Apache. Use este cenário como base para trabalhar com outros tipos de tráfego ou configurações mais complexas.

Primeiros passos

Monitore seus recursos de onde você estiver

Instale o app do Google Cloud Console para ajudar você a gerenciar seus projetos.

Enviar comentários sobre…

Compute Engine Documentation