Como gerenciar autoescaladores

Se você usa grupos gerenciados de instâncias (MIGs, na sigla em inglês), veja esta página para saber como criar, descrever, atualizar, restringir, interromper e excluir o escalonador automático do MIG.

Para saber mais sobre MIGs, leia a visão geral.

Antes de começar

Como criar um escalonador automático

Dependendo da política de escalonamento automático utilizada, a criação de um escalonador automático é um pouco diferente. Para instruções sobre como criar um escalonador automático, consulte:

Como receber informações sobre um escalonador automático

Para mais informações sobre um escalonador automático específico, use o console, o subcomando gcloud compute instance-groups managed describe ou o método get na API do Compute Engine para um recurso do escalonador automático regional ou zonal.

Console

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

    Acessar a página "Grupos de instâncias"

  2. Clique no nome de um MIG na lista para abrir a página de detalhes desse grupo.
  3. Clique em Detalhes para ver os detalhes do grupo, incluindo as configurações de escalonamento automático.

gcloud

Use o comando instance-groups managed describe:

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME

Se um escalonador automático estiver anexado ao grupo, o comando retornará detalhes sobre ele:

...
autoscaler:
  autoscalingPolicy:
    coolDownPeriodSec: 60
    cpuUtilization:
      utilizationTarget: 0.6
    maxNumReplicas: 20
    minNumReplicas: 10
    mode: ON
    scaleInControl:
      timeWindowSec: 300
      maxScaledInReplicas:
        fixed: 3
        calculated: 3
...

API

Use o método instanceGroupManagers.get. Para um MIG regional, substitua zones/ZONE por regions/REGION.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

Se um escalonador automático estiver anexado ao grupo, a solicitação retornará um link para o recurso dele.

200 OK

{
  ...
  "status": {
    ...
    "autoscaler": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group"
  },
}

Para recuperar detalhes sobre o recurso do escalonador automático, use método autoscalers.get. Para um escalonador automático regional, substitua zones/ZONE por regions/REGION.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/example-autoscaler
200 OK

{
 "kind": "compute#autoscaler",
 "id": "8744945839459481093",
 "creationTimestamp": "2018-09-28T13:02:50.553-07:00",
 "name": "example-group",
 "target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/instanceGroupManagers/example-group",
 "autoscalingPolicy": {
  "minNumReplicas": 10,
  "maxNumReplicas": 20,
  "mode": "ON",
  "scaleInControl": {
    "timeWindowSec": 60,
    "maxScaledInReplicas": {
      "calculated": 3,
      "percent": 15
    }
  },
  "coolDownPeriodSec": 60,
  "cpuUtilization": {
   "utilizationTarget": 0.6
  }
 },
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c",
 "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group",
 "status": "ACTIVE"
}

Como atualizar um escalonador automático

Para atualizar um escalonador automático, use o Console do Google Cloud, a ferramenta gcloud ou a API Compute Engine.

Ao atualizar o escalonador automático, é possível que leve algum tempo para que as alterações sejam propagadas, e alguns minutos para que as novas configurações do escalonador automático sejam aplicadas.

Console

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

    Acessar a página "Grupos de instâncias"

  2. Clique no nome de um MIG na lista para abrir a página de detalhes desse grupo.
  3. Clique em Editar grupo para ver e atualizar a configuração atual do grupo, incluindo as configurações de escalonamento automático dele.
  4. Clique em Salvar quando terminar.

gcloud 

Use o comando update-autoscaling.

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
        --max-num-replicas MAX_NUM ...

Para instruções sobre como criar um escalonador automático, consulte Como criar um escalonador automático.

API

Para atualizar um recurso do escalonador automático para um MIG zonal, use o método patch do escalonador automático. Para um MIG regional, use o método patch do regionAutoscaler. Forneça um corpo de solicitação que contenha a nova configuração.

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler

{
 "autoscalingPolicy": {
  "maxNumReplicas": 20
 }
}
200 OK

{
 "kind": "compute#operation",
 "id": "4244494732310423322",
 "name": "operation-1556912627871-58800f8216ed7-74ab1720-7d360603",
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f",
 "operationType": "compute.autoscalers.patch",
 "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler",
 "targetId": "340775527929467142",
 "status": "RUNNING",
 ...
}

Ao fazer solicitações que modificam dados, um recurso zoneOperations ou regionOperations é retornado, e será possível consultar a operação para verificar o status da alteração.

Como desativar ou restringir um escalonador automático

Desative um escalonador automático para impedi-lo temporariamente de escalonar o MIG, ou restrinja o escalonador automático para que ele só possa escalonar verticalmente o MIG. Esse recurso é útil quando você quiser:

  • investigar instâncias de VM sem interferência do escalonamento;
  • reconfigurar várias propriedades do MIG sem que as ações de escalonamento sejam acionadas enquanto seu grupo estiver apenas parcialmente reconfigurado;
  • manter a capacidade do MIG para uma reversão rápida ao mesmo tempo que redireciona uma carga de trabalho para um novo MIG.

Se e quando você reativar o escalonador automático, ele voltará automaticamente para a operação normal.

No Console do Google Cloud, a ferramenta gcloud ou a API Compute Engine define o mode do escalonador automático como:

  • Desativado: desativa temporariamente o escalonamento automático Use esse modo para evitar alterações automáticas do tamanho do MIG. A configuração do escalonamento automático permanece intacta para que você possa reativá-lo mais tarde;
  • Somente escalonamento horizontal: apenas restrinja o escalonamento automático para adicionar novas instâncias de VM. Use esse modo para evitar que o grupo seja reduzido e permitir que o grupo provisione VMs extras quando a carga aumentar.
  • Ativado: ativa todas as operações de escalonamento automático de acordo com a política.

Console

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

    Acessar a página "Grupos de instâncias"

  2. Clique no nome de um MIG na lista para abrir a página de detalhes desse grupo.
  3. Clique em Editar grupo para ver a configuração atual do grupo, incluindo as configurações de escalonamento automático.
  4. Em Escalonamento automático, defina o Modo de escalonamento automático para desativar ou restringir a função para o grupo ou para ativar o escalonador automático novamente.
  5. Clique em Salvar quando terminar.

gcloud

Para desativar, restringir ou reativar um escalonador automático, use o comando set-autoscaling com a sinalização --mode.

gcloud compute instance-groups managed set-autoscaling INSTANCE_GROUP_NAME 
--mode MODE

Substitua:

  • MODE:
    • off para desativar o escalonador automático, mas manter a configuração;
    • only-scale-out para restringir o escalonador automático a apenas adicionar instâncias de VM;
    • on para reativar todas as atividades do escalonador automático de acordo com a política.

API

Para atualizar o modo de um recurso do escalonador automático para um MIG zonal, use o método patch do escalonador automático. Para um MIG regional, use o método patch do regionAutoscaler. Forneça um corpo de solicitação que inclua a propriedade autoscalingPolicy.mode.

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1-f/autoscalers?autoscaler=my-autoscaler

{
  "autoscalingPolicy": {
    "mode":"MODE"
  }
}

Substitua:

  • MODE:
    • OFF para desativar o escalonador automático, mas manter a configuração;
    • ONLY_SCALE_OUT para restringir o escalonador automático a apenas adicionar instâncias;
    • ON para reativar todas as atividades do escalonador automático de acordo com a política.

Como controlar a taxa de escalonamento vertical de um escalonador automático

Se as cargas de trabalho demorarem muito para serem inicializadas, configure os controles de escalonamento vertical para reduzir o risco de latência de resposta e interrupções devido aos eventos de escalonamento repentinos. Especificamente, se você espera que um pico de carga aconteça logo depois de uma queda no carregamento, é possível limitar a taxa de redução do escalonamento horizontal. A limitação da taxa de redução do escalonamento horizontal impede que o escalonador automático reduza o tamanho de um MIG por mais instâncias de VM do que a carga de trabalho pode tolerar.

Como configurar controles de escalonamento vertical

Configure os controles de escalonamento vertical usando a ferramenta gcloud ou a API Compute Engine. A configuração de controles de escalonamento vertical é opcional. Por padrão, os controles de escalonamento vertical não são configurados. Quando não está configurado, o escalonador automático ainda depende do mecanismo de estabilização padrão. Ou seja, ele mantém o tamanho recomendado em um nível necessário para atender à carga de pico, observada durante o período de estabilização dos 10 minutos finais.

Console

Para configurar os controles de redução de escalonamento horizontal em um MIG com escalonamento automático, siga as etapas abaixo:

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

    Acessar a página "Grupos de instâncias"

  2. Clique no nome de um MIG com escalonamento automático na lista para abrir a página de detalhes do grupo.

  3. Clique em Editar grupo para ver a configuração atual do grupo, incluindo as configurações de escalonamento automático.

  4. Em Escalonamento automático, selecione Ativar controles de redução de escalonamento horizontal.

  5. Em Não reduzir escalonamento horizontal em mais de, especifique o número ou a porcentagem máximo de instâncias que podem ser removidas do grupo por vez.

  6. Em Ao longo de, especifique a frequência com que as instâncias podem ser removidas do grupo.

  7. Clique em Save.

gcloud

É possível configurar controles de escalonamento vertical ao criar um escalonador automático ou ao atualizá-lo.

Como configurar controles de escalonamento vertical ao criar um escalonador automático

Defina controles de escalonamento vertical ao criar um escalonador automático para um MIG usando a sinalização --scale-in-control com o comando gcloud compute instance-groups managed set-autoscaling. Por exemplo, use o seguinte comando para configurar o escalonamento automático de um example-group:

gcloud compute instance-groups managed set-autoscaling INSTANCE_GROUP_NAME \
    --target-cpu-utilization 0.6 \
    --max-num-replicas 50 \
    --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW

Como configurar controles de escalonamento vertical ao atualizar um escalonador automático

Atualize os controles de escalonamento vertical no escalonador automático atual de um MIG usando a sinalização --scale-in-control com o comando gcloud compute instance-groups managed update-autoscaling. Por exemplo, use o seguinte comando para definir controles de escalonamento vertical em uma configuração atual de escalonamento automático existente para example-group:

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
    --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG que será atualizado.
  • MAX_SCALE_IN_REPLICAS: o número máximo de VMs que podem ser deduzidas do tamanho de pico, retirado da janela de tempo final especificada. O número especificado de instâncias de VM pode ser escalonado de uma só vez. Portanto, o serviço será capaz de perder todas essas VMs ao mesmo tempo. É possível especificar um número de VMs ou uma porcentagem. Use o sinal % para porcentagens. Por exemplo: 50%.
  • TIME_WINDOW: janela de tempo final em que o tamanho de pico será retirado. O escalonamento automático não fará o escalonamento em mais do que o número máximo permitido de réplicas do tamanho do pico obtido durante essa janela de tempo final. Especifique esse valor em segundos dentro de um intervalo [60, 3.600].

Por exemplo, digamos que você defina a janela de tempo como 1.800 segundos (30 minutos). Ao calcular o tamanho atual recomendado para o MIG, o escalonador automático usa a seguinte lógica:

  • ter o tamanho de pico dos últimos 30 minutos (por exemplo, 100 VMs);
  • usar max-scaled-in-replicas (por exemplo, 10 VMs);
  • definir o limite mínimo do tamanho recomendado como: tamanho de pico menos max-scaled-in-replicas (100 - 10 = 90 VMs).

API

Configure os controles de escalonamento vertical configurando os campos maxScaledInReplicas e timeWindowSec na estrutura autoscalingPolicy.scaleInControl em um recurso do escalonador automático zonal ou regional. Não há valores padrão para esses campos, é preciso fornecer valores para ambos.

É possível configurar controles de escalonamento vertical ao criar um escalonador automático ou ao atualizá-lo.

Como configurar controles de escalonamento vertical ao criar um escalonador automático

Para um MIG zonal, use o método zonal autoscaler insert. Para um MIG regional, use o método regionAutoscalers insert.

POST
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers

{
  "name": "AUTOSCALER_NAME",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME",
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleInControl": {
      "maxScaledInReplicas": {
           "fixed": MAX_SCALE_IN_REPLICAS
      },
      "timeWindowSec": TIME_WINDOW
    }
  }
}

Para mais informações sobre como criar um escalonador automático, consulte os seguintes artigos:

Como configurar controles de escalonamento vertical ao atualizar um escalonador automático

Para um MIG zonal, use o método zonal autoscaler patch. Para um MIG regional, use o método regionAutoscalers patch.

PATCH
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleInControl": {
      "maxScaledInReplicas": {
           "fixed": MAX_SCALE_IN_REPLICAS
      },
      "timeWindowSec": TIME_WINDOW
    }
  }
}

Substitua:

  • AUTOSCALER_NAME: o nome do escalonador automático a ser criado. É possível nomear o escalonador automático de acordo com o MIG que o usará ou nomeá-lo como preferir.
  • INSTANCE_GROUP_NAME: o nome do MIG em que o escalonador automático será adicionado. Para um MIG regional, substitua zones/ZONE por regions/REGION.
  • MAX_SCALE_IN_REPLICAS: o número máximo de VMs que podem ser deduzidas do tamanho de destino recomendado do pico, retirado da janela de tempo final especificada. O número especificado de instâncias de VM pode ser escalonado de uma só vez. Portanto, o serviço pode ser capaz de perder muitas VMs ao mesmo tempo. É possível especificar um número de VMs ou uma porcentagem. Use maxScaledInReplicas.percentage especificar um valor percentual.
  • TIME_WINDOW: janela de tempo final em que o tamanho recomendado de pico será retirado. O escalonamento automático não fará o escalonamento em mais do que o número máximo permitido de réplicas do tamanho do pico obtido durante essa janela de tempo final. Especifique esse valor em segundos dentro de um intervalo [60, 3.600]. Por exemplo: 1800.

Por exemplo, digamos que você defina a janela de tempo como 1.800 segundos (30 minutos). Ao calcular o tamanho atual recomendado para o MIG, o escalonador automático usa a seguinte lógica:

  • ter o tamanho de pico dos últimos 30 minutos (por exemplo, 100 VMs);
  • usar max-scaled-in-replicas (por exemplo, 10 VMs);
  • definir o limite mínimo do tamanho recomendado como: tamanho de pico menos max-scaled-in-replicas (100 - 10 = 90 VMs).

Para mais informações sobre como os controles de escalonamento vertical funcionam, consulte Noções básicas sobre as decisões do escalonador automático.

Como conseguir a configuração atual dos controles de escalonamento vertical

Para conseguir a configuração atual dos controles de escalonamento vertical, consulte Como conseguir informações sobre um escalonador automático.

Como remover controles de escalonamento vertical

É possível remover os controles de escalonamento vertical para aumentar as restrições de tempo e magnitude das operações de escalonamento usando a ferramenta de linha de comando gcloud ou a API Compute Engine.

Sem os controles de escalonamento vertical, o escalonador automático ainda depende do mecanismo de estabilização padrão. Isto é, ele mantém o tamanho recomendado em um nível necessário para atender à carga de pico, observada durante o período de estabilização dos 10 minutos finais.

Console

Para remover os controles de redução de escalonamento horizontal em um MIG com escalonamento automático, siga as etapas abaixo:

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

    Acessar a página "Grupos de instâncias"

  2. Clique no nome de um MIG com escalonamento automático na lista para abrir a página de detalhes do grupo.

  3. Clique em Editar grupo para ver a configuração atual do grupo, incluindo as configurações de escalonamento automático.

  4. Em Escalonamento automático, desmarque a caixa de seleção Ativar controles de redução de escalonamento horizontal.

  5. Clique em Save.

gcloud

Remova os controles de escalonamento vertical usando a sinalização --clear-scale-in-control com o comando gcloud compute instance-groups managed update-autoscaling. Por exemplo, use o comando a seguir para remover os controles de escalonamento vertical da configuração de escalonamento automático para example-group:

gcloud compute instance-groups managed update-autoscaling example-group \
    --clear-scale-in-control

API

Para remover controles de escalonamento vertical, use o método autoscalers.patch e forneça uma configuração vazia para esses controles. Para um MIG regional, substitua zones/ZONE por regions/REGION.

PATCH
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scaleInControl": null
  }
}

Substitua:

  • AUTOSCALER_NAME: o nome do escalonador automático a ser atualizado. Para ter acesso a uma lista de escalonadores automáticos e seus MIGs de destino, use o método aggregatedList do escalonador automático zonal ou regional.

Como excluir um escalonador automático

É possível excluir permanentemente o recurso do escalonador automático usando o Console do Google Cloud, a ferramenta gcloud ou a API Compute Engine. Se você quiser interromper temporariamente o recurso de escalonamento automático e manter o recurso do escalonador automático e a configuração dele, desative esse escalonador.

Console

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

    Acessar a página "Grupos de instâncias"

  2. Clique no nome de um MIG na lista para abrir a página de detalhes desse grupo.

  3. Clique em Editar grupo para ver a configuração atual do grupo, incluindo as configurações de escalonamento automático.

  4. Em Escalonamento automático, clique em Excluir configuração de escalonamento automático para interromper o escalonador automático e excluir a configuração dele.

  5. Clique em Salvar quando terminar.

gcloud

Use o comando stop-autoscaling para interromper um escalonador automático e excluir a configuração dele.

gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME

Interromper um escalonador automático o exclui do MIG. Se você quiser reiniciar o escalonador automático, será necessário recriá-lo usando o comando set-autoscaling.

Se você excluir um MIG usando a ferramenta gcloud, todos os escalonadores automáticos anexados ao MIG também serão excluídos.

API

Para interromper um escalonador automático e excluir a configuração dele, chame o método delete. Para um MIG regional, substitua zones/ZONE por regions/REGION.

 DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/AUTOSCALER_NAME

Feedback

Queremos saber mais sobre seus casos de uso, desafios e feedback a respeito do escalonamento automático. Compartilhe seu feedback com nossa equipe em mig-discuss@google.com.

A seguir