Utilizzo degli endpoint Amazon RDS Proxy - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo degli endpoint Amazon RDS Proxy

Gli endpoint proxy RDS offrono modi flessibili ed efficienti per gestire le connessioni al database, migliorando la scalabilità, la disponibilità e la sicurezza. Con gli endpoint proxy, puoi:

  • Semplifica il monitoraggio e la risoluzione dei problemi: utilizza più endpoint per tracciare e gestire le connessioni da diverse applicazioni in modo indipendente.

  • Migliora la scalabilità di lettura: sfrutta gli endpoint dei lettori con i cluster Aurora DB per distribuire il traffico di lettura in modo efficiente, ottimizzando le prestazioni per carichi di lavoro con un elevato numero di query.

  • Abilita l'accesso tra VPC: collega i database VPCs utilizzando endpoint cross-VPC, che consentono a risorse come le istanze Amazon in un VPC di accedere ai database EC2 in un altro VPC.

Panoramica degli endpoint proxy

L'uso degli endpoint Server proxy per RDS include gli stessi tipi di procedure degli endpoint di cluster di database Aurora e di lettura. Se non hai familiarità con gli endpoint Aurora, puoi consultare Connessioni endpoint Amazon Aurora.

Quando si utilizza RDS Proxy con un cluster Aurora, l'endpoint predefinito supporta operazioni di lettura e scrittura. Ciò significa che indirizza tutte le richieste all'istanza writer del cluster, contribuendo al suo limite. max_connections Per distribuire meglio il traffico, puoi creare endpoint di lettura/scrittura o di sola lettura aggiuntivi per il tuo proxy, il che consente una gestione più efficiente del carico di lavoro e una maggiore scalabilità.

Usa un endpoint di sola lettura con il tuo proxy per gestire le query di lettura, proprio come faresti con un endpoint reader per un cluster con provisioning Aurora. Questo approccio massimizza la scalabilità di lettura di Aurora distribuendo le query su una o più istanze DB di Reader. Utilizzando un endpoint di sola lettura e aggiungendo altre istanze di lettura in base alle esigenze, è possibile aumentare il numero di query e connessioni simultanee che il cluster è in grado di gestire.

Suggerimento

Quando si crea un proxy per un cluster Aurora utilizzando AWS Management Console, è possibile fare in modo che RDS Proxy crei automaticamente un endpoint di lettura. Per informazioni sui vantaggi di un endpoint di lettura, consulta Utilizzo degli endpoint di lettura con cluster Aurora.

Quando crei un endpoint proxy, puoi associarlo a un cloud privato virtuale (VPC) diverso dal VPC del proxy. Ciò consente di connettersi al proxy da un altro VPC, ad esempio uno utilizzato da un'applicazione diversa all'interno dell'organizzazione.

Per informazioni sui limiti associati agli endpoint proxy, consulta Limitazioni per gli endpoint proxy.

I log del proxy RDS fanno precedere a ogni voce il nome dell'endpoint proxy associato. Può essere il nome specificato per un endpoint definito dall'utente o il nome speciale per l'endpoint di lettura/scrittura predefinito del default proxy.

Ogni endpoint proxy ha il proprio set di metriche. CloudWatch Monitora le metriche per tutti gli endpoint proxy, un endpoint specifico o tutti gli endpoint di lettura/scrittura o di sola lettura di un proxy. Per ulteriori informazioni, consulta Monitoraggio dei parametri del proxy RDS con Amazon CloudWatch.

Un endpoint proxy utilizza lo stesso meccanismo di autenticazione del proxy associato. RDS Proxy imposta automaticamente i permessi e le autorizzazioni per l'endpoint definito dall'utente, coerenti con le proprietà del proxy associato.

Per informazioni su come funzionano gli endpoint proxy per i cluster database di un database globale Aurora, consulta Come funzionano gli endpoint Server proxy per RDS con i database globali.

Limitazioni per gli endpoint proxy

Gli endpoint proxy RDS presentano le seguenti limitazioni:

  • L'endpoint predefinito del proxy RDS non può essere modificato.

  • Il numero massimo di endpoint definiti dall'utente per un proxy è 20. Pertanto, un proxy può avere fino a 21 endpoint: l'endpoint predefinito più 20 creati.

  • Quando associ degli endpoint aggiuntivi a un proxy, RDS Proxy determina automaticamente quali istanze database nel cluster utilizzare per ciascun endpoint. Non è possibile scegliere istanze specifiche come invece è possibile con gli endpoint personalizzati Aurora.

Quando si crea un proxy, RDS crea automaticamente un endpoint VPC per comunicazioni sicure tra le applicazioni e il database. L'endpoint VPC è visibile ed è possibile accedervi dalla console Amazon VPC.

L'aggiunta di un nuovo endpoint proxy fornisce un endpoint di interfaccia. AWS PrivateLink Se aggiungi uno o più endpoint al tuo proxy, dovrai sostenere costi aggiuntivi. Per ulteriori informazioni, consulta RDS Proxy Pricing.

Utilizzo degli endpoint di lettura con cluster Aurora

Puoi creare e connetterti a endpoint di sola lettura denominati endpoint di lettura quando utilizzi RDS Proxy con cluster Aurora. Questi endpoint di lettura consentono di migliorare la scalabilità di lettura delle applicazioni che richiedono un uso intensivo di query. Gli endpoint di lettura consentono inoltre di migliorare la disponibilità delle connessioni se un'istanza database di lettura nel cluster non è disponibile.

Nota

Quando si specifica che un nuovo endpoint è di sola lettura, RDS Proxy richiede che il cluster Aurora abbia una o più istanze database di lettura. In alcuni casi, è possibile modificare la destinazione del proxy in un cluster Aurora contenente un solo writer. In questo caso, qualsiasi richiesta all'endpoint di lettura ha esito negativo e restituisce un errore. Anche le richieste avranno esito negativo se la destinazione del proxy è un'istanza RDS invece di un cluster Aurora.

Se un cluster Aurora ha istanze di lettura ma tali istanze non sono disponibili, RDS Proxy attende per inviare la richiesta invece di restituire immediatamente un errore. Se nessuna istanza di lettura diventa disponibile entro il periodo di timeout di prestito della connessione, la richiesta ha esito negativo con un errore.

In che modo gli endpoint di lettura aiutano la disponibilità delle applicazioni

In alcuni casi, una o più istanze di lettura nel cluster potrebbero non essere disponibili. In questo caso, le connessioni che utilizzano un endpoint di lettura di un proxy DB possono essere ripristinate più rapidamente di quelle che utilizzano l'endpoint di lettura Aurora. RDS Proxy instrada le connessioni solo alle istanze del lettore disponibili nel cluster. Non vi è alcun ritardo dovuto alla memorizzazione nella cache DNS quando un'istanza diventa non disponibile.

Se la connessione è multiplexing, RDS Proxy indirizza le query successive a un'istanza database di lettura diversa senza alcuna interruzione dell'applicazione. Durante il passaggio automatico a una nuova istanza di lettura, RDS Proxy controlla il ritardo della replica delle istanze di lettura vecchie e nuove. RDS Proxy assicura che la nuova istanza di lettura sia aggiornata con le stesse modifiche dell'istanza di lettura precedente. In questo modo, la tua applicazione non vedrà mai dati obsoleti quando RDS Proxy passa da un'istanza database di lettura a un'altra.

Se la connessione è bloccata, la successiva query sulla connessione restituisce un errore. Tuttavia, l'applicazione può riconnettersi immediatamente allo stesso endpoint. RDS Proxy indirizza la connessione a un'istanza database del lettore diversa che si trova nello stato available. Se ti riconnetti manualmente, RDS Proxy non controlla il ritardo di replica tra le vecchie e le nuove istanze di lettura.

Se il tuo cluster Aurora non dispone di istanze di lettura disponibili, RDS Proxy verifica se questa condizione è temporanea o permanente. Il comportamento in ogni caso è il seguente:

  • Si assuma che il cluster abbia una o più istanze database di lettura, ma nessuna di esse si trova nello stato Available. Ad esempio, tutte le istanze di lettura potrebbero essere riavviate o potrebbero riscontrare dei problemi. In tal caso, i tentativi di connessione a un endpoint di lettura attendono la disponibilità di un'istanza di lettura. Se nessuna istanza di lettura diventa disponibile entro il periodo di timeout di prestito della connessione, il tentativo di connessione ha esito negativo. Se invece un'istanza di lettura diventa disponibile, il tentativo di connessione ha esito positivo.

  • Si assuma che il cluster non abbia istanze database di lettura. In tal caso, RDS Proxy restituisce immediatamente un errore se si prova a connettersi a un endpoint di lettura. Per risolvere il problema, aggiungi una o più istanze di lettura al cluster prima di connetterti all'endpoint di lettura.

In che modo gli endpoint di lettura aiutano la scalabilità delle query

Gli endpoint di lettura per un proxy aiutano con la scalabilità delle query di Aurora nei seguenti modi:

  • Quando aggiungi istanze di lettura al cluster Aurora, RDS Proxy può instradare nuove connessioni a qualsiasi endpoint di lettura a istanze di lettura differenti. In questo modo, le query eseguite utilizzando una connessione all'endpoint di lettura non rallentano le query eseguite utilizzando un'altra connessione all'endpoint di lettura. Le query vengono eseguite su istanze database separate. Ogni istanza database ha le proprie risorse di calcolo, cache di buffer e così via.

  • Laddove possibile, RDS Proxy utilizza la stessa istanza database di lettura per tutti i problemi di query utilizzando una particolare connessione all'endpoint di lettura. In questo modo, un insieme di query correlate sulle stesse tabelle può sfruttare la memorizzazione nella cache, l'ottimizzazione del piano e così via, su una particolare istanza database.

  • Se un'istanza database di lettura non è disponibile, l'effetto sull'applicazione dipende dal fatto che la sessione sia multiplexing o bloccata. Se la sessione è multiplexing, RDS Proxy indirizza tutte le query successive a un'istanza database di lettura diversa senza richiedere alcuna azione da parte tua. Se invece la sessione è bloccata, l'applicazione riceve un errore e deve riconnettersi. Puoi riconnetterti immediatamente all'endpoint di lettura e RDS Proxy indirizza la connessione a un'istanza database di lettura disponibile. Per ulteriori informazioni sul multiplexing e sul blocco per le sessioni proxy, consulta Panoramica dei concetti relativi al proxy RDS.

  • Maggiore è il numero di istanze database di lettura presenti nel cluster, maggiore sarà il numero di connessioni simultanee che è possibile effettuare utilizzando gli endpoint di lettura. Supponi, ad esempio, che il cluster disponga di quattro istanze database di lettura, ciascuna configurata per supportare 200 connessioni simultanee. Supponi anche che il proxy sia configurato per utilizzare il 50% del numero massimo di connessioni. Qui, il numero massimo di connessioni che è possibile effettuare attraverso gli endpoint di lettura nel proxy è 100 (50% di 200) per la lettura 1. È 100 anche per la lettura 2, e così via, per un totale di 400. Se raddoppi il numero di istanze database di lettura del cluster a otto, anche il numero massimo di connessioni attraverso gli endpoint di lettura raddoppia a 800.

Esempi di utilizzo degli endpoint di lettura

L'esempio seguente di Linux mostra come è possibile confermare di essere connessi a un cluster Aurora MySQL tramite un endpoint di lettura. L'impostazione di configurazione di innodb_read_only è abilitata. I tentativi di esecuzione di operazioni di scrittura come le istruzioni CREATE DATABASE non riescono e restituiscono un errore. Inoltre, puoi confermare di essere connesso a un'istanza database di lettura controllando il nome dell'istanza database utilizzando la variabile aurora_server_id.

Suggerimento

Non fare affidamento solo sul controllo del nome dell'istanza database per determinare se la connessione è di lettura/scrittura o di sola lettura. Ricorda che le istanze database in un cluster Aurora possono cambiare ruolo tra scrittura e lettura quando si verificano i failover.

$ mysql -h endpoint-demo-reader.endpoint.proxy-demo.us-east-1.rds.amazonaws.com -u admin -p ... mysql> select @@innodb_read_only; +--------------------+ | @@innodb_read_only | +--------------------+ | 1 | +--------------------+ mysql> create database shouldnt_work; ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement mysql> select @@aurora_server_id; +---------------------------------------+ | @@aurora_server_id | +---------------------------------------+ | proxy-reader-endpoint-demo-instance-3 | +---------------------------------------+

L'esempio seguente mostra come la connessione a un endpoint di lettura proxy può continuare a funzionare anche quando l'istanza database di lettura viene eliminata. In questo esempio, il cluster Aurora dispone di due istanze di lettura, instance-5507 e instance-7448 . La connessione all'endpoint di lettura inizia utilizzando una delle istanze di lettura. Durante l'esempio, questa istanza di lettura viene eliminata da un comando delete-db-instance. RDS Proxy passa a un'istanza di lettura diversa per le query successive.

$ mysql -h reader-demo.endpoint.proxy-demo.us-east-1.rds.amazonaws.com -u my_user -p ... mysql> select @@aurora_server_id; +--------------------+ | @@aurora_server_id | +--------------------+ | instance-5507 | +--------------------+ mysql> select @@innodb_read_only; +--------------------+ | @@innodb_read_only | +--------------------+ | 1 | +--------------------+ mysql> select count(*) from information_schema.tables; +----------+ | count(*) | +----------+ | 328 | +----------+

Mentre la sessione mysql è ancora in esecuzione, il comando seguente elimina l'istanza di lettura a cui è connesso l'endpoint di lettura.

aws rds delete-db-instance --db-instance-identifier instance-5507 --skip-final-snapshot

Le query nella sessione mysql continuano a funzionare senza la necessità di riconnettersi. RDS Proxy passa quindi automaticamente a un'istanza database di lettura diversa.

mysql> select @@aurora_server_id; +--------------------+ | @@aurora_server_id | +--------------------+ | instance-7448 | +--------------------+ mysql> select count(*) from information_schema.TABLES; +----------+ | count(*) | +----------+ | 328 | +----------+

Accesso ai database Aurora RDS VPCs

Per impostazione predefinita, i componenti dello stack di tecnologia di Aurora si trovano tutti nello stesso Amazon VPC. Ad esempio, supponiamo che un'applicazione in esecuzione su un' EC2 istanza Amazon si connetta a un'istanza database del cluster Aurora DB. In questo caso, il server delle applicazioni e il database devono trovarsi entrambi all'interno dello stesso VPC.

Con RDS Proxy, puoi configurare l'accesso a un'istanza in un VPC dalle risorse di un altro VPC, come le istanze. EC2 Ad esempio, l'organizzazione potrebbe avere più applicazioni che accedono alle stesse risorse del database. Ogni applicazione potrebbe trovarsi nel proprio VPC.

Per consentire l'accesso tra VPC, crea un nuovo endpoint per il proxy. Il proxy stesso risiede nello stesso VPC del cluster di database Aurora . Tuttavia, l'endpoint cross-VPC risiede nell'altro VPC, insieme alle altre risorse come le istanze. EC2 L'endpoint cross-VPC è associato a sottoreti e gruppi di sicurezza dello stesso VPC delle risorse e di altre risorse. EC2 Queste associazioni consentono di connettersi all'endpoint dalle applicazioni che altrimenti non potrebbero accedere al database a causa delle restrizioni del VPC.

Nella procedura seguente viene illustrato come creare e accedere a un endpoint tra VPC tramite RDS Proxy:

  1. Creane due VPCs o scegline due VPCs che già usi per il lavoro con Aurora . Ogni VPC dovrebbe avere le proprie risorse di rete associate come un gateway Internet, tabelle di routing, sottoreti e gruppi di sicurezza. Se si dispone di un solo VPC, è possibile consultare la procedura Nozioni di base su Amazon Aurora per configurare un altro VPC per l'utilizzo corretto di Aurora. Puoi anche esaminare il tuo VPC esistente nella EC2 console Amazon per vedere i tipi di risorse da connettere tra loro.

  2. Crea un proxy database associato al cluster di database Aurora a cui desideri connetterti. Segui la procedura riportata in Creazione di un proxy per .

  3. Nella pagina Dettagli del proxy nella console RDS, nella sezione Endpoint proxy seleziona Crea endpoint. Segui la procedura riportata in Creazione di un endpoint proxy.

  4. Seleziona se impostare l'endpoint tra VPC in lettura/scrittura o in sola lettura.

  5. Invece di accettare il valore predefinito dello stesso VPC del cluster di database Aurora , seleziona un VPC diverso. Questo VPC deve trovarsi nella stessa AWS regione del VPC in cui risiede il proxy.

  6. Ora invece di accettare i valori predefiniti per le sottoreti e i gruppi di sicurezza dallo stesso VPC del cluster di database Aurora , effettua nuove selezioni. Le nuove selezioni dovranno essere relative alle sottoreti e ai gruppi di sicurezza del VPC scelto.

  7. Non è necessario modificare alcuna delle impostazioni per i segreti di Secrets Manager. Le stesse credenziali funzionano per tutti gli endpoint del proxy, indipendentemente dal VPC in cui si trova ciascun endpoint.

  8. Attendi che il nuovo endpoint raggiunga lo stato Disponibile.

  9. Prendi nota del nome completo dell'endpoint. Questo è il valore che termina in Region_name.rds.amazonaws.com fornito come parte della stringa di connessione per l'applicazione di database.

  10. Accedi al nuovo endpoint da una risorsa nello stesso VPC dell'endpoint. Un modo semplice per testare questo processo è creare una nuova EC2 istanza in questo VPC. Quindi, accedi all' EC2 istanza ed psql esegui i comandi mysql or per connetterti utilizzando il valore dell'endpoint nella stringa di connessione.