Por que não consigo me conectar ao cluster do ElastiCache para Redis?
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:
- Verifique o status de cada nó do cluster usando o console do ElastiCache, a AWS CLI ou a API do ElastiCache.
- O Amazon ElastiCache também fornece um log de eventos que você pode verificar para ver os eventos recentes no cluster.
- Verifique as métricas do CloudWatch para obter uma visão geral da integridade do cluster. Para obter mais informações, consulte Práticas recomendadas de monitoramento com o Amazon ElastiCache para Redis usando o Amazon CloudWatch.
- Em casos de falhas de hardware, instância ou software, o Amazon ElastiCache tenta recuperar e restaurar o serviço sem intervenção do usuário. Para garantir que o serviço possa realizar a recuperação com o mínimo de transtorno, configure corretamente o cluster e o cliente Redis. Para obter mais informações, consulte Minimização do tempo de inatividade no ElastiCache para Redis com o multi-AZ.
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:
- Padrões de acesso para acessar um cluster do ElastiCache em uma Amazon VPC
- Acessar o cluster ou grupo de replicação
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.
Conteúdo relevante
- AWS OFICIALAtualizada há 8 meses
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 9 meses
- AWS OFICIALAtualizada há um ano