Concetti e terminologia RDS Proxy - Amazon Relational Database Service

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à.

Concetti e terminologia RDS Proxy

Puoi semplificare la gestione delle connessioni per le istanze database Amazon RDS utilizzando Server proxy per RDS.

RDS 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 operazioni SQL dell'applicazione e ai set di risultati dal database.

RDS Proxy riduce il sovraccarico di memoria e CPU per la gestione delle connessioni nel database. Il database richiede meno memoria e risorse della CPU 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 server proxy per RDS sono indipendenti dal cluster di un’istanza database RDS. 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 RDS Proxy sono serverless e vengono scalate automaticamente in base al carico di lavoro del database.

Panoramica dei concetti RDS Proxy

RDS Proxy gestisce l'infrastruttura per eseguire il pool di connessioni e le altre funzionalità descritte nelle sezioni seguenti. I proxy rappresentati nella console RDS vengono visualizzati nella pagina Proxy.

Ogni proxy gestisce le connessioni a una singola istanza database RDS. Il proxy determina l'istanza di scrittura corrente per il cluster o l'istanza database Multi-AZ RDS.

Le connessioni che un proxy mantiene aperte e disponibili per le applicazioni di database da utilizzare formano il pool di connessioni.

Per impostazione predefinita, RDS Proxy può riutilizzare una connessione dopo ogni transazione nella 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 tale connessione al pool di connessioni.

In alcuni casi, per RDS Proxy non è possibile avere la certezza di 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'istanza database RDS Per RDS DB, puoi anche creare endpoint aggiuntivi e di sola lettura. read/write Per ulteriori informazioni, consulta Panoramica degli endpoint proxy.

Ad esempio, è comunque possibile connettersi all'endpoint del cluster per connessioni senza pool di connessioni. read/write 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 database RDS, modifica le relative impostazioni di connessione per utilizzare l'endpoint proxy. Ad esempio, se specifichi l'endpoint proxy per consentire alle funzioni Lambda di accedere al database sfruttando al contempo le funzionalità RDS Proxy.

Ogni proxy contiene un gruppo di destinazione. Questo gruppo di destinazione rappresenta l’istanza database RDS a cui il proxy può connettersi. L’istanza database RDS associata a un proxy è la destinazione di tale proxy. Per comodità, quando crei un proxy attraverso 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 pooling delle connessioni separatamente per l’istanza di scrittura e di lettura del relativo database RDS associato. Il pooling delle 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. Ciò implica un sovraccarico della CPU anche per chiudere la connessione e aprirne una nuova. Gli esempi includono l'handshake di Transport Layer Security/Secure Sockets Layer (TLS/SSL), l'autenticazione, le funzionalità di negoziazione e così via. Il pooling delle 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, Server proxy per RDS esegue tutte le operazioni per una transazione utilizzando una connessione al database sottostante, quindi 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».

Sicurezza di RDS Proxy

RDS Proxy utilizza i meccanismi di sicurezza RDS esistenti come and (IAM). TLS/SSL AWS Identity and Access Management Per informazioni generali sulle funzionalità di sicurezza, consulta Sicurezza in Amazon RDS. Inoltre, assicurati di familiarizzare con il modo in cui RDS utilizza l'autenticazione, l'autorizzazione e altri metodi di protezione.

RDS Proxy può fungere da ulteriore livello di sicurezza tra le applicazioni client e il database sottostante. Ad esempio, puoi connetterti al proxy utilizzando TLS 1.3, anche se l’istanza database sottostante supporta una versione precedente di TLS. È possibile connettersi al proxy utilizzando un ruolo IAM anche se il proxy si connette al database utilizzando il metodo di autenticazione utente e password del database. 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.

È possibile utilizzare i seguenti metodi di autenticazione con RDS Proxy:

  • Credenziali del database

  • Autenticazione IAM standard

  • End-to-end Autenticazione IAM

Utilizzo di IAM con RDS Proxy

RDS Proxy offre due metodi di autenticazione IAM:

  • Autenticazione IAM standard: applica l'autenticazione IAM per le connessioni al proxy mentre il proxy si connette al database utilizzando le credenziali archiviate in Secrets Manager. Ciò applica l'autenticazione IAM per l'accesso al database anche se i database utilizzano l'autenticazione con password nativa. Il proxy recupera le credenziali del database da Secrets Manager e gestisce l'autenticazione al database per conto dell'applicazione.

  • End-to-end Autenticazione IAM: applica l'autenticazione IAM per le connessioni direttamente dalle applicazioni al database tramite il proxy. End-to-end L'autenticazione IAM semplifica la configurazione di sicurezza ed evita la gestione delle credenziali del database in Secrets Manager. Questo ulteriore livello di sicurezza impone il controllo degli accessi basato su IAM dall'applicazione client al database.

Per utilizzare l'autenticazione IAM standard, configura il proxy per utilizzare i segreti di Secrets Manager per l'autenticazione e abilitare l'autenticazione IAM per le connessioni client. Le applicazioni si autenticano sul proxy utilizzando IAM, mentre il proxy si autentica nel database utilizzando le credenziali recuperate da Secrets Manager.

Per utilizzare l'autenticazione end-to-end IAM, configura il proxy in modo che utilizzi l'autenticazione IAM quando imposti lo schema di autenticazione predefinito durante la creazione o la modifica del proxy.

Per l'autenticazione end-to-end IAM, devi aggiornare il ruolo IAM associato al proxy per concedere l'rds-db:connectautorizzazione. Con l'autenticazione end-to-end IAM, questo elimina la necessità di registrare i singoli utenti del database con il proxy tramite Secrets Manager secrets.

Utilizzo TLS/SSL con RDS Proxy

È possibile connettersi a RDS Proxy utilizzando il TLS/SSL protocollo.

Nota

RDS Proxy utilizza i certificati di AWS Certificate Manager (ACM). Se si utilizza RDS Proxy, non è necessario scaricare certificati Amazon RDS o aggiornare applicazioni che utilizzano connessioni RDS Proxy.

Per applicare TLS a tutte le connessioni tra il proxy e il database, è possibile specificare un’impostazione Richiedi Transport Layer Security quando si crea o si modifica un proxy nella Console di gestione AWS.

RDS Proxy può anche garantire che la sessione venga utilizzata TLS/SSL tra il client e l'endpoint RDS Proxy. Per fare in modo che RDS Proxy proceda, specificare il requisito sul lato client. Le variabili di sessione SSL non sono configurate per le connessioni SSL a un database che utilizza RDS Proxy.

  • Per RDS per MySQL, specifica il requisito sul lato client con il parametro --ssl-mode quando esegui il comando mysql.

  • Per Amazon RDS PostgreSQL, specifica sslmode=require come parte della stringa conninfo quando esegui il comando psql.

Server proxy per RDS supporta il protocollo TLS versione 1.0, 1.1, 1.2 e 1.3. È possibile connettersi al proxy utilizzando una versione superiore di TLS rispetto a quella utilizzata nel database sottostante.

Per impostazione predefinita, i programmi client stabiliscono una connessione crittografata con RDS Proxy, con controllo aggiuntivo disponibile tramite l'opzione --ssl-mode. Dal lato client, RDS Proxy supporta tutte le modalità SSL.

Per il client, le modalità SSL sono le seguenti:

PREFERRED

SSL è la prima scelta, ma non obbligatoria.

DISABLED

Nessun SSL è abilitato.

REQUIRED

Applica SSL.

VERIFY_CA

Applicare SSL e verificare l'autorità di certificazione (CA).

VERIFY_IDENTITY

Applica SSL e verifica CA e nome host 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.

Server proxy per RDS utilizza certificati jolly, che si applicano sia a un dominio sia ai relativi sottodomini. Se utilizzi il client mysql per eseguire la connessione in modalità SSL VERIFY_IDENTITY, al momento devi utilizzare il comando compatibile mysql con MySQL 8.0.

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 alle istanze database RDS in una configurazione Multi-AZ.

La connessione tramite un proxy rende le applicazioni più resilienti ai failover del database. Quando l'istanza database originale diventa non disponibile, RDS Proxy si connette al database di standby senza far cadere le connessioni dell'applicazione inattiva. Ciò consente di velocizzare e semplificare il processo di failover. Il risultato è un failover meno dannoso per l’applicazione rispetto a un tipico problema di riavvio o del database.

Senza RDS Proxy, un failover comporta una breve interruzione. Durante l’interruzione, non è possibile eseguire operazioni di scrittura sul database in stato 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 DB, RDS Proxy continua ad accettare connessioni allo stesso indirizzo IP e indirizza automaticamente le connessioni alla nuova istanza database primaria. I client che si connettono tramite RDS Proxy non sono soggetti a quanto segue:

  • Ritardi di propagazione DNS (Domain Name System) durante il failover.

  • Cache DNS locale.

  • 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, passare attraverso RDS 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 mezzo di una transazione o istruzione SQL. RDS Proxy accetta immediatamente nuove connessioni. Quando l'istanza di scrittura del database non è disponibile, RDS Proxy accoda le richieste in arrivo.

Per le applicazioni che non mantengono i propri pool di connessioni, RDS Proxy offre velocità di connessione più rapide e connessioni più aperte. Si evita il costoso sovraccarico dovuto a frequenti riconnessioni dal database. Ciò avviene riutilizzando le connessioni al database mantenute nel pool di connessioni del RDS Proxy. Questo approccio è particolarmente importante per le connessioni TLS, dove i costi di installazione 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 istruzione quando l'impostazione RDS per MySQL autocommit è attivata.

  • Al contrario, quando l'impostazione autocommit è disattivata, la prima istruzione che viene emessa in una sessione inizia una nuova transazione. Ad esempio, supponi di immettere una sequenza di SELECT, INSERT, UPDATE e altre istruzioni DML (Data Manipulation Language). 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 DDL (Data Definition Language) fa terminare la transazione dopo il completamento dell'istruzione.

RDS Proxy rileva quando una transazione termina attraverso 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 appaiono nel testo dell'istruzione SQL.

In alcuni casi, RDS Proxy potrebbe rilevare una richiesta di database che rende impossibile spostare la sessione a una connessione diversa. In questi casi, disattiva il multiplexing per quella connessione al resto della sessione. La stessa regola si applica se RDS Proxy non può avere la certezza che il multiplexing sia praticabile per la sessione. Questa operazione è chiamata pinning. Per informazioni su come rilevare e ridurre al minimo il pinning, consulta Evitare di effettuare il pinning di un Server proxy per RDS.