Perché non riesco a connettermi al cluster ElastiCache per Redis?

Ultimo aggiornamento: 24/06/2022

Non riesco a connettermi al cluster Amazon ElastiCache per Redis. Come posso risolvere il problema?

Breve descrizione

I problemi di connettività possono avere più cause alla radice. I problemi più frequenti sono:

  • Il cluster non è pronto.
  • Il cluster non è integro.
  • La configurazione di rete non è corretta.
  • La configurazione del client non è corretta.

Risoluzione

Verifica che il cluster sia pronto

Se hai creato il cluster di recente, verifica che la creazione sia stata completata e che sia pronto ad accettare connessioni.

Controlla lo stato del cluster utilizzando la console ElastiCache, l'interfaccia della linea di comando AWS (AWS CLI) o l'API ElastiCache. Esamina la colonna dello Status (Stato) per le seguenti informazioni:

  • Se la colonna dello Status (Stato) mostra Available (Disponibile), il cluster è pronto.
  • Se la colonna dello Status (Stato) mostra Creating (Creazione in corso) la creazione del cluster è ancora in corso. Attendi qualche minuto finché non viene aggiornato a Available (Disponibile).
  • Se la colonna dello Status (Stato) mostra Modifying (Modifica in corso), la configurazione del cluster si sta aggiornando. Attendi qualche minuto fino al termine delle modifiche e finché lo stato non diventa Available (Disponibile).

Verifica che il cluster sia integro

In un cluster integro, ogni singolo nodo dovrebbe essere nello stato Available (Disponibile). Per verificare lo stato del cluster, esegui le seguenti operazioni:

Verifica della connettività a livello di rete tra il cluster e la risorsa client

Per ridurre al minimo la latenza, accedi a ElastiCache dalle istanze Amazon Elastic Compute Cloud (Amazon EC2). L'accesso ad Amazon ElastiCache da altre risorse all'interno dello stesso cloud privato virtuale Amazon (Amazon VPC) aiuta anche a ridurre al minimo la latenza. Tuttavia, è possibile connettersi dall'esterno sia del VPC che di AWS.

Per ulteriori informazioni sulla connessione a ElastiCache, consulta le seguenti informazioni:

Per automatizzare il processo di connessione, utilizza il servizio VPC Network Access Analyzer per risolvere i problemi di connettività tra le risorse AWS.

Verifica che i gruppi di sicurezza e le liste di controllo degli accessi (ACL) di rete consentano le connessioni

Esegui questa fase nel cluster ElastiCache e nella risorsa che sta avviando la connessione. Ecco alcuni esempi di risorse per i client:

  • Un'istanza Amazon EC2.
  • Una funzione AWS Lambda.
  • Un Amazon Elastic Container Service (Amazon ECS) o Amazon Elastic Kubernetes Service (Amazon EKS) e così via.

In ElastiCache, assicurati che i gruppi di sicurezza siano configurati correttamente. Per altre risorse, verifica i gruppi di sicurezza e le ACL di rete.

Conferma il gruppo di sicurezza nel cluster ElastiCache

1.    Seleziona il nome del cluster dal menu Redis clusters (Cluster Redis), quindi seleziona la scheda Network and security (Rete e sicurezza).

2.    Verifica che almeno uno dei gruppi di sicurezza associati consenta connessioni in ingresso dalla risorsa client al cluster sulla porta del cluster.

3.    Per confermare il numero della porta, controlla un endpoint qualsiasi del cluster. Gli endpoint sono nel formato domain_name:port.

Nota: la porta del cluster è 6379/TCP per impostazione predefinita. Puoi sostituire il numero della porta durante la creazione del cluster.

4.    Nella risorsa client, verifica che i gruppi di sicurezza consentano connessioni in uscita alla porta del cluster e ai blocchi CIDR delle sottoreti del cluster.

5.    Verifica che le ACL di rete consentano connessioni in uscita e in entrata tra il client e il cluster. Le ACL di rete predefinite consentono solitamente tutte le connessioni.

Nota: puoi utilizzare il servizio VPC Network Access Analyzer per risolvere i problemi relativi alle configurazioni dei gruppi di sicurezza e delle ACL di rete.

Identificazione dell'endpoint corretto per le connessioni

Gli endpoint di connessione consigliati variano a seconda delle configurazioni del cluster. Per ulteriori informazioni su come trovare gli endpoint corretti e le possibili configurazioni, consulta Individuazione degli endpoint di connessione.

Verifica del funzionamento della risoluzione DNS lato client

I problemi relativi al DNS sono comunemente identificati dal nome o dal servizio non noti e dai messaggi di errore 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 visualizzi gli errori precedenti, controlla gli attributi DNS della risorsa client VPC.

Una best practice consiste nell'utilizzare il server DNS di Amazon, se possibile. Per ulteriori informazioni, consulta Amazon DNS server (Server DNS Amazon).

Verifica della connettività TCP tra il client e Redis

Utilizza il comando curl o telnet per stabilire una connessione TCP e verificare la connettività:

$ 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)

Nell'esempio precedente, la parola chiave Connected (Connesso) mostra che la connessione TCP funziona.

Se la parola Connected (Connesso) non viene visualizzata nei risultati del comando, controlla quanto segue:

Nel cluster ElastiCache

  • I gruppi di sicurezza devono consentire le connessioni sulla porta del cluster. Verifica il valore della porta nella pagina di configurazione del cluster (il valore predefinito è TCP/6379). Per ulteriori informazioni, consulta Modifica di un cluster ElastiCache.
  • Il cluster, tutti i suoi nodi e le sue partizioni devono trovarsi nello stato available (disponibile). Per ulteriori informazioni, consulta Visualizzazione dei dettagli di un cluster.

Nella risorsa client

  • I gruppi di sicurezza devono consentire le connessioni in uscita all'IP e alla porta del cluster.
  • Le tabelle di routing devono avere i percorsi adatti in modo che il cluster sia raggiungibile.
  • La risorsa può trovarsi nello stesso VPC. Oppure, se la risorsa si trova in un altro VPC o al di fuori di AWS, assicurati che sia configurata la connessione adatta. Potrebbe trattarsi di peering VPN o VPC, DirectLink e così via. Per ulteriori informazioni, consulta Accesso al cluster o gruppo di replica.
    Nota: Amazon ElastiCache è progettato per essere accessibile dallo stesso VPC per garantire una bassa latenza. Le connessioni esterne al VPC apportano una latenza aggiuntiva. Questa latenza aggiuntiva è particolarmente frequente con le connessioni che utilizzano Internet pubblico direttamente o tramite tunneling. Poiché Redis è molto sensibile alla latenza, quella aggiuntiva potrebbe causare problemi di connettività e timeout.

Il VPC Reachability Analyzer è uno strumento che aiuta a determinare cosa sta bloccando l'accesso.

Risoluzione dei problemi di connessione ai cluster con crittografia in transito

La crittografia in transito funziona con l'invio del traffico Redis tramite TLS. Il client deve disporre del supporto TLS affinché la connessione funzioni.

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

Se hai installato redis-cli e dispone del supporto TLS, aggiungi l'argomento --tls al comando:

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

Se redis-cli è stato compilato senza il supporto TLS, viene visualizzato il seguente errore:

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

Per risolvere l'errore precedente, esegui una delle seguenti operazioni:

Una best practice consiste nel compilare redis-cli con il supporto TLS se utilizzerai redis-cli in seguito. Per le fasi per Amazon Linux 2 e Amazon Linux, consulta Scaricare e installare redis-cli in Fase 4: connessione a un nodo del cluster.

-oppure-

Utilizza un comando alternativo, ad esempio openssl. Il comando openssl è disponibile sulla maggior parte dei sistemi ed è utile se non è disponibile un redis-cli con supporto TLS. Di seguito è riportato un esempio del 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 -----

Per ulteriori informazioni, consulta la sezione Connessione a un cluster abilitato per crittografia/autenticazione in Fase 4: connessione a un nodo del cluster.

Risoluzione dei problemi di connessione ai cluster con autenticazione

redis-cli

Tutti i cluster con autenticazione richiedono TLS. Il comando redis-cli richiede sia l'argomento --tls che --askpass (o -a).

Se l'argomento --askpass non viene fornito, riceverai il seguente output:

$ 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 il comando contiene una password errata, riceverai il seguente output:

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

Di seguito è riportato un esempio di un comando Redis con la password corretta che ha funzionato come previsto:

$ 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

Puoi testare la connettività utilizzando il comando openssl. Utilizza questo comando solo a scopo di debug:

$ 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 -----

Per ulteriori informazioni, consulta la sezione Connessione a un cluster abilitato per crittografia/autenticazione in Fase 4: Connessione a un nodo del cluster.

Per ulteriori informazioni sulla risoluzione dei problemi di connettività ElastiCache, consulta Troubleshooting.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?