Come posso separare un'istanza Amazon RDS da un ambiente Elastic Beanstalk senza tempi di inattività, problemi di sincronizzazione del database o perdita di dati?
Dispongo di un'istanza database Amazon Relational Database Service (Amazon RDS) collegata al mio ambiente AWS Elastic Beanstalk. Desidero evitare tempi di inattività, problemi di sincronizzazione del database e perdita di dati quando rimuovo le dipendenze tra l'istanza e l'ambiente.
Breve descrizione
La seguente procedura separa il database da un ambiente Elastic Beanstalk e non influisce sullo stato dell'ambiente:
- Crea uno snapshot di database Amazon RDS.
- Proteggi l'istanza database RDS dall'eliminazione.
- Crea un nuovo ambiente Elastic Beanstalk.
- Esegui una implementazione blu/verde.
- Aggiorna la policy di eliminazione del database per l'ambiente precedente.
- Separa l'istanza RDS dall'ambiente precedente.
- Termina l'ambiente precedente.
Importante: come best practice, collega un'istanza database RDS a un ambiente Elastic Beanstalk solo in ambienti di sviluppo e test. Nell'ambiente di produzione, il ciclo di vita dell'istanza database è legato al ciclo di vita dell'ambiente applicativo. Pertanto, è consigliabile non collegare l'istanza database RDS a un ambiente Elastic Beanstalk in un ambiente di produzione. Se termini l'ambiente, perdi i dati poiché l'ambiente elimina l'istanza database. Per ulteriori informazioni, consulta Utilizzo di Elastic Beanstalk con Amazon RDS.
Risoluzione
Crea uno snapshot di database dell'istanza
Per creare uno snapshot di database dell'istanza, completa i seguenti passaggi:
- Apri la console Elastic Beanstalk.
- Crea l'ambiente Elastic Beanstalk.
- Copia l'ID dell'ambiente.
- Apri la console Amazon RDS.
- Nel pannello di navigazione, scegli Database.
- Inserisci l'ID dell'ambiente nel campo di ricerca, quindi seleziona il database.
- Crea uno snapshot di database.
Proteggi l'istanza database dall'eliminazione
Per proteggere l'istanza database dall'eliminazione, completa i seguenti passaggi:
- Apri la console Amazon RDS.
- Nel pannello di navigazione, scegli Database.
- Seleziona il database, quindi scegli Modifica.
- In Protezione da eliminazione, seleziona Abilita protezione da eliminazione, quindi scegli Continua.
- Per Pianificazione delle modifiche, scegli Applica immediatamente, quindi scegli Modifica cluster.
- Aggiorna la console Amazon RDS, quindi verifica che la protezione dall'eliminazione sia attiva.
Crea un nuovo ambiente Elastic Beanstalk
Nota: il nuovo ambiente Elastic Beanstalk non può includere un'istanza database.
Per creare un nuovo ambiente Elastic Beanstalk, completa i seguenti passaggi:
- Crea un nuovo ambiente Elastic Beanstalk.
- Connetti il nuovo ambiente Elastic Beanstalk all'istanza database esistente dell'ambiente Elastic Beanstalk precedente. Per ulteriori informazioni, consulta la sezione Avvio e connessione a un'istanza Amazon RDS esterna in un VPC predefinito.
- Verifica che il nuovo ambiente si connetta all'istanza database esistente e che l'applicazione funzioni correttamente.
Esegui un’implementazione blu/verde per evitare tempi di inattività
Nota: per eseguire un’implementazione blu/verde o uno scambio successivo del CNAME, entrambi gli ambienti Elastic Beanstalk devono far parte della stessa applicazione.
Per eseguire un’implementazione blu/verde, completa i seguenti passaggi:
- Apri la console Elastic Beanstalk per il nuovo ambiente.
- Scambia gli URL degli ambienti precedenti e nuovi di Elastic Beanstalk. Per ulteriori informazioni, consulta la sezione Implementazioni blu/verde con Elastic Beanstalk.
- Verifica che l'URL del nuovo ambiente risponda e che l'applicazione funzioni correttamente.
Importante: termina l'ambiente Elastic Beanstalk precedente solo dopo la propagazione delle modifiche al DNS e la scadenza dei precedenti record DNS. La scadenza dei record DNS può richiedere fino a 48 ore. I server DNS non cancellano i precedenti record dalla cache in base al Time To Live (TTL) impostato nei record DNS.
Aggiorna la policy di eliminazione del database per l'ambiente precedente
Per aggiornare la policy di eliminazione del database per l'ambiente precedente, completa i seguenti passaggi:
- Apri la console Elastic Beanstalk per l'ambiente precedente.
- Nel pannello di navigazione, scegli Configurazione.
- In Rete e database, scegli Modifica.
- In Impostazioni database, imposta Policy di eliminazione del database su Mantieni.
- Scegli Applica. Il salvataggio della modifica apportata alla configurazione può richiedere alcuni minuti.
Importante: procedi al passaggio successivo solo dopo che la modifica apportata alla voce Policy di eliminazione del database è stata applicata all'ambiente precedente.
Separa l'istanza RDS dall'ambiente precedente
Per separare l'istanza RDS dall'ambiente precedente, completa i seguenti passaggi:
- Apri la console Elastic Beanstalk per l'ambiente precedente.
- Nel pannello di navigazione, scegli Configurazione.
- In Rete e database, scegli Modifica.
- In Impostazioni database, verifica che la Policy di eliminazione del database sia impostata su Mantieni.
- Nella sezione Connessione database, scegli Disaccoppia database.
- Scegli Applica.
Nota: durante la separazione del database, il database rimane operativo. Di solito, sono necessari meno di 5 minuti per separare un database.
Termina l'ambiente precedente
Dopo avere convalidato la funzionalità del nuovo ambiente, termina l'ambiente Elastic Beanstalk precedente.
Quando termini l'ambiente, tutte le risorse di Elastic Beanstalk vengono eliminate ad eccezione dell'istanza database e del gruppo di sicurezza RDS creato da Elastic Beanstalk. Quando crei un'istanza RDS nell’ambito di un ambiente Elastic Beanstalk con carico bilanciato, Elastic Beanstalk crea un gruppo di sicurezza Elastic Load Balancing (ELB). Elastic Beanstalk crea anche un gruppo di sicurezza Amazon Elastic Compute Cloud (Amazon EC2) da collegare alle istanze EC2 nell'ambiente. Inoltre, Elastic Beanstalk crea un gruppo di sicurezza RDS da collegare all'istanza RDS. Per consentire il traffico in entrata sulla porta 3306 dal gruppo di sicurezza EC2, Elastic Beanstalk aggiunge una regola in entrata del gruppo di sicurezza al gruppo di sicurezza RDS.
Quando separi il database, Elastic Beanstalk non rimuove la regola in entrata del gruppo di sicurezza. La regola in entrata del gruppo di sicurezza fa riferimento al gruppo di sicurezza EC2 del gruppo di sicurezza RDS creato da Elastic Beanstalk. Quando termini l'ambiente, Elastic Beanstalk non può terminarlo perché il gruppo di sicurezza RDS separato fa ancora riferimento al gruppo di sicurezza EC2.
Per terminare l'ambiente Elastic Beanstalk, completa i seguenti passaggi:
- Apri la console Elastic Beanstalk per l'ambiente precedente.
- Nel pannello di navigazione, scegli Configurazione.
- In Traffico e dimensionamento delle istanze, annota il nome del gruppo di sicurezza EC2 che si trova in Gruppi di sicurezza EC2.
- Apri la console Amazon EC2.
- Nel pannello di navigazione, scegli Gruppo di sicurezza.
- Nella pagina Gruppi di sicurezza, inserisci il nome del gruppo di sicurezza EC2.
- Prendi nota dell'ID del gruppo di sicurezza. Il formato è simile a "sg-xxxxxxxx".
- Apri la console Amazon RDS.
- Nel pannello di navigazione, scegli Database, quindi seleziona il nome dell'istanza database.
- In Connettività e sicurezza, prendi nota delle sottoreti, dei gruppi di sicurezza e degli endpoint. Quindi, alla voce Sicurezza, scegli il nome del gruppo di sicurezza.
- Dopo l'apertura della pagina dei Gruppi di sicurezza nella console EC2, seleziona il gruppo di sicurezza.
- Per Regole in entrata, scegli Modifica regole in entrata.
- Identifica la regola del gruppo di sicurezza.
- Seleziona Elimina, quindi scegli Salva regole.
- Apri la console Elastic Beanstalk per l'ambiente precedente.
- Seleziona Operazioni, quindi scegli Termina ambiente. Quando separi il database, Elastic Beanstalk non rimuove la regola in entrata del gruppo di sicurezza. La regola in entrata del gruppo di sicurezza fa riferimento al gruppo di sicurezza EC2 del gruppo di sicurezza RDS creato da Elastic Beanstalk.
- Argomenti
- Compute
- Lingua
- Italiano
