Utilizzo della soluzione blu/verde Neptune per l'esecuzione degli aggiornamenti blu/verde - Amazon Neptune

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

Utilizzo della soluzione blu/verde Neptune per l'esecuzione degli aggiornamenti blu/verde

Gli aggiornamenti del motore Amazon Neptune possono prevedere tempi di inattività delle applicazioni perché il database non è disponibile durante l'installazione e la verifica degli aggiornamenti. Questo vale indipendentemente dal fatto che vengano avviati manualmente o automaticamente.

Neptune offre una soluzione di implementazione blu/verde che è possibile eseguire usando uno stack AWS CloudFormation che riduce in modo significativo tali tempi di inattività. Crea un ambiente di gestione temporanea verde sincronizzato con l'ambiente di produzione blu. È quindi possibile aggiornare l'ambiente di gestione temporanea per eseguire un aggiornamento della versione secondaria o principale del motore, una modifica del modello dei dati del grafo o un aggiornamento del sistema operativo e testare il risultato. Infine, puoi effettuare rapidamente lo switchover all'ambiente di produzione, con tempi di inattività minimi.

La soluzione blu/verde Neptune prevede due fasi, come illustrato in questo diagramma:

Diagramma di flusso generale della strategia di implementazione blu-verde

La fase 1 crea un cluster database verde identico al cluster di produzione

La soluzione crea un cluster database con un identificatore di implementazione blu/verde univoco e con la stessa topologia di cluster del cluster di produzione. Ovvero ha lo stesso numero e dimensioni di istanze database, gli stessi gruppi di parametri e tutte le stesse configurazioni del cluster database di produzione (blu), tranne per il fatto che è stato aggiornato alla versione del motore di destinazione specificata, che deve essere successiva alla versione del motore corrente (blu). È possibile specificare una versione secondaria e una versione principale del motore per la destinazione. Se necessario, la soluzione eseguirà tutti gli aggiornamenti intermedi al fine di raggiungere la versione del motore di destinazione specificata. Questo nuovo cluster diventa l'ambiente di gestione temporanea verde.

La fase 2 configura la sincronizzazione continua dei dati

Dopo che l'ambiente verde è stato completamente preparato, la soluzione imposta la replica continua tra il cluster di origine (blu) e il cluster di destinazione (verde) utilizzando i flussi Neptune. Quando la differenza di replica tra di essi raggiunge lo zero, l'ambiente di gestione temporanea è pronto per il test. A quel punto è necessario sospendere la scrittura sul cluster blu per evitare ulteriori ritardi di replica.

La versione del motore di destinazione potrebbe includere nuove funzionalità o dipendenze che influiscono sulle applicazioni. Controlla la pagina di rilascio del motore di destinazione e le pagine dei rilasci del motore intermedi nella sezione Rilasci del motore per informazioni su cosa è cambiato rispetto alla versione corrente del motore. È consigliabile eseguire test di integrazione o verificare manualmente le applicazioni nel cluster verde prima di promuoverle all'ambiente di produzione.

Dopo aver testato e valutato le modifiche nel cluster verde, è sufficiente cambiare l'endpoint del database nelle applicazioni dal cluster blu a quello verde.

Dopo lo switchover, la soluzione blu/verde Neptune non elimina l'ambiente di produzione blu precedente. Potrai continuare ad accedervi per ulteriori convalide e test, se necessario. Vengono addebitate le spese di fatturazione standard per le relative istanze fino a quando non le elimini. La soluzione blu/verde utilizza anche altri servizi AWS, i cui costi vengono fatturati ai prezzi normali. Le informazioni relative all'eliminazione della soluzione quando non è più necessaria sono riportate nella sezione Pulizia

Prerequisiti per l'esecuzione dello stack blu/verde Neptune

Prima di avviare lo stack blu/verde Neptune:

  • Assicurati di abilitare i flussi Neptune nel cluster di produzione (blu).

  • Tutte le istanze del cluster blu devono essere nello stato disponibile. Puoi controllare gli stati delle istanze nella console Neptune o usando l'API describe-db-instances.

  • Tutte le istanze devono inoltre essere sincronizzate con il gruppo di parametri del cluster database.

  • La soluzione blu/verde Neptune richiede un endpoint VPC DynamoDB nel VPC in cui si trova il cluster blu. Consulta Utilizzo di endpoint Amazon VPC per accedere a DynamoDB.

  • Esegui la soluzione quando il carico di lavoro di scrittura sul cluster database di produzione blu è il più leggero possibile. Evita, ad esempio, di eseguire la soluzione nel corso di un caricamento in blocco o quando è probabile che si verifichi un numero elevato di operazioni di scrittura per qualsiasi altro motivo.

Utilizzo di un modello AWS CloudFormation per l'esecuzione della soluzione blu/verde Neptune

È possibile usare AWS CloudFormation per implementare la soluzione blu/verde Neptune. Il modello CloudFormation crea un'istanza Amazon EC2 nello stesso VPC del database Neptune di origine blu, installa la soluzione in quella posizione e la esegue. Puoi monitorarne l'avanzamento nei file di log CloudWatch, come spiegato in Monitoraggio dell'avanzamento.

Puoi usare questi collegamenti per verificare il modello di soluzione o selezionare il pulsante Avvia lo stack per avviarlo nella console AWS CloudFormation:

Nella console scegli la regione AWS in cui desideri eseguire la soluzione dal menu a discesa nella parte superiore destra della finestra.

Imposta i parametri dello stack come segue:

  • DeploymentID: identificatore univoco per ogni implementazione blu/verde Neptune.

    Viene utilizzato come identificatore del cluster database verde e come prefisso per assegnare i nomi alle nuove risorse create durante l'implementazione.

  • NeptuneSourceClusterId: identificatore del cluster database blu da aggiornare.

  • NeptuneTargetClusterVersion:: versione del motore Neptune a cui si desidera aggiornare il cluster database blu.

    Questo valore deve essere maggiore rispetto a quello della versione del motore corrente del cluster database blu.

  • DeploymentMode: indica se si tratta di una nuova implementazione o di un tentativo di riprendere un'implementazione precedente. Se utilizzi lo stesso DeploymentID di un'implementazione precedente, imposta DeploymentMode su resume.

    I valori validi sono new (predefinito) e resume.

  • GraphQueryType: tipo di dati del grafo per il database.

    I valori validi sono propertygraph (predefinito) e rdf.

  • SubnetId: ID di sottorete dello stesso VPC in cui si trova il cluster database blu. Consulta Connessione a un cluster database Neptune da un'istanza Amazon EC2 nello stesso VPC.

    Specifica l'ID di una sottorete pubblica per stabilire una connessione SSH all'istanza tramite EC2 Connect.

  • InstanceSecurityGroup: gruppo di sicurezza per l'istanza Amazon EC2.

    Il gruppo di sicurezza deve avere accesso al cluster database blu e devi poter accedere all'istanza tramite SSH. Per informazioni, consultare Crea un gruppo di sicurezza utilizzando la console VPC.

Attendi che lo stack sia completo. Al termine, la soluzione verrà avviata. Potrai quindi monitorare il processo di implementazione utilizzando i file di log CloudWatch come descritto nella sezione successiva.

Monitoraggio dell'avanzamento dell'implementazione blu/verde Neptune

Per monitorare lo stato di avanzamento della soluzione blu/verde Neptune, accedi alla console CloudWatch e osserva i log nel gruppo di file di log CloudWatch per /aws/neptune/(Neptune Blue/Green deployment ID). Puoi trovare un collegamento ai file di log CloudWatch negli output dello stack AWS CloudFormation della soluzione:

Screenshot dell'output dello stack AWS CloudFormation blu/verde

Se hai specificato una sottorete pubblica come parametro dello stack, puoi anche accedere tramite SSH all'istanza Amazon EC2 creata come parte dello stack e fare riferimento al file di log in /var/log/cloud-init-output.log.

Il file di log mostra le azioni intraprese dalla soluzione blu/verde Neptune, come mostrato in questo screenshot:

Screenshot della schermata del file di log blu/verde Neptune

I messaggi del file di log mostrano lo stato di sincronizzazione tra i cluster blu e verde:

Screenshot dei messaggi del file di log della soluzione blu/verde Neptune

Il processo di sincronizzazione verifica il ritardo di replica calcolando la differenza tra il flusso eventID più recente nel cluster blu e il checkpoint di replica presente nella tabella dei checkpoint DynamoDB creata dallo stack di replica Neptune-Neptune. Utilizzando questi messaggi, è possibile monitorare la differenza di replica corrente.

Passaggio dal cluster blu di produzione al cluster verde aggiornato

Prima di promuovere il cluster verde all'ambiente di produzione, assicurati che la differenza di commit tra il cluster blu e il cluster verde sia pari a zero, quindi disabilita tutto il traffico di scrittura sul cluster blu. Se si continua a scrivere sul cluster blu durante il passaggio dell'endpoint del database al cluster verde potrebbe verificarsi un danneggiamento dei dati causato dalla scrittura di dati parziali su entrambi i cluster. Potrebbe non essere ancora il momento di disabilitare il traffico di lettura.

Se hai abilitato l'autenticazione IAM nel cluster di origine (blu), assicurati di aggiornare tutte le policy IAM utilizzate nelle tue applicazioni affinché puntino al cluster verde (per un esempio di tale policy, consulta policy di accesso senza restrizioni).

Dopo aver disabilitato il traffico di scrittura, attendi che termini la replica, quindi abilita il traffico di scrittura sul cluster verde (ma non sul cluster blu). Passa anche il traffico di lettura dal cluster blu a quello verde.

Pulizia dopo il completamento della soluzione blu/verde Neptune

Dopo aver promosso il cluster di gestione temporanea (verde) all'ambiente di produzione, effettua la pulizia delle risorse create dalla soluzione blu/verde Neptune:

  • Elimina l'istanza Amazon EC2 creata per eseguire la soluzione.

  • Elimina i modelli AWS CloudFormation per la replica basata su flussi Neptune che ha mantenuto il cluster verde sincronizzato con il cluster blu. Quello principale ha il nome dello stack che hai specificato in precedenza e uno è costituito dall'ID di implementazione seguito da "-replication", ovvero (DeploymentID)-replication.

L'eliminazione dei modelli AWS CloudFormation non elimina i cluster stessi. Dopo aver verificato che il cluster verde funzioni come previsto, puoi facoltativamente acquisire uno snapshot prima di eliminare manualmente il cluster blu.

Best practice per la soluzione blu/verde Neptune

  • Prima di procedere con lo switchover del cluster verde all'ambiente di produzione, è consigliabile verificarne accuratamente il corretto funzionamento. Verifica la coerenza dei dati e la configurazione del database. È possibile che alcune delle nuove versioni del motore richiedano anche aggiornamenti del client. Controlla le note di rilascio della versione del motore prima di effettuare l'aggiornamento. È opportuno testare tutti questi aspetti negli ambienti di sviluppo, test e pre-produzione prima di avviare un aggiornamento blu/verde in produzione.

  • È preferibile effettuare il passaggio dal server blu a quello verde durante la finestra di manutenzione.

  • Per garantire che tutto funzioni correttamente dopo l'aggiornamento e la sincronizzazione, è consigliabile conservare il cluster originale per un certo periodo di tempo prima di eliminarlo. Potrebbe rivelarsi utile in caso di problemi imprevisti.

  • Evita operazioni di scrittura pesanti come i caricamenti in blocco durante l'esecuzione della soluzione blu/verde Neptune, poiché possono causare ritardi di replica che introducono tempi di inattività significativi. Idealmente, il tempo che intercorre tra la disattivazione delle scritture sul cluster blu e l'attivazione per il cluster verde è di pochi istanti.

Risoluzione dei problemi relativi alla soluzione blu/verde Neptune

Errori generati dalla soluzione blu/verde Neptune
  • Cluster with id = (blue_green_deployment_id) already exists: è presente un cluster esistente con identificatore (blue_green_deployment_id).

    Specifica un nuovo ID di implementazione o imposta la modalità di implementazione su resume se il cluster è stato creato in un'esecuzione blu/verde Neptune precedente.

  • Streams should be enabled on the source Cluster for Blue Green Deployment: abilita i flussi Neptune nel cluster blu (origine).

  • No Bulkload should be in progress on source cluster: (cluster_id): la soluzione blu/verde Neptune termina se rileva un caricamento in blocco in corso.

    Questo per garantire che il processo di sincronizzazione possa recuperare il ritardo con le scritture effettuate. Evita o annulla qualsiasi operazione di caricamento in blocco in corso prima di avviare la soluzione blu/verde Neptune.

  • Blue Green deployment requires instances to be in sync with db cluster parameter group: qualsiasi modifica al gruppo di parametri del cluster deve essere sincronizzata in tutto il cluster database. Per informazioni, consultare Gruppi di parametri di Amazon Neptune.

  • Invalid target engine version for Blue Green Deployment: il rilascio del motore di destinazione deve essere elencato come attivo in Rilasci del motore per Amazon Neptune e deve essere successivo al rilascio corrente del motore del cluster di origine (blu).