Como resolver problemas

Nesta página, explicamos vários cenários de erro, as mensagens de erro desses cenários e as etapas de solução de problemas para resolver os erros.

Cenários de erro de conectividade

Se a instância tiver problemas de conectividade, verifique os cenários nesta seção para ver se um deles está causando o problema.

Caso contrário, execute Telnet em um dos nós do Redis e execute alguns comandos simples do Redis para ver se a instância é responsiva ou não.

Erro de conexão causado por recursos provisionados em diferentes regiões ou diferentes redes VPC

Para se conectar a uma instância do Memorystore com um recurso do Google Cloud, como uma VM do Compute Engine, os recursos precisam ser provisionados na mesma região e na mesma rede VPC.

A tentativa de usar o Telnet para uma instância do Memorystore com um recurso em uma região ou rede VPC diferente gera a mensagem de erro a seguir:

telnet: Unable to connect to remote host: Connection timed out

Erro de conexão causado pelo peering da rede VPC excluída

A criação de uma instância do Memorystore para Redis cria um peering de VPC entre sua rede VPC e uma rede VPC interna do Google.

O peering de rede usa o formato a seguir:

redis-peer-############

Se esse peering de rede for excluído, a tentativa de executar Telnet na instância do Redis gerará a mensagem de erro a seguir:

telnet: Unable to connect to remote host: Connection timed out

A maneira mais fácil de restabelecer o peering de rede excluído é criar uma nova instância do Memorystore para Redis. A criação de uma nova instância do Redis restabelece o peering de rede excluído para que você possa excluí-la e a instância original do Redis tenha o peering de rede necessário.

As regras de firewall bloqueiam os endereços IP da instância

Problemas de conectividade podem surgir se você criar regras de firewall de saída que bloqueiem a porta do Redis (6379) ou o endereço IP da instância.

Não crie regras de firewall de rede que bloqueiem o intervalo de IP das instâncias do Redis.

Cenários de erro de alto uso da CPU

Falta de resposta da instância do Redis causada pelo uso indevido de comandos Redis com custo maior.

Se a instância do Redis tiver problemas de alta latência, falta de resposta ou conectividade, é possível que os problemas sejam causados pelo uso indevido dos seguintes comandos do Redis com custo maior:

Esses comandos podem sobrecarregar a CPU na instância. O Redis de código aberto executa KEYS em ambientes de produção. O uso de LRANGE para consultar todo ou um subconjunto grande do keyspace pode exigir recursos de CPU altos. Usar um script Lua complexo com EVAL pode causar alto uso da CPU.

Se a instância tiver alta latência ou falta de resposta, verifique os registros do cliente para saber se algum comando de custo maior foi executado. Em caso afirmativo, anote o horário. Em seguida, use o Cloud Monitoring para ver a métrica redis.googleapis.com/stats/cpu_utilization. Veja se períodos de alta utilização da CPU coincidem com os mesmos períodos em que os comandos mais caros foram executados.

Não recomendamos usar o comando KEYS em ambientes de produção. Para EVAL, use scripts Lua menos complexos. Para LRANGE, reduza o número de chaves no conjunto de chaves que está sendo consultado em uma única operação.

Cenários de erros de rede

O intervalo de IP alocado foi esgotado

O Memorystore para Redis requer o uso de uma conexão de acesso a serviços privados e um intervalo de endereços IP associado para essa conexão. É possível esgotar os endereços IP disponíveis nesse intervalo com instâncias do Redis e outros recursos do Google Cloud.

Se os endereços IP estiverem esgotados, a criação de uma instância gerará a mensagem de erro a seguir:

The IP ranges for the connection do not have enough available IPs. Allocate a new range or expand existing range and try again.

Resolva esse problema alocando outros endereços IP. Para mais informações, consulte esgotamento do intervalo de endereços IP.

Você não tem uma conexão de acesso a serviços privados estabelecida para sua rede.

Se a instância do Redis usar o modo de conexão de acesso a serviços privados e não houver uma conexão de acesso a serviços privados na rede, poderá ser exibido o erro a seguir:

Google private service access is not enabled. Enable private service access and try again

Para resolver esse problema, estabeleça uma conexão de acesso a serviços privados.

O peering de rede para acesso a serviços privados foi excluído

Estabelecer uma conexão de acesso a serviços privados cria uma conexão de peering de rede chamada servicenetworking-googleapis-com, que aparece na página Peering de rede VPC do projeto.

A exclusão do peering de rede faz com que seja exibido o erro a seguir para instâncias do Redis existentes:

  • telnet: Unable to connect to remote host: Connection timed out

A exclusão do peering de rede faz com que seja exibido o erro a seguir ao criar uma instância do Redis:

  • Private services access is not configured correctly. For steps on how to verify the connection, check the documentation.

Para resolver esse problema, siga a última etapa das instruções da gcloud em Como estabelecer uma conexão de acesso a serviços privados.

Sinalizações de rede conflitantes durante a criação da instância do Redis

Se você usar os parâmetros --reserved-ip-range e --connect-mode=private-service-access, será exibido o erro a seguir:

Reserved IP range is not supported for --connect-mode private services access

Para resolver esse problema, use --reserved-ip-range com --connect-mode=direct-peering ou use --connect-mode=PRIVATE_SERVICE_ACCESS.

Não é possível usar os dois ao mesmo tempo, porque o parâmetro --reserved-ip-range não é compatível com o modo de conexão de acesso a serviços privados.

Excedida a cota de sub-rede do seu projeto

Há um limite no número de sub-redes que podem ser criadas no projeto. Se você exceder essa cota, receberá a seguinte mensagem de erro:

Internal network quota exceeded. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8

Para resolver esse problema, preencha o formulário na mensagem de erro ou entre em contato com o suporte do Google Cloud.

Projeto de serviço não anexado ao projeto host

Se você estiver usando a VPC compartilhada, o projeto de serviço não será anexado ao projeto host se for exibido o erro a seguir:

Invalid network name <network-name>. Project <project-name> referenced is not the host project for <service-project-name>.

Para resolver esse problema, anexe seu projeto de serviço ao projeto host.

Uso incompatível do modo de conexão de peering direto e da rede VPC compartilhada durante a criação da instância

Não é possível criar uma instância do Redis em um projeto de serviço com o modo de conexão de peering direto ao designar uma rede VPC compartilhada do projeto host para a instância.

O modo de conexão será definido como direct-peering por padrão se você não definir um valor para --connection-mode. Se você tentar usar o modo de conexão de peering direto durante a criação da instância e também escolher uma rede VPC compartilhada do projeto host como o valor para --authorized-network, será exibido o erro a seguir:

Authorized_network must exist in the same project as redis instance

Para resolver esse problema, especifique --connect-mode=PRIVATE_SERVICE_ACCESS no comando de criação da instância do Redis ou escolha uma rede VPC normal no mesmo projeto da instância do Redis.

Intervalos de endereços IP do Compute Engine incompatíveis

Não é possível acessar o Memorystore para Redis com VMs do Compute Engine que tenham um endereço IP dentro do intervalo 172.17.0.0/16, porque esse intervalo é reservado para um componente interno.

Erros de conexão com sua instância do Redis usando outros recursos do GCP

Erros de conexão com a instância de ambientes sem servidor que exigem um conector de acesso VPC sem servidor

Se você não conseguir se conectar a uma instância do Redis usando um dos ambientes sem servidor que exigem um conector de acesso VPC sem servidor, é possível que você não tenha configurado um conector de acesso VPC sem servidor para o ambiente.

Consulte Requisitos do conector de acesso VPC sem servidor para mais detalhes.

Erros de conexão com a instância usando um cluster do Google Kubernetes Engine

Não é possível conectar-se a uma instância do Memorystore para Redis a partir de um cluster GKE sem alias nativos de VPC/IP ativados no cluster. É mais fácil ativar o alias nativos de VPC/IP durante a criação do cluster do GKE. Ao criar o cluster, selecione Nativo de VPC nas opções avançadas. Para mais detalhes, consulte Como criar clusters nativos de VPC.

Cenários de erros de gerenciamento de identidade e acesso (IAM, na sigla em inglês)

Como restaurar uma vinculação de política excluída para uma conta de serviço

O Memorystore para Redis usa as contas de serviço a seguir para gerenciar suas instâncias do Redis:

  • service-project-number@service-networking.iam.gserviceaccount.com
  • service-project-number@cloud-redis.iam.gserviceaccount.com

A exclusão das vinculações de política dessas contas de serviço impede que você crie novas instâncias.

Se você tentar criar uma instância do Redis usando o gcloud nesse cenário, poderá ser exibida a mensagem de erro a seguir:

(gcloud.redis.instances.create) FAILED_PRECONDITION: A required IAM policy might be missing. Please run this command:"gcloud projects add-iam-policy-binding <YOUR-PROJECT-ID> --member='serviceAccount:service-<YOUR-PROJECT-NUMBER>@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'" and try again. com.google.apps.framework.request.StatusException: <eye3 title='FAILED_PRECONDITION'/> generic::FAILED_PRECONDITION: A required IAM policy might be missing. Please run this command:"gcloud projects add-iam-policy-binding <YOUR-PROJECT-ID> --member='serviceAccount:service-<YOUR-PROJECT-NUMBER>@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'" and try again.

Para restabelecer a vinculação de política para essas contas de serviço, execute um dos seguintes comandos, substituindo variables pelos valores apropriados. Execute o comando associado à conta de serviço excluída.

gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'

Erros de tempo limite da operação

Os cenários de erro a seguir resultam em uma instância do Redis sem resposta e/ou tempos limites de operação de instância/nó.

Erro de partição de rede

Às vezes, os recursos do Google Cloud não podem se comunicar entre zonas dentro de uma região devido a um erro de partição de rede nos servidores do Google Cloud. Isso pode causar perda de conexão na instância, gerando um erro de tempo limite.

Depois que o Google Cloud resolver o erro de partição de rede da região ou zona em que sua instância é provisionada, a conectividade será retomada normalmente.

Nesse cenário, é possível ver uma mensagem de erro de conectividade como esta:

telnet: Unable to connect to remote host: Connection timed out

Se você não conseguir identificar a causa do erro de tempo limite, entre em contato com o suporte do Google Cloud.

Projeto de serviço e projeto host que não estão no mesmo perímetro de controle de serviço da VPC

Se você estiver usando VPC compartilhada e um perímetro de controle de serviço VPC, e a operação de criação da instância do Redis atingir o tempo limite, isso poderá indicar que o projeto de serviço e o projeto host não estão no Mesmo perímetro de serviço. O projeto de serviço e o projeto host precisam estar no mesmo perímetro para que a instância do Redis se comunique com os clientes conectados pela rede VPC compartilhada.

Para ver se você está enfrentando esse problema, verifique os registros de auditoria da sua instância do Redis para o erro a seguir:

violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"

Para resolver esse problema, coloque a rede do host e a rede de serviços no mesmo perímetro de serviço.

Como solucionar problemas de importação e exportação

Nesta seção, descrevemos alguns problemas comuns que podem ocorrer ao usar a importação e a exportação do Memorystore para Redis.

Os botões de importação e exportação estão desativados no Console do Cloud

Problema: o usuário conectado ao console não tem as permissões redis.instances.import e/ou redis.instances.export necessárias para importar e/ou exportar arquivos RDB.

Solução: conceda as permissões ao usuário e atualize a página de detalhes da instância.

A operação de importação foi concluída, mas os dados não foram restaurados

Se uma operação de importação for concluída, mas os dados não forem restaurados, verifique primeiro se há uma mensagem de erro no Console do Cloud ou na linha de comando e resolva os problemas descritos na mensagem de erro.

Se houver uma falha durante o processo de importação, a instância será recuperada usando um arquivo RDB vazio. Tente restaurar os dados importando o mesmo arquivo RDB novamente ou usando um arquivo RDB diferente.

Ocorreu uma falha na importação porque o arquivo RDB era muito grande.

Se foi exibida a mensagem de erro "Tamanho do arquivo RDB de importação gs://bucket/object.rdb excede a memória máxima de 10 GB", escalone verticalmente sua instância e tente a importação novamente. Também é possível tentar importar um arquivo RDB menor para sua instância.

Como solucionar problemas da ferramenta de linha de comando de gcloud

Se ocorrer um problema em que um comando da ferramenta gcloud não está disponível ou se o comando apresentar comportamento diferente do que consta na documentação, tente atualizar o SDK do gcloud:

gcloud components update