Solução de problemas de balanceadores de carga de rede de passagem externa

Neste guia, descrevemos como resolver problemas de configuração de um balanceador de carga de rede de passagem externo do Google Cloud. Antes de investigar os problemas, conheça as páginas a seguir.:

Resolver problemas comuns com o Network Analyzer

O Network Analyzer monitora automaticamente as configurações da rede VPC e detecta configurações incorretas e não ideais. Ele identifica falhas de rede, fornece informações sobre a causa raiz e sugere possíveis soluções. Para saber mais sobre os diferentes cenários de configuração incorreta que são detectados automaticamente pelo Network Analyzer, consulte Insights do balanceador de carga na documentação do Network Analyzer.

O Network Analyzer está disponível no console do Google Cloud como parte do Network Intelligence Center.

Acessar o Network Analyzer

Resolver problemas de configuração

Os back-ends têm modos de balanceamento incompatíveis

Ao criar um balanceador de carga, talvez você veja o erro:

Validation failed for instance group INSTANCE_GROUP:

backend services 1 and 2 point to the same instance group
but the backends have incompatible balancing_mode. Values should be the same.

Isso acontece quando você tenta usar o mesmo back-end em dois balanceadores de carga diferentes, e os back-ends não têm modos de balanceamento compatíveis.

Para ver mais informações, consulte os seguintes tópicos:

Resolver problemas gerais de conectividade

Se você não conseguir se conectar ao balanceador de carga de rede de passagem externa, verifique os seguintes problemas comuns:

  • Verifique as regras de firewall.

    • Verifique se as regras de firewall de permissão de entrada estão configuradas para permitir verificações de integridade em VMs de back-end.
    • Verifique se as regras de firewall de permissão de entrada permitem o tráfego nas VMs de back-end dos clientes.
    • Verifique se há regras de firewall relevantes para permitir que o tráfego alcance as VMs de back-end nas portas usadas pelo balanceador de carga.
    • Se você estiver usando tags de destino para as regras de firewall, verifique se as VMs de back-end do balanceador de carga estão marcadas corretamente.

    Para saber como configurar regras de firewall exigidas pelo balanceador de carga de rede de passagem externa, consulte Como configurar regras de firewall.

  • Verificar se o agente convidado do Google está em execução na VM de back-end. Se você consegue se conectar a uma VM de back-end íntegra, mas não consegue se conectar ao balanceador de carga, pode ser que o ambiente de convidado (antes chamado de ambiente de convidado do Windows/Linux) da VM não esteja em execução ou não consiga se comunicar com o servidor de metadados (metadata.google.internal, 169.254.169.254).

    Verifique:

    • Verifique se o agente convidado do Google está instalado e em execução na VM de back-end.
    • Verifique se as regras de firewall no sistema operacional convidado da VM de back-end (iptables ou firewall do Windows) não bloqueiam o acesso ao servidor de metadados.
  • Verifique se as VMs de back-end estão aceitando pacotes enviados para o balanceador de carga. Cada VM de back-end precisa ser configurada para aceitar os pacotes enviados ao balanceador de carga. Ou seja, o destino dos pacotes entregues às VMs de back-end é o endereço IP do balanceador de carga. Na maioria das vezes, isso é feito com uma rota local.

    Para VMs criadas com base em imagens do Google Cloud, o agente de convidado instala a rota local para o endereço IP do balanceador de carga. As instâncias do Google Kubernetes Engine baseadas no Container-Optimized OS implementam isso usando iptables.

    Em uma VM de back-end do Linux, execute o comando a seguir para verificar a presença da rota local. Substitua LOAD_BALANCER_IP pelo endereço IP do balanceador de carga:

    sudo ip route list table local | grep LOAD_BALANCER_IP
    
  • Verifique o endereço IP e a vinculação de porta do serviço nas VMs de back-end. Os pacotes enviados para um balanceador de carga de rede de passagem externa chegam às VMs de back-end com o endereço IP de destino do próprio balanceador de carga. Esse tipo de balanceador de carga não é um proxy e esse é o comportamento esperado.

    Para ver os serviços que estão escutando em uma porta, execute o seguinte comando:

    netstat -nl | grep ':PORT'
    

    O software em execução na VM de back-end precisa fazer o seguinte:

    • Detectar (vincular a) o endereço IP do balanceador de carga ou qualquer endereço IP (0.0.0.0 ou ::)
    • Detectar (vincular a) uma porta incluída na regra de encaminhamento do balanceador de carga

    Para testar isso, conecte-se a uma VM de back-end usando SSH ou RDP. Em seguida, execute os seguintes testes usando curl, telnet ou uma ferramenta semelhante:

    • Tente acessar o serviço entrando em contato com ele pelo endereço IP interno da própria VM de back-end, 127.0.0.1 ou localhost.
    • Tente acessar o serviço entrando em contato com ele pelo endereço IP da regra de encaminhamento do balanceador de carga.
  • Verifique se o tráfego da verificação de integridade pode alcançar as VMs de back-end. Para confirmar se o tráfego de verificação de integridade atinge as VMs de back-end, ative a geração de registros de verificação de integridade e pesquise entradas de registro bem-sucedidas.

Resolver problemas de VPC compartilhada

Se você estiver usando a VPC compartilhada e não for possível criar um novo balanceador de carga de rede de passagem externa em uma sub-rede específica, uma política da organização pode ser a causa. Na política da organização, adicione a sub-rede à lista de sub-redes permitidas ou entre em contato com o administrador da organização. Para mais informações, consulte a restrição constraints/compute.restrictSharedVpcSubnetworks.

Resolver problemas de failover

Se você configurou o failover para um balanceador de carga de rede de passagem externa, use as etapas a seguir para verificar a configuração:

  • Verifique se você designou pelo menos um back-end de failover.
  • Verifique suas configurações de política de failover:
  • Entenda como funciona a associação no pool ativo e quando o Google Cloud realiza failover e failback. Inspecione a configuração do balanceador de carga fazendo o seguinte:

    • Use o console do Google Cloud para verificar o número de VMs de back-end íntegras em cada grupo de instâncias de back-end. O console do Google Cloud também mostra quais VMs estão no pool ativo.

    • Verifique se a proporção de failover do seu balanceador de carga está definida corretamente. Por exemplo, se você tiver 10 VMs primárias e uma taxa de failover configurada em 0.2, o Google Cloud realizará um failover quando menos de 2 (10 × 0.2 = 2) VMs primárias forem íntegras. Uma proporção de failover de 0.0 tem um significado especial: o Google Cloud realiza um failover quando nenhuma VM primária for íntegra.

Outros problemas que podem ocorrer:

  • Sintoma: o pool ativo está alternando entre os back-ends primário e de failover.

    O uso de grupos de instâncias gerenciadas com escalonamento automático e failover pode fazer o pool ativo realizar failover e failback repetidamente entre os back-ends primário e de failover. O Google Cloud não impede que você configure o failover com grupos de instâncias gerenciadas, porque sua implantação pode se beneficiar dessa configuração.

  • Desativar a diminuição da conexão não funciona.

    Desativar a diminuição da conexão só funciona se o serviço de back-end estiver configurado com o protocolo TCP.

    A seguinte mensagem de erro será exibida se você criar um serviço de back-end com UDP enquanto a diminuição da conexão estiver desativada:

    gcloud compute backend-services create my-failover-bs
      --load-balancing-scheme external \
      --health-checks-region us-central1 \
      --health-checks my-tcp-health-check \
      --region us-central1 \
      --no-connection-drain-on-failover \
      --drop-traffic-if-unhealthy \
      --failover-ratio 0.5 \
      --protocol UDP
    ERROR: (gcloud.compute.backend-services.create) Invalid value for
    [--protocol]: can only specify --connection-drain-on-failover if the protocol is
    TCP.
    
  • Conexões atuais encerradas durante o failover ou o failback

    Edite a política de failover do seu serviço de back-end. Verifique se a diminuição da conexão no failover está ativada.

Resolver problemas de geração de registros

Se você configurar a geração de registros para um balanceador de carga de rede de passagem externa, os seguintes problemas poderão ocorrer:

  • As medições de RTT, como valores de bytes, poderão estar ausentes em alguns dos registros se não houver pacotes suficientes na amostragem para capturar RTT. É mais provável que isso aconteça para conexões de baixo volume.
  • Valores RTT estão disponíveis apenas para fluxos TCP.
  • Alguns pacotes são enviados sem payload. Se houver amostras de pacotes somente de cabeçalho, o valor de bytes será 0.