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à.
RDSConcetti e terminologia relativi ai proxy
Puoi semplificare la gestione delle connessioni per le tue (cluster Amazon Aurora DB) utilizzando Proxy. RDS
RDSIl proxy gestisce il traffico di rete tra l'applicazione client e il database. Lo fa in modo attivo prima comprendendo il protocollo del database. Quindi regola il suo comportamento in base alle SQL operazioni dell'applicazione e ai set di risultati del database.
RDSIl proxy riduce la memoria e il CPU sovraccarico per la gestione delle connessioni sul database. Il database richiede meno memoria e CPU risorse quando le applicazioni aprono molte connessioni simultanee. Inoltre, non richiede alcuna logica nelle applicazioni al fine di chiudere e riaprire le connessioni che rimangono inattive per un lungo periodo di tempo. Allo stesso modo, richiede meno operazioni logiche dell'applicazione per ristabilire le connessioni in caso di problemi di database.
L'infrastruttura per RDS Proxy è altamente disponibile e distribuita su più zone di disponibilità ()AZs. Il calcolo, la memoria e l'archiviazione per RDS Proxy sono indipendenti dal cluster Aurora DB dell'. Questa separazione consente di ridurre il sovraccarico sui server di database, in modo da poter dedicare le risorse al servizio dei carichi di lavoro del database. Le risorse di calcolo del RDS proxy sono serverless e si ridimensionano automaticamente in base al carico di lavoro del database.
Argomenti
Panoramica dei concetti relativi al proxy RDS
RDSIl proxy gestisce l'infrastruttura per eseguire il pool di connessioni e le altre funzionalità descritte nelle sezioni seguenti. Puoi vedere i proxy rappresentati nella RDS console nella pagina Proxy.
Ogni proxy gestisce le connessioni a un cluster Aurora DB. Il proxy determina automaticamente l'istanza di writer corrente per i cluster con provisioning Aurora dell'.
Le connessioni che un proxy mantiene aperte e disponibili per le applicazioni di database da utilizzare costituiscono il pool di connessioni.
Per impostazione predefinita, RDS Proxy può riutilizzare una connessione dopo ogni transazione della sessione. Questo riutilizzo a livello di transazione viene definito multiplexing. Quando RDS Proxy rimuove temporaneamente una connessione dal pool di connessioni per riutilizzarla, tale operazione viene chiamata prestito della connessione. Quando è sicuro farlo, RDS Proxy restituisce la connessione al pool di connessioni.
In alcuni casi, RDS Proxy non può garantire che sia sicuro riutilizzare una connessione al database al di fuori della sessione corrente. In questi casi, mantiene la sessione sulla stessa connessione fino al termine della sessione. Questo comportamento di fallback viene definito pinning.
Un proxy ha un endpoint predefinito. Ti connetti a questo endpoint quando lavori con un' Amazon Aurora DB. invece di connetterti all'endpoint di lettura-scrittura che si connette direttamente al cluster. Gli endpoint per finalità speciali per un cluster Aurora rimangono disponibili per l'utilizzo. Per i cluster DB Aurora , puoi anche creare endpoint di lettura/scrittura e di sola lettura aggiuntivi. Per ulteriori informazioni, consulta Panoramica degli endpoint proxy.
Ad esempio, puoi comunque connetterti all'endpoint del cluster per le connessioni di lettura-scrittura senza pool di connessioni. Puoi comunque connetterti all'endpoint di lettura per le connessioni di sola lettura con bilanciamento del carico. Puoi comunque connetterti agli endpoint dell'istanza per la diagnosi e la risoluzione dei problemi di istanze database specifiche all'interno di un cluster. Se utilizzi altri AWS servizi, ad esempio AWS Lambda per connetterti ai RDS database, modifica le relative impostazioni di connessione per utilizzare l'endpoint proxy. Ad esempio, si specifica l'endpoint proxy per consentire alle funzioni Lambda di accedere al database RDS sfruttando al contempo la funzionalità Proxy.
Ogni proxy contiene un gruppo di destinazione. Questo gruppo target include il cluster Aurora DB a cui il proxy può connettersi. Per un cluster Aurora, per impostazione predefinita, il gruppo di destinazione è associato a tutte le istanze DB in tale cluster. In questo modo, il proxy può connettersi a qualsiasi istanza database Aurora venga promossa a istanza di scrittura nel cluster. Il cluster Aurora DB associato a un proxy viene chiamato target di quel proxy. Per comodità, quando si crea un proxy tramite la console, RDS Proxy crea anche il gruppo di destinazione corrispondente e registra automaticamente le destinazioni associate.
Una famiglia di motori è un insieme correlato di motori di database che utilizzano lo stesso protocollo di DB. Scegli la famiglia di motori per ogni proxy creato.
Pooling di connessioni
Ogni proxy esegue il pool di connessioni per l'istanza writer del associato. Il pool di connessioni è un'ottimizzazione che riduce il sovraccarico associato all'apertura e alla chiusura delle connessioni e mantiene aperte contemporaneamente molte connessioni. Questo sovraccarico include la memoria necessaria per gestire ogni nuova connessione. Inoltre, la chiusura di ogni connessione e l'apertura di una nuova comportano un CPU sovraccarico. Gli esempi includono l'handshake di Transport Layer Security/Secure Sockets Layer (TLS/SSL), l'autenticazione, le funzionalità di negoziazione e così via. Il pool di connessioni semplifica la logica dell'applicazione. Non devi scrivere codice dell'applicazione per ridurre al minimo il numero di connessioni aperte simultanee.
Ogni proxy esegue anche il multiplexing delle connessioni, noto anche come riutilizzo della connessione. Con il multiplexing, RDS Proxy esegue tutte le operazioni per una transazione utilizzando una connessione al database sottostante. RDSquindi può utilizzare una connessione diversa per la transazione successiva. Puoi aprire molte connessioni simultanee al proxy e il proxy mantiene un numero minore di connessioni aperte all'istanza database o al cluster. In questo modo si riduce ulteriormente il sovraccarico di memoria per le connessioni sul server di database. Questa tecnica riduce anche la possibilità di errori del tipo «troppe connessioni».
RDSSicurezza proxy
RDSIl proxy utilizza i meccanismi RDS di sicurezza esistenti comeTLS/SSLe AWS Identity and Access Management (IAM). Per informazioni generali sulle funzionalità di sicurezza, consulta Sicurezza in Aurora. Inoltre, assicurati di acquisire familiarità con il funzionamento di Aurora con l'autenticazione, l'autorizzazione e altre aree di sicurezza.
RDSIl proxy può fungere da ulteriore livello di sicurezza tra le applicazioni client e il database sottostante. Ad esempio, è possibile connettersi al proxy utilizzando TLS 1.3, anche se l'istanza DB sottostante supporta una versione precedente diTLS. È possibile connettersi al proxy utilizzando un IAM ruolo. anche se il proxy si connette al database utilizzando il metodo di autenticazione utente/password nativo. Utilizzando questa tecnica, puoi applicare requisiti di autenticazione avanzata per le applicazioni di database senza un costoso sforzo di migrazione per le istanze DB medesime.
Le credenziali del database utilizzate da RDS Proxy vengono memorizzate in AWS Secrets Manager. Ogni utente del database per il cluster Aurora DB a cui accede un proxy deve avere un segreto corrispondente in Secrets Manager. È inoltre possibile configurare IAM l'autenticazione per gli utenti di RDS Proxy. In questo modo, è possibile applicare IAM l'autenticazione per l'accesso al database anche se i database utilizzano l'autenticazione con password nativa. È consigliabile utilizzare queste funzionalità di protezione anziché incorporare le credenziali del database nel codice dell'applicazione.
Utilizzo diTLS/SSLcon Proxy RDS
È possibile connettersi a RDS Proxy utilizzando il SSL protocollo TLS /.
Nota
RDSIl proxy utilizza i certificati di AWS Certificate Manager (ACM). Se utilizzi RDS Proxy, non è necessario scaricare RDS certificati Amazon o aggiornare applicazioni che utilizzano connessioni RDS Proxy.
TLSPer applicare tutte le connessioni tra il proxy e il database, puoi specificare un'impostazione Require Transport Layer Security quando crei o modifichi un proxy in. AWS Management Console
RDSIl proxy può anche garantire che la sessione utilizziTLS/SSLtra il client e l'endpoint RDS Proxy. Per fare in modo che RDS Proxy lo faccia, specifica il requisito sul lato client. SSLle variabili di sessione non sono impostate per SSL le connessioni a un database tramite RDS Proxy.
-
Aurora My SQL, specifica il requisito sul lato client con il
--ssl-mode
parametro quando esegui ilmysql
comando. -
Per Aurora Postgre SQL, specifica
sslmode=require
come parte dellaconninfo
stringa quando esegui il comando.psql
RDSIl proxy supporta le versioni TLS del protocollo 1.0, 1.1, 1.2 e 1.3. È possibile connettersi al proxy utilizzando una versione superiore TLS a quella utilizzata nel database sottostante.
Per impostazione predefinita, i programmi client stabiliscono una connessione crittografata con RDS Proxy, con un ulteriore controllo disponibile tramite l'--ssl-mode
opzione. Dal lato client, RDS Proxy supporta tutte le SSL modalità.
Per il client, le SSL modalità sono le seguenti:
- PREFERRED
-
SSLè la prima scelta, ma non è obbligatoria.
- DISABLED
-
No SSL è consentito.
- REQUIRED
-
Far rispettareSSL.
- VERIFY_CA
-
Applica SSL e verifica l'autorità di certificazione (CA).
- VERIFY_IDENTITY
-
Applica SSL e verifica la CA e il nome host della CA.
Quando si utilizza un client con --ssl-mode
VERIFY_CA
o VERIFY_IDENTITY
, specificare l'opzione --ssl-ca
puntando a una CA in formato .pem
. Per utilizzare il .pem
file, scarica tutte le CA root PEMs da Amazon Trust Services.pem
file.
RDSIl proxy utilizza certificati wildcard, che si applicano sia a un dominio che ai suoi sottodomini. Se si utilizza il mysql
client per connettersi con la SSL modalitàVERIFY_IDENTITY
, attualmente è necessario utilizzare il comando My SQL 8.0-compatible. mysql
Failover
Il failover è una funzionalità ad alta disponibilità che sostituisce un'istanza di database con un'altra quando l'istanza originale diventa non disponibile. Un failover potrebbe verificarsi a causa di un problema con un'istanza di database. Potrebbe anche essere parte delle normali procedure di manutenzione, ad esempio durante un aggiornamento del database. Il failover si applica ai cluster Aurora DB con una o più istanze reader oltre all'istanza writer.
La connessione tramite un proxy rende le applicazioni più resistenti ai failover del database. Quando l'istanza DB originale non è più disponibile, RDS Proxy si connette al database di standby senza interrompere le connessioni alle applicazioni inattive. Ciò consente di velocizzare e semplificare il processo di failover. Ciò comporta meno interruzioni per l'applicazione rispetto a un tipico problema di riavvio o di database.
Senza RDS Proxy, un failover comporta una breve interruzione. Durante l'interruzione, non è possibile eseguire operazioni di scrittura sul database in caso di failover. Tutte le connessioni al database esistenti vengono interrotte e l'applicazione deve riaprirle. Il database diventa disponibile per le nuove connessioni e le operazioni di scrittura quando un'istanza database di sola lettura viene promossa al posto di quella non disponibile.
Durante i failover del DB, RDS Proxy continua ad accettare connessioni allo stesso indirizzo IP e indirizza automaticamente le connessioni verso la nuova istanza database principale. I client che si connettono tramite RDS Proxy non sono soggetti a quanto segue:
-
Ritardi di propagazione del Domain Name System (DNS) in caso di failover.
-
Memorizzazione nella cache locale. DNS
-
Timeout di connessione.
-
Incertezza su quale istanza database è il writer corrente.
-
In attesa di una risposta di query da un precedente writer che è diventato non disponibile senza chiudere le connessioni.
Per le applicazioni che mantengono il proprio pool di connessioni, RDS utilizzare Proxy significa che la maggior parte delle connessioni rimane attiva durante i failover o altre interruzioni. Vengono annullate solo le connessioni che si trovano nel bel mezzo di una transazione o di una SQL dichiarazione. RDSIl proxy accetta immediatamente nuove connessioni. Quando il database writer non è disponibile, RDS Proxy mette in coda le richieste in arrivo.
Per le applicazioni che non mantengono i propri pool di connessioni, RDS Proxy offre velocità di connessione più elevate e connessioni più aperte. Si evita il costoso sovraccarico dovuto a frequenti riconnessioni dal database. Lo fa riutilizzando le connessioni al database gestite nel pool di connessioni RDS Proxy. Questo approccio è particolarmente importante per TLS le connessioni, in cui i costi di configurazione sono significativi.
Transazioni
Tutte le istruzioni all'interno di una singola transazione utilizzano sempre la stessa connessione al database sottostante. La connessione diventa disponibile per l'utilizzo da parte di una sessione diversa al termine della transazione. L'utilizzo della transazione come unità di granularità ha le seguenti conseguenze:
-
Il riutilizzo della connessione può avvenire dopo ogni singola dichiarazione quando l'impostazione Aurora SQL
autocommit
My è attivata. -
Al contrario, quando l'impostazione
autocommit
è disattivata, la prima istruzione che viene emessa in una sessione inizia una nuova transazione. Ad esempio, supponiamo di immettere una sequenza diSELECT
,INSERT
UPDATE
, e altre istruzioni del linguaggio di manipolazione dei dati (). DML In questo caso, il riutilizzo della connessione non avviene fino a quando non invii un'istruzione comeCOMMIT
oROLLBACK
per terminare la transazione. -
L'immissione di un'istruzione Data Definition Language (DDL) causa la fine della transazione dopo il completamento dell'istruzione.
RDSIl proxy rileva quando una transazione termina tramite il protocollo di rete utilizzato dall'applicazione client del database. Il rilevamento delle transazioni non si basa su parole chiave come COMMIT
o ROLLBACK
che compaiono nel testo della SQL dichiarazione.
In alcuni casi, RDS Proxy potrebbe rilevare una richiesta al database che rende poco pratico lo spostamento della sessione su un'altra connessione. In questi casi, disattiva il multiplexing per quella connessione al resto della sessione. La stessa regola si applica se RDS Proxy non può essere certo che il multiplexing sia pratico per la sessione. Questa operazione è chiamata pinning. Per informazioni su come rilevare e ridurre al minimo il pinning, consulta Evitare di bloccare un proxy RDS.