Acelere a expansão com VMs suspensas e interrompidas


Este documento explica como funciona o pool de espera de instâncias de máquinas virtuais (VM) suspensas e interrompidas e como você pode usar o pool de espera para acelerar a expansão de um grupo de instâncias gerenciadas (MIG).

Antes de começar

  • Revise a página introdutória sobre VMs suspensas e interrompidas em um MIG .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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

      Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.

      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, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

      Confira mais informações em Set up authentication for a local development environment.

      REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para 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.

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Use a API MIG para escalonamento automático

Recomendamos que você use o escalonador automático do Compute Engine para escalonar automaticamente seu MIG. No entanto, se por algum motivo você preferir usar um escalonador automático diferente, use os endpoints da API MIG para lidar com VMs suspensas e interrompidas.

Com a API MIG, você pode conectar seu escalonador automático, por exemplo, o escalonador automático do GKE , e usar o pool de VMs em espera para uma expansão mais rápida.

Escolha entre pools suspensos e parados

A escolha entre pools suspensos e interrompidos depende do seu caso de uso específico. Para obter melhores desempenhos, experimente diferentes tipos de pool de espera para seus cenários de expansão para determinar qual deles melhor atende às suas necessidades. Cargas de trabalho diferentes podem mostrar menos tempo para veiculação com opções diferentes. Em alguns casos, a operação de copiar o estado da memória do armazenamento para a VM pode demorar mais tempo do que reiniciar a VM ou criar uma nova VM do zero.

Para encontrar a melhor abordagem, comece com estas diretrizes:

  • Use VMs suspensas se suas VMs exigirem uma inicialização de memória demorada, pois as VMs suspensas preservam o estado da memória. Certifique-se de que seu aplicativo possa ser suspenso e retomado. Manter o estado da memória requer armazenamento adicional e pode gerar custos extras.
  • Use VMs interrompidas se a inicialização da sua VM se concentrar principalmente na inicialização de dados armazenados nos discos permanentes.

Edite a política de espera em um MIG

Esta seção descreve como definir o atraso inicial e como definir o modo de pool de espera para aumentar o pool.

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias onde você deseja editar a política de espera.

  3. Clique em Editar para modificar este grupo de instâncias gerenciadas.

  4. Clique em Mostrar configuração avançada .

  5. Na seção Pool de espera , em Modo , selecione Escalabilidade horizontal .

  6. No campo Atraso inicial , insira o número de segundos que o MIG deve esperar antes de suspender ou parar uma VM. O atraso inicial dá ao script de inicialização o tempo para preparar sua VM para expansão rápida.

  7. Clique em Salvar .

gcloud

Use o comando instance-groups managed update e especifique o modo de operação e o atraso inicial.

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

Substitua o seguinte:

  • MIG_NAME : o nome do MIG.
  • DELAY : o número de segundos que o MIG deve esperar antes de suspender ou parar uma VM. O atraso inicial dá ao script de inicialização o tempo para preparar sua VM para expansão rápida.
  • REGION : para um MIG regional, a região onde o MIG está localizado.
  • ZONE : para um MIG zonal, a zona onde o MIG está localizado.

Terraforma

O exemplo a seguir cria um MIG zonal com uma política de espera. Use o bloco standby_policy para definir um atraso inicial e definir o modo como SCALE_OUT_POOL .

O exemplo usa o recurso google_compute_instance_group_manager . Para um MIG regional, use o recurso 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"
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform .

DESCANSAR

Use o método instanceGroupManager.patch e especifique o modo de operação e o atraso inicial no corpo da solicitação. Para MIGs regionais, use o método regionInstanceGroupManager.patch .

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

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

Substitua o seguinte:

  • PROJECT_ID : o ID do seu projeto.
  • ZONE : para um MIG zonal, a zona onde o MIG está localizado.
    • Para um MIG regional, substitua zones/ ZONE por regions/ REGION e especifique a região do MIG.
  • MIG_NAME : o nome do MIG.
  • DELAY : o número de segundos que o MIG deve esperar antes de suspender ou parar uma VM. O atraso inicial dá ao script de inicialização o tempo para preparar sua VM para expansão rápida.

Redimensionar o pool de espera em um MIG

Esta seção descreve como redimensionar os pools de espera de VMs suspensas e interrompidas em um MIG.

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias onde você deseja editar os tamanhos do pool em espera.

  3. Clique em Editar para modificar este grupo de instâncias gerenciadas.

  4. Clique em Mostrar configuração avançada .

  5. Na seção Pool de espera , insira os novos tamanhos nos campos VMs suspensas e VMs interrompidas .

  6. Clique em Salvar .

gcloud

Use o comando instance-groups managed update com os sinalizadores --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]

Substitua o seguinte:

  • MIG_NAME : o nome do MIG no qual suspender uma instância.
  • SUSPENDED_SIZE : o número de VMs suspensas que o MIG deve manter a qualquer momento.
  • STOPPED_SIZE : o número de VMs paradas que o MIG deve manter em um determinado momento.
  • REGION : para um MIG regional, a região onde o MIG está localizado.
  • ZONE : para um MIG zonal, a zona onde o MIG está localizado.

Terraforma

O exemplo a seguir cria um MIG zonal com tamanhos de destino para VMs suspensas e interrompidas. Para definir os tamanhos de destino, use os argumentos target_suspended_size e target_stopped_size .

O exemplo usa o recurso google_compute_instance_group_manager . Para um MIG regional, use o recurso 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"
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform .

DESCANSAR

Use o método instanceGroupManager.patch e especifique os tamanhos dos pools de VMs suspensas e interrompidas no corpo da solicitação. Para MIGs regionais, use o método regionInstanceGroupManager.patch .

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

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

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto da solicitação.
  • ZONE : para um MIG zonal, a zona onde o MIG está localizado.
    • Para um MIG regional, substitua zones/ ZONE por regions/ REGION e especifique a região do MIG.
  • MIG_NAME : o nome do MIG no qual interromper uma instância.
  • SUSPENDED_SIZE : o número de VMs suspensas que o MIG deve manter a qualquer momento.
  • STOPPED_SIZE : o número de VMs paradas que o MIG deve manter em um determinado momento.

O que vem a seguir