Perché sto riscontrando problemi di connettività intermittente con il mio cluster Amazon Redshift?

8 minuti di lettura
0

Sto riscontrando problemi di connettività intermittente quando provo a connettermi al mio cluster Amazon Redshift. Perché sta succedendo e come posso risolvere il problema?

Breve descrizione

I problemi di connettività intermittente nel tuo cluster Amazon Redshift sono causati da quanto segue:

  • Accesso limitato per un particolare indirizzo IP o blocco CIDR
  • Aggiornamenti della finestra di manutenzione
  • Errori dei nodi o attività di amministrazione pianificate
  • Rotazioni delle chiavi di crittografia
  • Troppe connessioni di rete attive
  • Elevato utilizzo della CPU del nodo leader
  • Problemi di connessione lato client

Soluzione

Accesso limitato per un particolare indirizzo IP o blocco CIDR

Verifica se esiste un accesso limitato per un particolare indirizzo IP o blocco CIDR nel tuo gruppo di sicurezza. A causa della configurazione DHCP, l'indirizzo IP del client può cambiare, il che può causare problemi di connettività. Inoltre, se non utilizzi indirizzi IP elastici per il tuo cluster Amazon Redshift, l’indirizzo IP gestito da AWS dei nodi del cluster potrebbe cambiare. Ad esempio, l'indirizzo IP può cambiare quando si elimina il cluster e lo si ricrea da uno snapshot o quando si riprende un cluster in pausa.

Nota: Gli indirizzi IP pubblici vengono ruotati quando il cluster Amazon Redshift viene eliminato e ricreato. Gli indirizzi IP privati cambiano ogni volta che i nodi vengono sostituiti.

Per risolvere eventuali restrizioni di rete, considera i seguenti approcci:

  • Se la tua applicazione memorizza nella cache l'indirizzo IP pubblico dietro un endpoint del cluster, assicurati di utilizzare questo endpoint per la tua connessione Amazon Redshift. Per essere sicuri della stabilità e della sicurezza della connessione di rete, evita di utilizzare una cache DNS per la connessione.
  • È consigliabile utilizzare un indirizzo IP elastico per il tuo cluster Amazon Redshift. Un indirizzo IP elastico consente di modificare la configurazione sottostante senza influire sull'indirizzo IP utilizzato dai client per connettersi al cluster. Questo approccio è utile se si sta ripristinando un cluster dopo un errore. Per ulteriori informazioni, consulta Gestione dei cluster in un VPC.
  • Se utilizzi un indirizzo IP privato per connetterti a un nodo leader o a un nodo di elaborazione, assicurati di utilizzare il nuovo indirizzo IP. Ad esempio, se hai eseguito l'ingestione SSH o hai una configurazione Amazon EMR che utilizza il nodo di elaborazione, aggiorna le impostazioni con il nuovo indirizzo IP. Un nuovo indirizzo IP privato viene concesso ai nuovi nodi dopo la sostituzione di un nodo.

Aggiornamenti della finestra di manutenzione

Controlla il periodo di manutenzione per il tuo cluster Amazon Redshift. Durante un periodo di manutenzione, il tuo cluster Amazon Redshift non è in grado di elaborare operazioni di lettura o scrittura. Se un evento di manutenzione è programmato per una determinata settimana, inizia durante il periodo di manutenzione assegnato di 30 minuti. Mentre Amazon Redshift esegue la manutenzione, qualsiasi query o altra operazione in corso viene interrotta. Puoi modificare la finestra di manutenzione programmato dalla console Amazon Redshift.

Errori dei nodi o attività di amministrazione pianificate

Dalla console Amazon Redshift, controlla la scheda Eventi per eventuali errori dei nodi o attività di amministrazione pianificate (come il ridimensionamento o il riavvio del cluster).

In caso di guasto hardware, Amazon Redshift potrebbe non essere disponibile per un breve periodo, con conseguenti query non riuscite. Quando una query fallisce, viene visualizzata una descrizione Eventi come la seguente:

"A hardware issue was detected on Amazon Redshift cluster [cluster name]. A replacement request was initiated at [time]."

Oppure, se un amministratore dell'account pianifica un'operazione di riavvio o ridimensionamento sul tuo cluster Amazon Redshift, possono verificarsi problemi di connettività intermittente. La descrizione Eventi indica quanto segue:

"Cluster [cluster name] began restart at [time]."
"Cluster [cluster name] completed restart at [time]."

Per ulteriori informazioni, consulta Categorie e messaggi di eventi di Amazon Redshift.

Rotazioni delle chiavi di crittografia

Controlla le impostazioni di gestione delle chiavi per il tuo cluster Amazon Redshift. Verifica se stai utilizzando la rotazione della crittografia delle chiavi e la crittografia delle chiavi del Servizio di gestione delle chiavi AWS (AWS KMS).

Se la chiave di crittografia è abilitata e viene ruotata, il cluster Amazon Redshift non è disponibile durante questo periodo. Di conseguenza, viene visualizzato il seguente messaggio di errore:

"pg_query(): Query failed: SSL SYSCALL error: EOF detected"

La frequenza della rotazione delle chiavi dipende dalle policy del tuo ambiente per gli standard e la sicurezza dei dati. Ruota le chiavi tutte le volte che è necessario o ogni volta che la chiave crittografata potrebbe essere compromessa. Inoltre, assicurati di disporre di un piano di gestione delle chiavi che supporti sia le tue esigenze di sicurezza che quelle di disponibilità del cluster.

Troppe connessioni attive

In Amazon Redshift, tutte le connessioni al cluster vengono inviate al nodo leader ed esiste un limite massimo per le connessioni attive. Il limite massimo che il tuo cluster Amazon Redshift può supportare è determinato dal tipo di nodo (anziché dal numero di nodi).

Quando ci sono troppe connessioni attive nel tuo cluster Amazon Redshift, ricevi il seguente errore:

"[Amazon](500310) Invalid operation: connection limit "500" exceeded for non-bootstrap users"

Se ricevi un errore di funzionamento non valido durante la connessione al tuo cluster Amazon Redshift, questo indica che hai raggiunto il limite delle connessioni. Puoi controllare il numero di connessioni attive per il tuo cluster esaminando la metrica DatabaseConnections in Amazon CloudWatch.

Se noti un picco nelle connessioni al database, potrebbero essere presenti diverse connessioni inattive nel tuo cluster Amazon Redshift. Per verificare il numero di connessioni inattive, esegui la seguente query SQL:

select trim(a.user_name) as user_name, a.usesysid, a.starttime,
 datediff(s,a.starttime,sysdate) as session_dur, b.last_end,
datediff(s,case when b.last_end is not null then b.last_end else
a.starttime end,sysdate) idle_dur
 	FROM
	(select starttime,process,u.usesysid,user_name
	from stv_sessions s, pg_user u
	where
	s.user_name = u.usename
 	and u.usesysid>1
and process NOT IN (select pid from stv_inflight where userid>1
union select pid from stv_recents where status != 'Done' and
 userid>1)
	) a
	LEFT OUTER JOIN (select
userid,pid,max(endtime) as last_end from svl_statementtext where
 userid>1 and sequence=0 group by 1,2) b ON a.usesysid = b.userid AND
a.process = b.pid
	WHERE (b.last_end > a.starttime OR b.last_end is null)
	ORDER BY idle_dur;

L'output è simile a questo esempio:

process | user_name  | usesysid |      starttime      | session_dur | last_end | idle_dur
---------+------------+----------+---------------------+-------------+----------+----------
   14684 | myuser     |      100 | 2020-06-04 07:02:36 |           6 |          |        6
(1 row)

Quando vengono identificate delle connessioni inattive, la connessione può essere interrotta utilizzando la seguente sintassi di comando:

select pg_terminate_backend(process);

L'output è simile a questo esempio:

pg_terminate_backend
----------------------
                    1
(1 row)

Elevato utilizzo della CPU del nodo leader

Tutti i client si connettono a un cluster Amazon Redshift utilizzando un nodo leader. L'elevato utilizzo di CPU del nodo leader può causare problemi di connessione intermittente.

Se provi a connetterti al tuo cluster Amazon Redshift e il nodo leader sta consumando una quantità elevata di CPU, ricevi il seguente messaggio di errore:

"Error setting/closing connection"

Per confermare se il tuo nodo leader ha raggiunto un elevato utilizzo di CPU, controlla la metrica CPUUtilization in Amazon CloudWatch. Per ulteriori informazioni, consulta le metriche di Amazon Redshift.

Problemi di connessione lato client

Verifica la presenza di un problema di connessione tra il client (come Workbench/J o PostgreSQL) e il server (il tuo cluster Amazon Redshift). Potrebbe verificarsi una reimpostazione della connessione lato client, se il client sta tentando di inviare una richiesta da una porta che è stata rilasciata. Di conseguenza, il ripristino della connessione può causare problemi di connessione intermittente.

Per evitare questi problemi di connessione lato client, prendi in considerazione i seguenti approcci:

  • Usa la funzionalità keepalive in Amazon Redshift per verificare che la connessione tra client e server funzioni correttamente. La funzionalità keepalive aiuta anche a prevenire l'interruzione di qualsiasi collegamento di connessione. Per controllare o configurare i valori per keepalive, consulta Modifica le impostazioni di timeout TCP/IP e Modifica le impostazioni di timeout DSN.
  • Controlla l'unità di transizione massima (MTU) se le tue query sembrano essere in esecuzione ma si bloccano nello strumento client SQL. A volte, le query non vengono visualizzate in Amazon Redshift a causa di una perdita di pacchetti. Una perdita di pacchetti si verifica quando ci sono diverse dimensioni MTU nei percorsi di rete tra due host IP. Per ulteriori informazioni su come gestire i problemi di rilascio dei pacchetti, consulta Le query sembrano bloccarsi e talvolta non riescono a raggiungere il cluster.

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa