Accelera lo scale out con le VM sospese e arrestate


Questo documento spiega come funziona il pool in standby di istanze di macchine virtuali (VM) sospese e arrestate e come puoi utilizzare il pool in standby per accelerare lo scale out di un gruppo di istanze gestite (MIG).

Prima di iniziare

  • Esamina la pagina introduttiva sulle VM sospese e arrestate in un MIG.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. Terraform

        Per utilizzare gli esempi di Terraform in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.

        1. Install the Google Cloud CLI.

        2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        3. To initialize the gcloud CLI, run the following command:

          gcloud init
        4. If you're using a local shell, then create local authentication credentials for your user account:

          gcloud auth application-default login

          You don't need to do this if you're using Cloud Shell.

          If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

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

        REST

        Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Utilizzare l'API MIG per la scalabilità automatica

Ti consigliamo di utilizzare il gestore della scalabilità automatica di Compute Engine per la scalabilità automatica del tuo MIG. Tuttavia, se per qualche motivo preferisci utilizzare un altro gestore della scalabilità automatica, utilizza gli endpoint dell'API MIG per gestire le VM sospese e arrestate.

Con l'API MIG, puoi connettere il gestore della scalabilità automatica, ad esempio GKE Autoscaler, e utilizzare il pool in standby di VM per uno scale out più rapido.

Scegliere tra pool sospesi e arrestati

La scelta tra pool sospesi e arrestati dipende dal tuo caso d'uso specifico. Per ottenere prestazioni ottimali, devi sperimentare diversi tipi di pool di standby per gli scenari di scalabilità orizzontale per determinare quello più adatto alle tue esigenze. Workload diversi potrebbero mostrare un tempo di pubblicazione più breve con opzioni diverse. In alcuni casi, l'operazione di copia dello stato della memoria dallo spazio di archiviazione alla VM potrebbe richiedere più tempo rispetto al riavvio della VM o alla creazione di una nuova VM da zero.

Per trovare l'approccio migliore, inizia da queste linee guida:

  • Utilizza le VM sospese se le tue VM richiedono un'inizializzazione della memoria che richiede molto tempo, perché le VM sospese conservano lo stato della memoria. Assicurati che la tua applicazione possa essere sospesa e ripresa. Il mantenimento dello stato della memoria richiede spazio di archiviazione aggiuntivo e potrebbe comportare costi extra.
  • Utilizza le VM arrestate se l'inizializzazione della VM si concentra principalmente sull'inizializzazione dei dati archiviati nei dischi permanenti.

Modifica la policy di standby in un MIG

Questa sezione descrive come impostare il ritardo iniziale e la modalità del pool di standby per fare lo scale out il pool.

Console

  1. Nella console Google Cloud , vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Nella colonna Nome dell'elenco, fai clic sul nome del gruppo di istanze in cui vuoi modificare la norma di standby.

  3. Fai clic su Modifica per modificare questo gruppo di istanze gestite.

  4. Fai clic su Mostra configurazione avanzata.

  5. Nella sezione Pool di standby, in Modalità, seleziona Scalabilità orizzontale.

  6. Nel campo Ritardo iniziale, inserisci il numero di secondi che il MIG deve attendere prima di sospendere o arrestare una VM. Il ritardo iniziale consente allo script di inizializzazione di preparare la VM per lo scale out rapido.

  7. Fai clic su Salva.

gcloud

Utilizza il comando instance-groups managed update e specifica la modalità di funzionamento e il ritardo iniziale.

gcloud compute instance-groups managed update MIG_NAME \
  --standby-policy-mode=scale-out-pool \
  --standby-policy-initial-delay=DELAY \
  [--region=REGION | --zone=ZONE]

Sostituisci quanto segue:

  • MIG_NAME: il nome del MIG.
  • DELAY: il numero di secondi che il MIG deve attendere prima di sospendere o arrestare una VM. Il ritardo iniziale consente allo script di inizializzazione di preparare la VM per lo scale out rapido.
  • REGION: per un MIG a livello di regione, la regione in cui si trova il MIG.
  • ZONE: per un MIG a livello di zona, la zona in cui si trova il MIG.

Terraform

L'esempio seguente crea un MIG a livello di zona con una policy di standby. Utilizza il blocco standby_policy per impostare un ritardo iniziale e la modalità SCALE_OUT_POOL.

L'esempio utilizza la risorsa google_compute_instance_group_manager. Per un MIG a livello di regione, utilizza la risorsa google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name               = "standby-mig"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

REST

Utilizza il metodo instanceGroupManager.patch e specifica la modalità di funzionamento e il ritardo iniziale nel corpo della richiesta. Per i MIG a livello di regione, utilizza il metodo regionInstanceGroupManager.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"standbyPolicy": {
  "mode": "SCALE_OUT_POOL",
  "initialDelaySec": DELAY
}
// ...
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto.
  • ZONE: per un MIG a livello di zona, la zona in cui si trova il MIG.
    • Per un MIG a livello di regione, sostituisci zones/ZONE con regions/REGION e specifica la regione del MIG.
  • MIG_NAME: il nome del MIG.
  • DELAY: il numero di secondi che il MIG deve attendere prima di sospendere o arrestare una VM. Il ritardo iniziale consente allo script di inizializzazione di preparare la VM per lo scale out rapido.

Ridimensiona il pool in standby in un MIG

Questa sezione descrive come ridimensionare i pool di standby delle VM sospese e arrestate in un MIG.

Console

  1. Nella console Google Cloud , vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Nella colonna Nome dell'elenco, fai clic sul nome del gruppo di istanze in cui vuoi modificare le dimensioni del pool di standby.

  3. Fai clic su Modifica per modificare questo gruppo di istanze gestite.

  4. Fai clic su Mostra configurazione avanzata.

  5. Nella sezione Pool in standby, inserisci le nuove dimensioni nei campi VM sospese e VM arrestate.

  6. Fai clic su Salva.

gcloud

Utilizza il comando instance-groups managed update con i flag --suspended-size e --stopped-size.

gcloud compute instance-groups managed update MIG_NAME \
--suspended-size=SUSPENDED_SIZE \
--stopped-size=STOPPED_SIZE \
[--region=REGION | --zone=ZONE]

Sostituisci quanto segue:

  • MIG_NAME: il nome del MIG in cui sospendere un'istanza.
  • SUSPENDED_SIZE: il numero di VM sospese che il MIG deve mantenere in un determinato momento.
  • STOPPED_SIZE: il numero di VM arrestate che il MIG deve mantenere in un determinato momento.
  • REGION: per un MIG a livello di regione, la regione in cui si trova il MIG.
  • ZONE: per un MIG a livello di zona, la zona in cui si trova il MIG.

Terraform

L'esempio seguente crea un MIG a livello di zona con dimensioni target per le VM sospese e arrestate. Per impostare le dimensioni target, utilizza gli argomenti target_suspended_size e target_stopped_size.

L'esempio utilizza la risorsa google_compute_instance_group_manager. Per un MIG a livello di regione, utilizza la risorsa google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name                  = "standby-mig"
  base_instance_name    = "test"
  target_size           = 1
  target_suspended_size = 1
  target_stopped_size   = 2
  zone                  = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

REST

Utilizza il metodo instanceGroupManager.patch e specifica le dimensioni dei pool di VM sospese e arrestate nel corpo della richiesta. Per i MIG a livello di regione, utilizza il metodo regionInstanceGroupManager.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"targetSuspendedSize": SUSPENDED_SIZE,
"targetStoppedSize": STOPPED_SIZE
// ...
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per la richiesta.
  • ZONE: per un MIG a livello di zona, la zona in cui si trova il MIG.
    • Per un MIG a livello di regione, sostituisci zones/ZONE con regions/REGION e specifica la regione del MIG.
  • MIG_NAME: il nome del MIG in cui arrestare un'istanza.
  • SUSPENDED_SIZE: il numero di VM sospese che il MIG deve mantenere in un determinato momento.
  • STOPPED_SIZE: il numero di VM arrestate che il MIG deve mantenere in un determinato momento.

Passaggi successivi