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 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 Memcached 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:
ERROR: (gcloud.memcache.instances.create) {
"code": 9,
"message": "Unable to create instance. The allocated private IP address space
is exhausted. For information on expanding the allocation, see https://cloud.google.com/vpc/docs/configure-private-services-access#modify-ip-range"
}
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 você tentar criar uma instância do Memorystore para Memcached sem uma conexão de acesso a serviços privados estabelecida para a rede do projeto, a criação falhará com o erro a seguir:
Google private service access is not enabled. Enable private service access and
try again
Para criar uma instância, siga as instruções de configuração do acesso a serviços privados em Como estabelecer 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 desse peering de rede pode fazer com que sejam exibidos os erros a seguir:
telnet: Unable to connect to remote host: Connection timed out
Unable to create instance. Enable private service access for the authorized network and try again. For information on enabling private service access, see https://cloud.google.com/service-infrastructure/docs/enabling-private-services-access
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.
As regras de firewall bloqueiam os endereços IP da instância
Problemas de conectividade poderão surgir se você criar regras de firewall que bloqueiam endereços IP do intervalo de IP alocado associado à sua conexão de acesso a serviços privados.
Não crie regras de firewall de rede que bloqueiem o intervalo de IP das instâncias do Memcached.
Erros de conexão com a instância do Memcache de outros recursos do Google Cloud
Erros de conexão à instância por meio do ambiente padrão do App Engine ou das funções do Cloud Run
Se você não conseguir se conectar a uma instância do Memcache usando o ambiente padrão do App Engine ou funções do Cloud Run, é possível que você não tenha configurado uma Conector de acesso VPC sem servidor para seu ambiente.
Para instruções sobre como configurar o acesso VPC sem servidor para o ambiente padrão do App Engine, consulte Como se conectar a uma rede VPC.
Para instruções sobre como configurar o acesso VPC sem servidor para Para funções do Cloud Run, consulte Como se conectar a uma rede VPC.
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.
Erros de conexão com a instância usando o ambiente flexível do App Engine ou as VMs do Compute Engine
Se a instância tiver problemas de conectividade, siga estas etapas de solução de problemas:
Verifique se a instância do Memcached está provisionada na mesma região e rede do cliente que está tentando acessá-la.
Verifique se o projeto não tem regras de firewall de rede bloqueando os IPs de nó da instância do Memcached.
- Para conferir os endereços IP dos nós, acesse a guia de nós da instância do Memcached no console do Google Cloud.
Execute Telnet em um dos nós do Memcached e execute alguns comandos simples do Memcached
set
eget
para ver se a instância é responsiva ou não.- Se o nó não responder, veja se algum dos problemas descritos nos cenários de erros de rede está bloqueando a conexão de rede do nó. Caso contrário, entre em contato com o suporte do Google Cloud.
Cenários de erro de gerenciamento de identidade e acesso (IAM)
Como restaurar uma conta de serviço excluída
O Memorystore para Memcached usa as contas de serviço a seguir para gerenciar as instâncias do Memcached:
- service-project-number@service-networking.iam.gserviceaccount.com
- service-project-number@cloud-memcache-sa.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 Memcached usando o gcloud nesse cenário, poderá ser exibida a mensagem de erro a seguir:
ERROR: (gcloud.memcache.instances.create) {
"code": 13,
"message": "an internal error has occurred"
}
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-memcache-sa.iam.gserviceaccount.com' --role='roles/memcache.serviceAgent'
Erros de tempo limite da operação
Os cenários de erro a seguir resultam em uma instância de Memcached não responsiva e/ou em tempos limite 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.
Referência de aplicativo impróprio para IPs de nó
Se o cliente estiver atingindo o tempo limite ao tentar se conectar a um nó, talvez um aplicativo não esteja especificando o endereço IP adequado do nó ao qual você está tentando se conectar. Verifique se o aplicativo está apontando para os endereços IP dos nós no cluster.
Nesse cenário, é possível ver uma mensagem de erro de conectividade como esta:
telnet: Unable to connect to remote host: Connection timed out
Para resolver esse problema, procure os endereços IP dos nós e verifique se o aplicativo aponta com precisão para os endereços dos nós.
Outros cenários de erro
Intervalos de endereços IP do Compute Engine incompatíveis
Não é possível acessar o Memorystore para Memcached a partir de VMs do Compute Engine que
tenham um endereço IP dentro do intervalo 172.17.0.0/16
, porque esse
intervalo está reservado para um componente interno.
Distribuição de nó balanceada entre zonas em uma região
Se uma zona em uma região do Google Cloud não estiver disponível no momento em que você provisionar uma instância do Memcached, os nós serão criados nas zonas disponíveis. Isso pode levar a uma distribuição desequilibrada de nós do Memached entre zonas em uma região.
Não haverá um impacto perceptível no desempenho do aplicativo. No entanto, o ideal é que os nós sejam distribuídos em todas as zonas de uma região para proteger os dados contra interrupções zonais.
Se você não estiver satisfeito com a distribuição de nós entre as zonas ao criar uma instância, aguarde até que a zona volte a ficar on-line para criar a instância ou use a estratégia a seguir para tentar redistribuir os nós entre as zonas mais tarde:
Para redistribuir nós do Memcached entre os nós disponíveis em uma zona, amplie a instância e reduza novamente para o número pretendido de nós. Se as zonas pretendidas ficarem de volta on-line, o processo de escalonamento redistribuirá os nós uniformemente entre as zonas disponíveis. Além disso, o escalonamento causa um descarte de cache para os dados na instância do Memcached.