Come Configurare un Deployment AWS RDS Multi-AZ per l'Alta Disponibilità

Configura AWS RDS Multi-AZ per failover automatico, manutenzione più sicura e migliore disponibilità del database in produzione.

Come Configurare un Deployment AWS RDS Multi-AZ per l'Alta Disponibilità

La disponibilità del database è importante quando la tua applicazione dipende da un singolo endpoint RDS. AWS RDS Multi-AZ riduce il rischio di un guasto dell'istanza o della Zona di Disponibilità mantenendo una standby in un'altra AZ e effettuando il failover automaticamente quando il primario non può servire il traffico.

Questa guida mostra come configurare un deployment AWS RDS Multi-AZ per un'istanza DB nuova o esistente, cosa monitorare dopo la modifica e quali compromessi aspettarsi.

Cos'è AWS RDS Multi-AZ?

Un deployment AWS RDS Multi-AZ (Multiple Availability Zone) crea una replica esatta della tua istanza database in una Zona di Disponibilità (AZ) diversa, fisicamente isolata, all'interno della stessa Regione AWS. Questa istanza standby opera in una configurazione "hot standby", il che significa che viene continuamente aggiornata con le modifiche dall'istanza primaria utilizzando la replica sincrona.

Come Funziona:

  1. Istanza Primaria: La tua applicazione si connette e scrive dati sull'istanza database primaria.
  2. Replica Sincrona: Tutte le scritture di dati sull'istanza primaria vengono replicate in modo sincrono sull'istanza standby. Questo garantisce che l'istanza standby sia sempre aggiornata con la primaria, minimizzando la perdita di dati durante un failover.
  3. Failover Automatico: In caso di guasto dell'infrastruttura che colpisce l'istanza primaria (ad esempio, un'interruzione dell'AZ, un guasto hardware dell'istanza, un problema di rete o un crash del motore del database), AWS RDS passa automaticamente alla replica standby. La durata del failover varia in base al motore, al carico di lavoro e al comportamento della cache DNS, quindi la tua applicazione dovrebbe utilizzare una logica di riconnessione. L'endpoint del database rimane lo stesso, quindi le tue applicazioni non necessitano di una nuova stringa di connessione.
  4. Endpoint Singolo: Sia l'istanza primaria che quella standby condividono un singolo endpoint DNS. Le tue applicazioni si connettono a questo endpoint e AWS gestisce il reindirizzamento all'istanza primaria attualmente attiva.

Vantaggi dei Deployment Multi-AZ

Configurare RDS con Multi-AZ fornisce diversi vantaggi cruciali per i carichi di lavoro di produzione:

  • Alta Disponibilità: Il failover automatizzato a una replica standby in una AZ diversa garantisce che il tuo database rimanga operativo anche se l'AZ primaria subisce un'interruzione. Questo riduce significativamente i tempi di inattività.
  • Durabilità dei Dati: La replica sincrona garantisce che tutte le transazioni impegnate siano presenti sia sull'istanza primaria che su quella standby. Questo minimizza il rischio di perdita di dati durante un failover.
  • Disaster Recovery: Estendendosi su più Zone di Disponibilità, il tuo database è protetto contro guasti a livello di AZ, formando un componente critico della tua strategia di disaster recovery.
  • Operazioni Semplificate: AWS gestisce automaticamente il monitoraggio, la replica e il processo di failover. Non è necessario configurare la replica basata su host, gestire istanze standby o orchestrare manualmente i failover.
  • Finestre di Manutenzione: Durante la manutenzione pianificata (ad esempio, applicazione di patch del sistema operativo o aggiornamenti del motore del database), AWS esegue automaticamente il failover sull'istanza standby, esegue la manutenzione sulla vecchia primaria e poi torna indietro. Questo minimizza i tempi di inattività dell'applicazione.
  • Prestazioni (Latenza di Scrittura): Mentre la replica sincrona introduce intrinsecamente un leggero aumento della latenza di scrittura rispetto a un deployment a singola AZ (a causa della conferma delle scritture in due posizioni), questo è spesso trascurabile per la maggior parte delle applicazioni ed è un compromesso accettabile per la maggiore disponibilità.

Prerequisiti

Prima di iniziare, assicurati di avere:

  • Un Account AWS con autorizzazioni appropriate per creare e gestire istanze RDS.
  • Una conoscenza di base di Regioni AWS, Zone di Disponibilità e Virtual Private Cloud (VPC).

Guida alla Configurazione Passo dopo Passo

Opzione 1: Creazione di una Nuova Istanza RDS con Multi-AZ

Questo è l'approccio consigliato per i nuovi deployment, garantendo l'alta disponibilità dal primo giorno.

  1. Naviga alla Console RDS: Accedi alla AWS Management Console e apri la console Amazon RDS.
  2. Crea Database: Nel pannello di navigazione, scegli Databases, quindi clicca su Create database.
  3. Scegli il Metodo di Creazione del Database: Seleziona Standard create.
  4. Scegli le Opzioni del Motore:
    • Tipo di motore: Seleziona il motore del database desiderato (ad esempio, MySQL, PostgreSQL, SQL Server, Oracle).
    • Versione del motore: Scegli la versione specifica.
  5. Modelli: Scegli il modello appropriato. Per la produzione, usa un modello orientato alla produzione e verifica comunque l'impostazione Multi-AZ prima di creare il database.
  6. Impostazioni:
    • Identificatore dell'istanza DB: Fornisci un nome univoco per la tua istanza database.
    • Nome utente principale e Password principale: Imposta le credenziali per l'utente principale del database.
  7. Dimensione dell'istanza DB: Seleziona la classe di istanza che soddisfa i tuoi requisiti di prestazioni.
  8. Archiviazione: Configura il tipo di archiviazione e lo spazio allocato.
  9. Disponibilità e Durabilità: Questo è il passaggio cruciale per Multi-AZ:
    • Sotto Deployment Multi-AZ, seleziona Sì (Crea un'istanza standby).
    • (Opzionale) Se hai selezionato il modello "Produzione" in precedenza, questa opzione sarà preselezionata.
  10. Connettività:
    • VPC: Seleziona il VPC in cui risiederà il tuo database.
    • Gruppo di subnet: Assicurati di avere un gruppo di subnet DB che si estende su più Zone di Disponibilità. RDS lo utilizzerà per posizionare le istanze primaria e standby in AZ diverse.
    • Accesso pubblico: Scegli No per gli ambienti di produzione per le migliori pratiche di sicurezza.
    • Gruppi di sicurezza VPC: Allega un gruppo di sicurezza appropriato che consenta il traffico in entrata verso la porta del tuo database dai tuoi server applicativi.
  11. Autenticazione del Database: Scegli il tuo metodo di autenticazione preferito.
  12. Monitoraggio, Performance Insights, Esportazione Log, Manutenzione: Configura questi in base ai tuoi requisiti operativi.
  13. Crea database: Rivedi tutte le tue impostazioni e clicca su Create database.

AWS provvederà la tua istanza primaria e poi creerà e sincronizzerà la replica standby in una Zona di Disponibilità diversa. Questo processo può richiedere del tempo, a seconda della dimensione dell'istanza.

Opzione 2: Modifica di un'istanza RDS Esistente a Multi-AZ

Puoi abilitare Multi-AZ per un'istanza RDS a singola AZ esistente senza tempi di inattività.

  1. Naviga alla Console RDS: Accedi alla AWS Management Console e apri la console Amazon RDS.
  2. Seleziona Database: Nel pannello di navigazione, scegli Databases, quindi seleziona l'istanza RDS che desideri modificare.
  3. Modifica Istanza: Clicca sul pulsante Modify.
  4. Disponibilità e Durabilità: Scorri verso il basso fino alla sezione Disponibilità e Durabilità.
    • Sotto Deployment Multi-AZ, seleziona Sì (Crea un'istanza standby).
  5. Continua: Rivedi altre impostazioni (classe di istanza, archiviazione, ecc.) e apporta altre modifiche necessarie, quindi clicca su Continue.
  6. Pianificazione delle Modifiche:
    • Applica immediatamente: Scegliendo questa opzione si avvia la modifica immediatamente. RDS crea la standby in background mentre la primaria rimane disponibile, anche se potresti vedere una latenza I/O più elevata durante la sincronizzazione. AWS normalmente non richiede un'interruzione pianificata solo per abilitare Multi-AZ, ma successivi failover o eventi di manutenzione possono ancora interrompere le connessioni.
    • Applica durante la prossima finestra di manutenzione pianificata: Questa opzione applicherà le modifiche durante la finestra di manutenzione definita, minimizzando le interruzioni durante le ore di punta.
  7. Modifica istanza DB: Clicca su Modify DB instance.

AWS avvierà il processo di creazione della replica standby e la sincronizzazione con la tua istanza primaria. Durante questo periodo, il tuo database rimarrà online, ma potresti osservare un breve evento di failover quando la configurazione Multi-AZ viene finalizzata.

Monitoraggio del Tuo Deployment Multi-AZ

Dopo aver configurato Multi-AZ, è essenziale monitorarne lo stato:

  1. Console RDS: Vai alla console RDS e seleziona la tua istanza database.
  2. Scheda Dettagli: Sotto la sezione Connettività e sicurezza, vedrai Multi-AZ elencato come . Sotto Disponibilità e durabilità, dovrebbe mostrare la tua istanza come in un deployment Multi-AZ.
  3. Eventi: Controlla la scheda Log ed eventi per eventi relativi a failover, creazione di istanze o attività di manutenzione. AWS registrerà eventi per i failover (ad esempio, RDS-EVENT-0026 - Istanza DB XXX ha subito un failover).

Test del Failover (Opzionale ma Raccomandato)

Mentre AWS gestisce i failover automaticamente, è buona pratica comprendere e occasionalmente testare il meccanismo di failover in un ambiente non di produzione.

Attivazione di un Failover:

  1. Riavvio con Failover: Seleziona la tua istanza Multi-AZ nella console RDS. Dal menu Azioni, scegli Riavvia. Assicurati di selezionare l'opzione "Riavvia con failover?".
    • Questa azione forza RDS a passare dall'istanza primaria alla replica standby, simulando un'interruzione non pianificata. La tua applicazione dovrebbe aspettarsi una breve disconnessione mentre l'endpoint inizia a risolversi verso la nuova primaria.
  2. Osserva gli Eventi: Dopo aver avviato un failover, monitora la scheda Log ed eventi per la tua istanza. Dovresti vedere eventi che indicano che si è verificato un failover e che la nuova primaria è attiva.

Considerazioni e Migliori Pratiche

  • Costo: I deployment Multi-AZ comportano costi più elevati rispetto ai deployment a singola AZ perché stai effettivamente eseguendo due istanze database (primaria e standby), anche se solo una è attivamente al servizio del traffico in un dato momento.
  • Repliche di Lettura vs. Multi-AZ: Comprendi la differenza. Multi-AZ è per l'alta disponibilità e la durabilità (scritture). Le Repliche di Lettura sono per il ridimensionamento della lettura e il miglioramento delle prestazioni di lettura. Possono essere utilizzate insieme; puoi creare una primaria Multi-AZ e poi avere repliche di lettura per ridimensionare le applicazioni con carichi pesanti di lettura.
  • Impatto sulle Prestazioni: Mentre Multi-AZ migliora la disponibilità, la replica sincrona può introdurre un leggero aumento della latenza di scrittura rispetto alla singola AZ. Per la maggior parte delle applicazioni, questo sovraccarico è minimo.
  • Gruppi di Subnet: Assicurati che il tuo Gruppo di Subnet DB includa subnet in almeno due diverse Zone di Disponibilità. Questo permette a RDS di posizionare le tue istanze primaria e standby in AZ separate.
  • Gruppi di Sicurezza: Configura correttamente i tuoi gruppi di sicurezza VPC per consentire il traffico dai tuoi server applicativi all'endpoint RDS.
  • Supporto del Motore del Database: Multi-AZ è supportato dalla maggior parte dei motori di database popolari, inclusi MySQL, PostgreSQL, SQL Server, Oracle e MariaDB.

Conclusione

Usa AWS RDS Multi-AZ per i database di produzione dove il failover automatico è più importante del costo extra e del possibile sovraccarico di latenza di scrittura. Dopo averlo abilitato, conferma che il tuo gruppo di subnet DB si estende su almeno due AZ, testa il comportamento di riconnessione dell'applicazione in un ambiente non di produzione e monitora gli eventi RDS in modo che i failover non sorprendano il tuo team.