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?

7 minuti di lettura
0

Dispongo di un'istanza database di 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:

  1. Crea uno snapshot del database Amazon RDS.
  2. Proteggi la tua istanza database RDS dall'eliminazione.
  3. Crea un nuovo ambiente Elastic Beanstalk.
  4. Esegui una implementazione blu/verde.
  5. Aggiorna la policy di eliminazione del database per il precedente ambiente.
  6. Separa l'istanza RDS dal precedente ambiente.
  7. Termina il precedente ambiente.

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, perderai i dati poiché l'ambiente elimina l'istanza database. Per ulteriori informazioni, consulta la sezione Using Elastic Beanstalk with Amazon RDS.

Soluzione

Crea uno snapshot di database della tua istanza

Per creare uno snapshot di database della tua istanza, completa i seguenti passaggi:

  1. Apri la console Elastic Beanstalk.
  2. Crea il tuo ambiente Elastic Beanstalk.
  3. Copia l'ID dell'ambiente.
  4. Apri la console Amazon RDS.
  5. Nel riquadro di navigazione, scegli Database.
  6. Inserisci l'ID dell'ambiente nel campo di ricerca, quindi seleziona il database.
  7. Crea uno snapshot di database.

Proteggi la tua istanza database dall'eliminazione

Per proteggere la tua istanza database dall'eliminazione, completa i seguenti passaggi:

  1. Apri la console Amazon RDS.
  2. Nel riquadro di navigazione, scegli Database.
  3. Seleziona il tuo database, quindi scegli Modifica.
  4. In Protezione da eliminazione, seleziona Abilita protezione da eliminazione, quindi scegli Continua.
  5. Per Pianificazione delle modifiche, scegli Applica immediatamente, quindi scegli Modifica cluster.
  6. 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:

  1. Crea un nuovo ambiente Elastic Beanstalk.
  2. Connetti il nuovo ambiente Elastic Beanstalk all'istanza database esistente del precedente ambiente Elastic Beanstalk. Per ulteriori informazioni, consulta la sezione Launching and connecting to an external Amazon RDS instance in a default virtual private cloud (VPC).
  3. 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:

  1. Apri la console Elastic Beanstalk per il nuovo ambiente.
  2. Scambia gli URL degli ambienti precedenti e nuovi di Elastic Beanstalk. Per ulteriori informazioni, consulta la sezione Blue/green deployments with Elastic Beanstalk.
  3. Verifica che l'URL del nuovo ambiente risponda e che l'applicazione funzioni correttamente.

Importante: termina il precedente ambiente Elastic Beanstalk 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 il precedente ambiente

Per aggiornare la policy di eliminazione del database per il precedente ambiente, completa i seguenti passaggi:

  1. Apri la console Elastic Beanstalk per il precedente ambiente.
  2. Nel pannello di navigazione, scegli Configurazione.
  3. In Rete e database, scegli Modifica.
  4. In Impostazioni database, imposta la Policy di eliminazione del database su Mantieni.
  5. Scegli Applica. Il salvataggio della modifica alla configurazione può richiedere alcuni minuti.

Importante: procedi al passaggio successivo solo dopo che la modifica della Policy di eliminazione del database è stata applicata al precedente ambiente.

Separa l'istanza RDS dal precedente ambiente

Per separare l'istanza RDS dal precedente ambiente, completa i seguenti passaggi:

  1. Apri la console Elastic Beanstalk per il precedente ambiente.
  2. Nel pannello di navigazione, scegli Configurazione.
  3. In configurazione di Rete e database, scegli Modifica.
  4. In Impostazioni database, verifica che la Policy di eliminazione del database sia impostata su Mantieni.
  5. Nella sezione Connessione database, scegli Disaccoppia database.
  6. 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 il precedente ambiente

Dopo avere convalidato la funzionalità del nuovo ambiente, termina il precedente ambiente Elastic Beanstalk.

Quando si termina 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 si crea 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 si separa il database, Elastic Beanstalk non rimuove la regola in entrata del gruppo di sicurezza. Tale regola in entrata del gruppo di sicurezza fa riferimento al gruppo di sicurezza EC2 del gruppo di sicurezza RDS creato da Elastic Beanstalk. Quando si termina l'ambiente, Elastic Beanstalk non può terminare l'ambiente perché il gruppo di sicurezza RDS di separazione fa ancora riferimento al gruppo di sicurezza EC2.

Per terminare l'ambiente Elastic Beanstalk, completa i seguenti passaggi:

  1. Apri la console Elastic Beanstalk per il precedente ambiente.
  2. Nel pannello di navigazione, scegli Configurazione.
  3. In Traffico e dimensionamento delle istanze, annota il nome del gruppo di sicurezza EC2 che si trova in Gruppi di sicurezza EC2.
  4. Apri la console Amazon EC2.
  5. Nel riquadro di navigazione, scegli Gruppo di sicurezza.
  6. Nella pagina Gruppi di sicurezza, inserisci il nome del gruppo di sicurezza EC2.
  7. Prendi nota dell'ID del gruppo di sicurezza. Il formato è simile a "sg-xxxxxxxx".
  8. Apri la console Amazon RDS.
  9. Nel riquadro di navigazione, scegli Database, quindi seleziona il nome della tua istanza database.
  10. In Connettività e sicurezza, prendi nota delle sottoreti, dei gruppi di sicurezza e degli endpoint. Quindi, in Sicurezza, scegli il nome del gruppo di sicurezza.
  11. Dopo l'apertura della pagina dei Gruppi di sicurezza nella console EC2, seleziona il gruppo di sicurezza.
  12. Per Regole in entrata, scegli Modifica regole in entrata.
  13. Identifica la regola del gruppo di sicurezza.
  14. Scegli Elimina, quindi scegli Salva regole.
  15. Apri la console Elastic Beanstalk per il precedente ambiente.
  16. Scegli Azioni, quindi scegli Termina ambiente. Quando si separa 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.
AWS UFFICIALE
AWS UFFICIALEAggiornata 4 mesi fa