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.:
- Visão geral do balanceador de carga de rede de passagem externa
- Visão geral do balanceador de carga de rede de passagem externa baseado em serviço de back-end
- Visão geral do balanceador de carga de rede de passagem externa com base em pool de destino
- Conceitos de failover para balanceadores de carga de rede de passagem externa
- Geração de registros e monitoramento do balanceador de carga de rede de passagem externa
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 AnalyzerResolver 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:
- Restrições e orientações para grupos de instâncias
- Alterar o modo de balanceamento de um balanceador de carga
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.
- Detectar (vincular a) o endereço IP do balanceador de carga ou qualquer endereço IP
(
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 de0.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
.