Ricevi notifiche sulla migrazione live

Il server di metadati fornisce informazioni sull'istanza di una macchina virtuale (VM) le opzioni e le impostazioni di pianificazione, tramite l'elenco della directory dei metadati scheduling/ e maintenance-event chiave di metadati. Puoi utilizzare queste chiavi dei metadati per scoprire di più sulla pianificazione di una VM nonché per ricevere una notifica quando sta per verificarsi un evento di manutenzione.

Per impostazione predefinita, tutte le VM (tranne Z3) sono impostate su live Migrate e il server metadati riceve avvisi di eventi di manutenzione prima che un'istanza VM è in fase di migrazione live. Tuttavia, se scegli un'opzione di pianificazione diversa, di manutenzione e il comportamento della VM potrebbe variare. Per scoprire di più su per gli eventi di manutenzione e il comportamento delle VM durante gli eventi, consulta Panoramica della manutenzione dell'host.

Prima di iniziare

  • Per le VM Windows Server, utilizza PowerShell 3.0 o versioni successive. Ti consigliamo di utilizzare ctrl+v per incollare i blocchi di codice copiati.
  • Se non l'hai già fatto, configura l'autenticazione. Autenticazione è Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione Compute Engine come segue.

    Per utilizzare gli Python esempi in questa pagina in una località dell'ambiente di sviluppo, installare e inizializzare gcloud CLI quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per ulteriori informazioni, vedi Set up authentication for a local development environment.

Ricevi notifiche sulla migrazione live

Puoi scoprire quando si verifica un evento di manutenzione eseguendo una query sul maintenance-event chiave di metadati periodicamente.

La chiave dei metadati maintenance-event viene compilata per eventi di manutenzione solo se hai impostato l'opzione di pianificazione della VM su migrate o se alla VM è collegata una GPU.

Il valore di questa chiave di metadati cambia 60 secondi prima di un evento di manutenzione dando al codice dell'applicazione un modo per attivare le attività che eseguire prima di un evento di manutenzione, come il backup dei dati o l'aggiornamento dei log.

In sintesi, Compute Engine fornisce un avviso di 60 secondi solo se:

  • Hai impostato opzioni di disponibilità per eseguire la migrazione live durante un evento di manutenzione.

  • Hai eseguito una query sulla chiave dei metadati maintenance-event almeno una volta dall'inizio è l'ultimo evento di manutenzione.

    • Se non hai mai eseguito query su maintenance-event chiave dei metadati o non hanno eseguito query sulla chiave dei metadati dall'ultima migrazione. Compute Engine presuppone che la VM non richieda informazioni avviso di eventi di manutenzione. L'evento di manutenzione viene avviato immediatamente e ignora l'avviso di 60 secondi.

    • Se non vuoi saltare l'avviso dei 60 secondi, assicurati che il codice client esegue una query sulla chiave dei metadati maintenance-event almeno una volta tra gli eventi di migrazione. Devi eseguire una query direttamente sulla chiave dei metadati maintenance-event per Compute Engine per determinare se stai guardando questa chiave di metadati. L'esecuzione di query su metadati di livello superiore non attiva il preavviso.

Per le VM con GPU collegate, il valore cambia 60 minuti prima Le VM vengono arrestate per darti il tempo di arrestarsi e riavviarsi il giorno a un altro host. La migrazione live delle VM con GPU collegate non viene eseguita, ma viene è stata interrotta e riavviata facoltativamente. Per saperne di più, vedi Gestione degli eventi di manutenzione dell'host GPU.

Per un insieme specifico di VM, le opzioni di manutenzione delle VM sono più flessibili. A Per saperne di più, consulta Monitorare e pianificare un evento di manutenzione dell'host.

Esegui una query sulla chiave dei metadati dell'evento di manutenzione

VM Linux

Per eseguire una query sulla chiave di metadati maintenance-event sulle VM Linux, esegui questo comando:

user@myinst:~$ curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"

L'output è simile al seguente:

NONE

Puoi utilizzare anche wait-for-change . Con questa opzione specificata, la richiesta restituisce un output solo quando un evento di manutenzione sta per iniziare e terminare.

user@myinst:~$ curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event?wait_for_change=true -H "Metadata-Flavor: Google"

VM Windows

Per eseguire una query sulla chiave di metadati maintenance-event sulle VM Windows, esegui questo comando:

PS C:\> 
$value = (Invoke-RestMethod `
         -Headers @{'Metadata-Flavor' = 'Google'} `
         -Uri "http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event")
$value

L'output è simile al seguente:

NONE

Puoi utilizzare anche wait-for-change . Con questa opzione specificata, la richiesta restituisce un output solo quando un evento di manutenzione sta per iniziare e terminare.

PS C:\> 
$value = (Invoke-RestMethod `
         -Headers @{'Metadata-Flavor' = 'Google'} `
         -Uri "http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event?wait_for_change=true")
$value

Python

Puoi utilizzare la chiave di metadati maintenance-event con in attesa di aggiornamenti per notificare gli script e le applicazioni quando si verifica un evento di manutenzione che sta per iniziare e terminare. In questo modo puoi automatizzare tutte le azioni da eseguire prima o dopo l'evento.

Il seguente esempio Python fornisce un esempio di come puoi implementare insieme queste due funzionalità.


import time
from typing import Callable, NoReturn, Optional

import requests


METADATA_URL = "http://metadata.google.internal/computeMetadata/v1/"
METADATA_HEADERS = {"Metadata-Flavor": "Google"}


def wait_for_maintenance(callback: Callable[[Optional[str]], None]) -> NoReturn:
    """
    Start an infinite loop waiting for maintenance signal.

    Args:
        callback: Function to be called when a maintenance is scheduled.

    Returns:
        Never returns, unless there's an error.
    """
    url = METADATA_URL + "instance/maintenance-event"
    last_maintenance_event = None
    last_etag = "0"

    while True:
        r = requests.get(
            url,
            params={"last_etag": last_etag, "wait_for_change": True},
            headers=METADATA_HEADERS,
        )

        # During maintenance the service can return a 503, so these should
        # be retried.
        if r.status_code == 503:
            time.sleep(1)
            continue
        r.raise_for_status()

        last_etag = r.headers["etag"]

        if r.text == "NONE":
            maintenance_event = None
        else:
            maintenance_event = r.text

        if maintenance_event != last_maintenance_event:
            last_maintenance_event = maintenance_event
            callback(maintenance_event)


def maintenance_callback(event: Optional[str]) -> None:
    """
    Example callback function to handle the maintenance event.

    Args:
        event: details about scheduled maintenance.
    """
    if event:
        print(f"Undergoing host maintenance: {event}")
    else:
        print("Finished host maintenance")


def main():
    wait_for_maintenance(maintenance_callback)


if __name__ == "__main__":
    main()

Rivedi gli output

Il valore iniziale e predefinito della chiave di metadati maintenance-event è NONE.

  • Per le VM con GPU collegate, durante maintenance event (evento di manutenzione) il valore modifiche da NONE a TERMINATE_ON_HOST_MAINTENANCE. Questo viene aggiornato 60 minuti prima dell'inizio dell'evento di interruzione.

  • Per le VM non GPU con un'opzione di pianificazione di migrate, il valore Il valore di maintenance-event cambia come segue:

    1. All'inizio dell'evento di migrazione, il valore cambia da NONE a MIGRATE_ON_HOST_MAINTENANCE. Questo valore viene aggiornato 60 secondi prima inizia l'evento di interruzione.
    2. Per tutta la durata dell'evento e durante il funzionamento dell'istanza VM eseguita la migrazione live, il valore rimane MIGRATE_ON_HOST_MAINTENANCE.
    3. Al termine dell'evento di manutenzione, il valore torna a NONE.
  • Per le VM single-tenant, durante un evento di manutenzione dell'host, maintenance-event il valore chiave dei metadati non cambia e rimane NONE dall'inizio alla alla fine dell'evento.

Passaggi successivi