RDSConcetti e terminologia relativi ai 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à.

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.

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 il mysql comando.

  • Per Aurora Postgre SQL, specifica sslmode=require come parte della conninfo 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-modeopzione. 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 e inseriscile in un unico .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, INSERTUPDATE, 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 come COMMIT o ROLLBACK 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.