Acelerar o escalonamento horizontal com VMs suspensas e interrompidas


Neste documento, explicamos como o pool em espera de instâncias de máquina virtual (VM) suspensas e interrompidas funciona e como é possível usar o pool em espera para acelerar o escalonamento horizontal de um grupo gerenciado de instâncias (MIG).

Antes de começar

  • Consulte a página introdutória sobre VMs suspensas e interrompidas em um MIG.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

Usar a API MIG para escalonamento automático

Recomendamos o uso do escalonador automático do Compute Engine para escalonamento automático do 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, é possível conectar o escalonador automático, por exemplo, o escalonador automático do GKE, e aproveitar o pool em espera de VMs para um escalonamento horizontal mais rápido.

Escolher entre pools suspensos e interrompidos

A escolha entre pools suspensos e interrompidos depende do seu caso de uso específico. Para melhores desempenhos, teste diferentes tipos de pools em espera nos cenários de escalonamento horizontal para determinar qual atende melhor às suas necessidades. Cargas de trabalho diferentes podem mostrar um tempo menor para exibição com opções diferentes. Em alguns casos, a operação de copiar o estado da memória do armazenamento para a VM pode levar 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 elas exigirem uma inicialização demorada de memória, porque as VMs suspensas preservam o estado da memória. Verifique se a inscrição pode ser suspensa e retomada. Manter o estado da memória exige mais armazenamento e pode gerar custos extras.
  • Use VMs interrompidas se a inicialização da VM se concentrar principalmente na inicialização de dados armazenados nos discos permanentes.

Editar a política de espera em um MIG

Nesta seção, descrevemos como definir o atraso inicial e o modo de pool em espera para escalonar horizontalmente o pool.

Console

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

    Acesse grupo de instâncias

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

  3. Clique em Editar para modificar o grupo gerenciado de instâncias.

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

  5. Na seção Pool em espera, em Modo, selecione Escalonar horizontalmente.

  6. No campo Atraso inicial, insira o número de segundos que o MIG precisa aguardar antes de suspender ou interromper uma VM. O atraso inicial dá ao script de inicialização o tempo para preparar a VM para escalonamento horizontal rápido.

  7. Clique em Salvar.

gcloud

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

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

Substitua:

  • MIG_NAME: o nome do MIG;
  • DELAY: o número de segundos que o MIG precisa aguardar antes de suspender ou interromper uma VM. O atraso inicial dá ao script de inicialização o tempo para preparar a VM para escalonamento horizontal rápido.
  • REGION: para um MIG regional, a região em que o MIG está localizado.
  • ZONE: para um MIG zonal, a zona em que o MIG está localizado.

API

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

PUT https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

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

Substitua:

  • PROJECT_ID: ID do projeto.
  • MIG_NAME: o nome do MIG;
  • DELAY: o número de segundos que o MIG precisa aguardar antes de suspender ou interromper uma VM. O atraso inicial dá ao script de inicialização o tempo para preparar a VM para escalonamento horizontal rápido.
  • REGION: para um MIG regional, a região em que o MIG está localizado.
  • ZONE: para um MIG zonal, a zona em que o MIG está localizado.

Redimensionar o pool em espera em um MIG

Nesta seção, descrevemos como redimensionar pools de VMs suspensas e interrompidas em um MIG.

Console

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

    Acesse grupo de instâncias

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

  3. Clique em Editar para modificar o grupo gerenciado de instâncias.

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

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

  6. Clique em Salvar.

gcloud

Use o comando Beta instance-groups managed resize com as flags --suspended-size e --stopped-size.

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

Substitua:

  • MIG_NAME: o nome do MIG em que uma instância será suspensa
  • SUSPENDED_SIZE: o número de VMs suspensas que o MIG precisa manter a qualquer momento
  • STOPPED_SIZE: o número de VMs interrompidas que o MIG precisa manter a qualquer momento
  • REGION: para um MIG regional, a região em que o MIG está localizado
  • ZONE: para um MIG zonal, a zona em que o MIG está localizado

API

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

PUT https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

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

Substitua:

  • PROJECT_ID: o ID do projeto para a solicitação.
  • ZONE: para um MIG zonal, a zona em que o MIG está localizado.
    • Substitua zones/ZONE por regions/REGION e especifique a região do MIG se ele for regional.
  • MIG_NAME: o nome do MIG em que uma instância será interrompida
  • SUSPENDED_SIZE: o número de VMs suspensas que o MIG precisa manter a qualquer momento
  • STOPPED_SIZE: o número de VMs interrompidas que o MIG precisa manter a qualquer momento

A seguir