Como solucionar problemas de implantações sem proxy do Traffic Director

Este documento fornece informações para resolver problemas de configuração que envolvem a implantação de serviços do gRPC sem proxy com o Traffic Director.

Como solucionar problemas de falhas de RPC em um aplicativo gRPC

Há duas maneiras comuns de resolver falhas de RPC em um aplicativo gRPC:

  1. Analise o status retornado quando uma RPC falha. Na maioria dos casos, o status contém informações suficientes para ajudar você a entender a causa de uma falha do RPC. O tratamento de erros de status no gRPC é explicado na documentação sobre tratamento de erros do gRPC.
  2. Ativar a geração de registros no ambiente de execução do gRPC. Às vezes é preciso analisar os registros do ambiente de execução do gRPC para entender uma falha que pode não ser propagada de volta para um status de retorno da RPC. Por exemplo, quando uma RPC falha com um status indicando que o prazo foi excedido, os registros podem ajudar você a entender a falha subjacente que causou o prazo excedido. As diferentes implementações de linguagem do gRPC têm maneiras diferentes de ativar a geração de registros no ambiente de execução do gRPC.

    • gRPC em Java: gRPC usa java.util.logging para geração de registros. Defina io.grpc.level como nível FINE para ativar a geração de registros detalhados suficientes no ambiente de execução do gRPC. Uma maneira comum de ativar a geração de registros no Java é carregar a configuração da geração de registros de um arquivo e fornecer o local do arquivo para o JVM usando uma sinalização de linha de comando. Exemplo:
    # Create a file called logging.properties with the following contents.
    handlers=java.util.logging.ConsoleHandler
    io.grpc.level=FINE
    io.grpc.xds.level=FINEST
    java.util.logging.ConsoleHandler.level=ALL
    java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
    
    # Pass the location of the file to JVM via this command-line flag
    -Djava.util.logging.config.file=logging.properties
    

    Para ativar a geração de registros para módulos xDS, defina io.grpc.xds.level como FINE. Para ver registros mais detalhados, defina o nível como FINER ou FINEST.

    GRPC_GO_LOG_VERBOSITY_LEVEL=99 GRPC_GO_LOG_SEVERITY_LEVEL=info
    
    • Para ativar a geração de registros com o gRPC em C++, consulte as instruções aqui. Para ativar a geração de registros específicos para módulos xDS, ative os rastreadores a seguir usando a GRPC_TRACE variável de ambiente, conforme descrito aqui, para xds_client, xds_resolver , cds_lb, eds_lb, priority_lb, weighted_target_lb e lrs_lb.

Dependendo do erro no status da RPC ou nos registros do ambiente de execução, o problema pode estar em uma das seguintes categorias.

Não foi possível se conectar ao Traffic Director

Para resolver problemas de conexão, tente fazer o seguinte:

  • Verifique se o valor do server_uri no arquivo de bootstrap é trafficdirector.googleapis.com:443.
  • Certifique-se de que a variável de ambiente GRPC_XDS_BOOTSTRAP esteja definida e apontando para o arquivo de bootstrap.
  • Verifique se você está usando o esquema xds no URI ao criar um canal do gRPC.
  • Verifique se você concedeu as permissões do IAM necessárias para criar instâncias de computação e modificar uma rede em um projeto.
  • Verifique se você ativou a API Traffic Director no projeto. Em APIs e serviços do Console do Google Cloud para seu projeto, procure erros da API Traffic Director.
  • Confirme se a conta de serviço tem as permissões corretas. Os aplicativos gRPC em execução na VM ou no pod usam a conta de serviço do host da VM do Compute Engine ou da instância de nó do Google Kubernetes Engine.
  • Confirme se o escopo de acesso à API das VMs do Compute Engine ou dos clusters do GKE está definido para permitir acesso total às APIs do Compute Engine. Faça isso especificando --scopes=https://www.googleapis.com/auth/cloud-platform ao criar as VMs ou o cluster.
  • Confirme se você pode acessar trafficdirector.googleapis.com:443 a partir da VM. Se houver problemas de acesso, os possíveis motivos incluem um firewall que impeça o acesso a trafficdirector.googleapis.com na porta TCP 443 ou problemas de resolução de DNS para o nome do host trafficdirector.googleapis.com.

Não é possível resolver o nome do host especificado no URI

Para resolver problemas de resolução de nomes de host, tente o seguinte:

  • Verifique se os aplicativos cliente gRPC estão atualizados para a versão 1.30.0 ou superior do gRPC.
  • Verifique se a porta usada no URI para criar um canal gRPC corresponde ao valor da porta na regra de encaminhamento usada na configuração. Se uma porta não for especificada no URI, o valor 80 será usado para corresponder a uma regra de encaminhamento.
  • Verifique se o nome do host e a porta usados no URI para criar um canal do gRPC corresponde exatamente a uma regra de host no mapa de URL usado na configuração.
  • Verifique se a mesma regra de host não está configurada em mais um mapa de URL.
  • Verifique se não há caracteres curinga em uso. As regras de host que contêm o caractere curinga * são ignoradas.

A RPC falha porque o serviço não está disponível

Para resolver falhas de RPC quando um serviço não está disponível, tente o seguinte:

  • Verifique o status geral do Traffic Director e o status dos serviços de back-end no Console do Cloud. Verifique se os mapas de URL corretos fazem referência aos serviços de back-end. Isso está na coluna Mapas de regra de roteamento associados.
  • Verifique se os back-ends associados aos seus serviços de back-end estão íntegros, conforme mostrado na coluna Back-ends.
  • Se os back-ends não estiverem íntegros, clique no serviço de back-end correspondente e verifique se a verificação de integridade correta está configurada. As verificações de integridade geralmente falham devido a regras de firewall incorretas ou ausentes ou uma incompatibilidade nas tags especificadas na VM e nas regras de firewall. Para mais informações, consulte Como criar verificações de integridade.
  • Para que as verificações de integridade do gRPC funcionem corretamente, os back-ends do gRPC precisam implementar o protocolo de verificação de integridade do gRPC {: class="external" target="github" track-type="article" track-name="gitHubLink" track-metadata-position="body" }. Se este protocolo não for implementado, use uma verificação de integridade TCP. Não use uma verificação de integridade HTTP, HTTPS ou HTTP/2 com os serviços gRPC.
  • Ao usar grupos de instâncias, verifique se a porta nomeada especificada no grupo de instâncias corresponde à porta usada na verificação de integridade. Ao usar NEGs, verifique se a especificação do serviço do GKE tem a anotação de NEG correta e se a verificação de integridade está configurada para usar a porta de exibição de NEG.
  • Verifique se o protocolo do endpoint está configurado como GRPC.
  • Clique em Mapas de regras de roteamento associados e verifique se os serviços de back-end especificados nas regras de correspondência de host estão corretos.

A seguir

Para informações gerais sobre a solução de problemas do Traffic Director, consulte Como solucionar problemas nas implantações do Traffic Director.