Perché non riesco a connettermi al cluster ElastiCache per Redis?
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:
- Controlla lo stato di ogni nodo del cluster utilizzando la console ElastiCache, l'AWS CLI o l'API ElastiCache.
- Amazon ElastiCache fornisce anche un registro eventi che puoi controllare per visualizzare gli eventi recenti nel cluster.
- Controlla i parametri CloudWatch per una panoramica dello stato del cluster. Per ulteriori informazioni, consulta Monitoring best practice with Amazon ElastiCache for Redis using Amazon CloudWatch (Monitorare le best practice con Amazon ElastiCache per Redis utilizzando Amazon CloudWatch).
- In caso di errori a livello di hardware, istanze o software, Amazon ElastiCache tenta di recuperare e ripristinare il servizio senza l'intervento dell'utente. Per far sì che il servizio esegua il ripristino con interruzioni minime, assicurati di configurare correttamente il cluster e il client Redis. Per ulteriori informazioni sugli scenari di errore, consulta Riduzione dei tempi di inattività in ElastiCache per Redis con Multi-AZ.
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:
- Modelli di accesso a un cluster di ElastiCache in un Amazon VPC
- Accesso al cluster o gruppo di replica
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.
Contenuto pertinente
- AWS UFFICIALEAggiornata 7 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 8 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa