Por que não consigo me conectar ao cluster do ElastiCache para Redis?

Data da última atualização: 24/06/2022

Não consigo me conectar ao cluster do Amazon ElastiCache para Redis. Como posso solucionar esse problema?

Breve descrição

Os problemas de conectividade podem ter várias causas-raízes. Os problemas mais comuns são:

  • O cluster não está pronto.
  • O cluster não está íntegro.
  • A configuração da rede está incorreta.
  • A configuração do cliente está incorreta.

Resolução

Verifique se o cluster está pronto

Se você criou o cluster recentemente, verifique se a criação do cluster foi concluída e se o cluster está pronto para aceitar conexões.

Verifique o status do cluster usando o console do ElastiCache, a AWS Command Line Interface (AWS CLI) ou a API do ElastiCache. Revise na a coluna Status o seguinte:

  • Se a coluna Status mostrar Available (Disponível), o cluster estará pronto.
  • Se a coluna Status mostrar Creating (Criando), a criação do cluster ainda estará em andamento. Aguarde alguns minutos até que seja atualizada para Available (Disponível).
  • Se a coluna Status mostrar Modifying ( Modificando), a configuração do cluster está sendo atualizada. Aguarde alguns minutos até que as modificações terminem e o status passe para Available (Disponível).

Verifique se o cluster está íntegro

Em um cluster íntegro, cada nó individual deve estar no estado Available (Disponível). Para verificar a integridade do cluster, faça o seguinte:

Verificar a conectividade entre o cluster e o recurso cliente no nível da rede

Para minimizar a latência, acesse o ElastiCache a partir das instâncias do Amazon Elastic Compute Cloud (Amazon EC2). Acessar o Amazon ElastiCache a partir de outros recursos dentro da mesma Amazon Virtual Private Cloud (Amazon VPC) também ajuda a minimizar a latência. Porém, é possível se conectar de fora da VPC ou até mesmo de fora da AWS.

Para obter mais informações sobre como se conectar ao ElastiCache, consulte o seguinte:

Para automatizar o processo de conexão, use o serviço VPC Network Access Analyzer para solucionar problemas de conectividade entre recursos da AWS.

Verificar se grupos de segurança e ACLs da rede permitem conexões

Realize essa etapa no cluster do ElastiCache e no recurso que está iniciando a conexão. Exemplos de recursos clientes:

  • Uma instância do Amazon EC2.
  • Uma função do AWS Lambda.
  • Um contêiner do Amazon Elastic Container Service (Amazon ECS) ou do Amazon Elastic Kubernetes Service (Amazon EKS) etc.

No ElastiCache, verifique se os grupos de segurança estão configurados corretamente. Para outros recursos, verifique os grupos de segurança e ACLs da rede.

Confirme o grupo de segurança no cluster do ElastiCache

1.    Selecione o nome do cluster no menu Redis clusters (Clusters do Redis) e, depois, selecione a guia Network and security (Rede e segurança).

2.    Verifique se, pelo menos, um dos grupos de segurança associados permite conexões de entrada do recurso cliente com o cluster na porta do cluster.

3.    Para confirmar o número da porta, verifique qualquer um dos endpoints do cluster. Os endpoints estão no formato nome_domínio:porta.

Observação: a porta do cluster é 6379/TCP por padrão. Você pode substituir o número da porta durante a criação do cluster.

4.    No recurso cliente, verifique se os grupos de segurança permitem conexões de saída com a porta do cluster e com os blocos CIDR das sub-redes do cluster.

5.    Verifique se as ACLs da rede permitem conexões de saída e entrada entre o cliente e o cluster. As ACLs da rede padrão geralmente permitem todas as conexões.

Observação: você pode usar o serviço VPC Network Access Analyzer para solucionar problemas de configurações de grupo de segurança e ACL da rede.

Identificar o endpoint correto para conexões

Os endpoints de conexão recomendados diferem entre as configurações de cluster. Para obter mais informações sobre como encontrar os endpoints corretos e as configurações possíveis, consulte Localizar endpoints de conexão.

Verifique se a resolução de DNS funciona no lado do cliente

Os problemas de DNS são comumente identificados pelas mensagens de erro Name or service not known (Nome ou serviço desconhecido) e NXDOMAIN.

$ nslookup nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com
Server:         172.31.0.2
Address:        172.31.0.2#53

** server can't find nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com: NXDOMAIN
$ redis-cli -h nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com
Could not connect to Redis at nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com:6379: Name or service not known

Se você vir os erros anteriores, verifique os atributos de DNS do recurso cliente da VPC.

É prática recomendada usar o servidor DNS da Amazon, se possível. Para obter mais informações, consulte Servidor DNS da Amazon.

Verifique a conectividade TCP entre o cliente e o Redis

Use o comando curl ou telnet para estabelecer uma conexão TCP e verificar a conectividade:

$ curl -v telnet://test.1234id.clustercfg.euw1.cache.amazonaws.com:6379
*  Trying 172.31.1.242:6379...
* Connected to test.1234id.clustercfg.euw1.cache.amazonaws.com (172.31.1.242) port 6379 (#0)

No exemplo anterior, a palavra-chave Connected (Conectado) mostra que a conexão TCP funciona.

Se Connected (Conectado) não aparecer nos resultados do comando, verifique o seguinte:

No cluster do ElastiCache

  • Os grupos de segurança devem permitir conexões na porta do cluster. Verifique o valor da porta na página de configuração do cluster (o padrão é TCP/6379). Para obter mais informações, consulte Modificar um cluster do ElastiCache.
  • O cluster e todos os seus fragmentos e nós devem estar no estado available (disponível). Para obter mais informações, consulte Visualizar os detalhes de um cluster.

No recurso cliente

  • Os grupos de segurança devem permitir conexões de saída com o IP e a porta do cluster.
  • As tabelas de roteamento devem ter as rotas apropriadas para que o cluster seja acessível.
  • O recurso pode estar na mesma VPC. Ou, se o recurso estiver em outra VPC ou fora da AWS, verifique se ele tem a conexão apropriada configurada. Isso pode ser VPN ou peering de VPC, DirectLink e assim por diante. Para obter mais informações, consulte Acessar o cluster ou grupo de replicação.
    Observação: o Amazon ElastiCache foi projetado para ser acessado na mesma VPC para garantir baixa latência. Conexões fora da VPC introduzem latência extra. Essa latência extra é especialmente comum em conexões que usam a Internet pública, seja diretamente ou por túnel. Como o Redis é muito sensível a latência, a latência extra pode causar problemas de conectividade e tempo limite.

O VPC Reachability Analyzer é uma ferramenta para ajudar a determinar o que está bloqueando o acesso.

Solucionar problemas de conexão com clusters usando criptografia em trânsito

A criptografia em trânsito funciona enviando o tráfego do Redis por TLS. O cliente deve ser compatível com TLS para que a conexão funcione.

$ redis-cli -h encrypted.1234id.clustercfg.euw1.cache.amazonaws.com

Se você tiver redis-cli instalada e ela for compatível com TLS, adicione o argumento --tls ao comando:

$ redis-cli -h encrypted.1234id.clustercfg.euw1.cache.amazonaws.com --tls
encrypted.1234id.clustercfg.euw1.cache.amazonaws.com:6379>

Se a redis-cli tiver sido compilada sem compatibilidade com TLS, o seguinte erro será exibido:

$ redis-cli -h encrypted.1234id.clustercfg.euw1.cache.amazonaws.com --tls
Unrecognized option or bad number of args for: '--tls'

Para solucionar o erro anterior, siga um destes procedimentos:

É prática recomendada compilar a redis-cli com compatibilidade com TLS se você for usar a redis-cli mais tarde. Para obter as etapas para o Amazon Linux 2 e o Amazon Linux, consulte Baixar e instalar a redis-cli na Etapa 4: conectar-se ao nó do cluster.

-ou-

Use um comando alternativo, como openssl. O comando openssl está disponível na maioria dos sistemas e é útil se uma redis-cli compatível com TLS não estiver disponível. Veja a seguir um exemplo do comando openssl:

$ openssl s_client -connect encrypted.1234id.clustercfg.euw1.cache.amazonaws.com:6379
CONNECTED(00000003)
----- omitted --------
INFO
# Server
redis_version:6.2.6
----- omitted -----

Para obter mais informações, consulte a seção Conectar-se a um cluster habilitado para criptografia/autenticação na Etapa 4: Conectar-se ao nó do cluster.

Solucionar problemas de conexão com clusters com autenticação

redis-cli

Todos os clusters com autenticação exigem TLS. O comando redis-cli requer ambos os argumentos --tls e --askpass (ou -a).

Se o argumento --askpass não for fornecido, você receberá a seguinte saída:

$ redis-cli -h auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com --tls
auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com:6379> INFO # or any other Redis command
NOAUTH Authentication required.

Se o comando contiver uma senha incorreta, você receberá a seguinte saída:

$ redis-cli -h auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com --tls --askpass
Please input password: *************
Warning: AUTH failed

Veja a seguir um exemplo de um comando do Redis com a senha correta que funcionou conforme esperado:

$ redis-cli -h auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com --tls --askpass
Please input password: ******************
auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com:6379> INFO
# Server
redis_version:6.2.6
----- omitted -----

openssl

Você pode testar a conectividade usando o comando openssl. Use este comando somente para fins de depuração:

$ openssl s_client -connect master.auth-cluster.3i1yig.euw1.cache.amazonaws.com:6379
CONNECTED(00000003)
----- omitted -----
---
AUTH topsecretpassword
+OK
INFO
# Server
redis_version:6.2.6
----- omitted -----

Para obter mais informações, consulte a seção Conectar-se a um cluster habilitado para criptografia/autenticação na Etapa 4: Conectar-se ao nó do cluster.

Para obter detalhes adicionais sobre solução de problemas de conectividade do ElastiCache, consulte Solução de problemas.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?