Esegui un cambio di deployment blu/verde

Dopo aver testato e convalidato l'ambiente verde, avvii un switchover per convertire l'ambiente verde nel nuovo ambiente di produzione di lettura e scrittura.

Prima di iniziare

Prima di avviare un failover, assicurati di disporre delle autorizzazioni necessarie e che il deployment sia pronto per il cutover.

Ruoli e autorizzazioni richiesti

Per ottenere le autorizzazioni necessarie per eseguire un failover, chiedi all'amministratore di concederti il seguente ruolo IAM nel progetto:

  • Amministratore Cloud SQL (roles/cloudsql.admin)

Per i ruoli personalizzati, assicurati di disporre delle seguenti autorizzazioni:

  • cloudsql.blueGreenDeployments.switchover
  • cloudsql.blueGreenDeployments.get
  • cloudsql.instances.switchover
  • cloudsql.operations.get

Per saperne di più sui ruoli e sulle autorizzazioni IAM in Cloud SQL, consulta Ruoli e autorizzazioni.

Verifica pre-switchover

Prima di avviare un failover, verifica le seguenti condizioni:

  1. Stato del deployment:il deployment deve essere nello stato SWITCHOVER_READY.
  2. Convalida del workload:completa tutti i test e la convalida sull'istanza di staging verde.
  3. Ritardo di replica basso:assicurati che il ritardo di replica tra blu e verde sia minimo per ridurre il tempo di cutover.

Come funziona il cambio

Quando avvii un cambio di ruolo, Cloud SQL esegue la seguente sequenza automatica:

  1. Convalida pre-switchover:prima dell'operazione di switchover, Cloud SQL verifica che la replica non sia interrotta ed esegue una serie di controlli di configurazione per assicurarsi che il deployment sia pronto.
  2. Esecuzione del workflow di switchover:durante l'esecuzione del workflow, Cloud SQL prepara le istanze per il cutover. Se il ritardo di replica è troppo elevato o se una transazione attiva blocca il cutover, l'operazione di switchover non va a buon fine e l'ambiente blu di produzione rimane online.
  3. Reindirizzamento del traffico: Cloud SQL scambia gli endpoint di connessione tra le istanze blu e verde.
  4. Conversione dei ruoli:l'istanza verde diventa l'istanza di lettura e scrittura di produzione attiva e l'istanza blu diventa un'istanza di lettura e scrittura autonoma.

Durante il cambio, le connessioni delle applicazioni subiscono una breve interruzione (in genere in secondi) prima di riconnettersi automaticamente all'istanza di produzione aggiornata. Il tempo di inattività del cambio varia in base all'edizione di Cloud SQL:

  • Versione Cloud SQL Enterprise Plus:il tempo di inattività del cambio di ruolo è in genere inferiore al secondo.
  • Cloud SQL Enterprise:il tempo di inattività del cambio di ruolo è in genere inferiore a 60 secondi, a seconda del workload e del ritardo di replica. Non sono necessarie modifiche alla configurazione dell'applicazione o alla stringa di connessione.

Stati del ciclo di vita del cambio

Prima, durante e dopo un cambio di sistema, il deployment passa attraverso i seguenti stati nel campo di risposta state:

  • SWITCHOVER_READY: la replica logica da blu a verde è integra e il deployment è pronto per il cambio. Lo stato di SWITCHOVER_READY dipende solo dall'integrità della replica. Cloud SQL non valuta il ritardo di replica quando imposta questo stato.
  • SWITCHOVER_NOT_READY: il deployment è stato eseguito, ma non è possibile avviare il cambio. Ciò si verifica se la replica logica è interrotta, in pausa o arrestata oppure se si è verificato un errore del nodo sottostante. Cloud SQL non valuta il ritardo di replica quando imposta questo stato. Ispeziona errorDetail e risolvi l'errore prima di tentare il failover.
  • SWITCHOVER_IN_PROGRESS: il comando di switchover è in esecuzione. Cloud SQL scambia gli endpoint di connessione e converte il verde nell'istanza di lettura e scrittura di produzione.
  • SWITCHOVER_COMPLETED: il passaggio è stato completato correttamente. L'istanza verde è ora l'istanza di database di produzione attiva che gestisce il traffico di lettura e scrittura, mentre l'istanza blu viene mantenuta come istanza di lettura e scrittura autonoma finché non elimini il deployment.

Best practice prima del cambio

  • Pianifica durante le finestre di traffico ridotto:anche se il tempo di inattività è minimo (in genere in secondi), avvia il failover durante i periodi di bassa attività di scrittura (ad esempio, le ore non di punta o i periodi di manutenzione in cui le query di scrittura al secondo [QPS] sono al minimo). In questo modo si riduce al minimo il ritardo di replica e il rischio di transazioni annullate.
  • Verifica il ritardo di replica:assicurati che sia minimo prima di iniziare il failover. La descrizione di un deployment blu/verde non mostra il ritardo di replica e Cloud SQL non lo controlla prima dell'operazione di switchover. Tuttavia, durante l'esecuzione del flusso di lavoro, il cambio non riesce se il ritardo di replica è troppo elevato. Per monitorare il ritardo di replica, controlla le metriche di Cloud Monitoring (ad esempio replica_lag) o esamina lo stato della replica direttamente sull'istanza verde. Per saperne di più, consulta Ritardo di replica.
  • Controlla le transazioni attive:assicurati che le operazioni DDL a esecuzione prolungata o le scritture batch siano completate prima di iniziare il cambio.

Avviare un trasferimento

Avvia l'operazione di switchover utilizzando la console Google Cloud , gcloud CLI o l'API Cloud SQL Admin:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Nella scheda Stato del deployment blu/verde, fai clic su Dettagli per aprire la pagina Panoramica del deployment.
  4. Fai clic su Commuta deployment.
  5. Nella finestra di dialogo Differenze tra le impostazioni delle istanze, esamina le differenze tra le impostazioni delle istanze Origine e Destinazione, quindi fai clic su Continua per avviare il cambio.

gcloud

Esegui il comando blue-green-deployments switchover:

gcloud beta sql blue-green-deployments switchover DEPLOYMENT_NAME \
  --region=REGION \
  --async

Il completamento delle operazioni di switchover può richiedere diversi minuti. Potresti visualizzare un messaggio che indica che l'operazione sta richiedendo più tempo del previsto. Puoi ignorare questo messaggio o eseguire il comando gcloud sql operations wait per chiuderlo e attendere il completamento dell'operazione:

gcloud sql operations wait OPERATION_ID

Per controllare lo stato dell'operazione di switchover, esegui il comando gcloud sql operations describe:

gcloud sql operations describe OPERATION_ID

Sostituisci quanto segue:

  • DEPLOYMENT_NAME: il nome del deployment blue-green.
  • REGION: la regione Google Cloud in cui è stato creato il deployment.
  • OPERATION_ID: l'ID dell'operazione di switchover.

REST v1

Invia una richiesta POST al metodo blueGreenDeployments.switchover:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/
  locations/REGION/
  blueGreenDeployments/DEPLOYMENT_NAME:switchover

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo Google Cloud progetto.
  • REGION: la regione Google Cloud in cui è stato creato il deployment.
  • DEPLOYMENT_NAME: il nome del deployment blue-green.

REST v1beta4

Invia una richiesta POST al metodo blueGreenDeployments.switchover:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/
  locations/REGION/
  blueGreenDeployments/DEPLOYMENT_NAME:switchover

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo Google Cloud progetto.
  • REGION: la regione Google Cloud in cui è stato creato il deployment.
  • DEPLOYMENT_NAME: il nome del deployment blue-green.

Monitoraggio post-switchover

Al termine del cambio:

  1. Verifica che l'applicazione si riconnetta correttamente e che le operazioni del database di produzione riprendano.
  2. Monitora il throughput delle query, i log degli errori e lo stato della replica nella nuova istanza di produzione.
  3. Mantieni intatta l'istanza autonoma blu durante la finestra di verifica iniziale post-upgrade. Dopo aver confermato la stabilità, elimina il deployment. Per saperne di più, consulta la sezione Elimina un deployment blue-green.

Passaggi successivi