Como gerenciar escalonadores automáticos

Use estas instruções para executar tarefas administrativas de escalonadores automáticos, como criar, descrever, atualizar, interromper e excluir um escalonador automático.

Para saber mais sobre o escalonamento automático do grupo de instâncias gerenciadas (MIG, na sigla em inglês), 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

Se quiser conferir mais informações sobre um determinado escalonador automático ou se quiser confirmar que ele foi criado de maneira bem-sucedida, use o console, o subcomando gcloud compute instance-groups managed describe ou o método get na API Compute Engine para um recurso de escalonador automático zonal ou regional.

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 do grupo.
  3. Clique em Detalhes para ver os detalhes do grupo, incluindo as configurações de escalonamento automático.

gcloud

Na ferramenta de linha de comando gcloud, use o comando describe:

gcloud beta compute instance-groups managed describe instance-group-name

O comando retorna detalhes sobre o escalonador automático:

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

API

Para ver o recurso do escalonador automático anexado a um MIG, use o método instanceGroupManagers.get. Para um MIG regional, substitua zones/zone por regions/region.

GET https://compute.googleapis.com/compute/beta/projects/myproject/zones/zone/instanceGroupManagers/name
200 OK

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

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

GET https://compute.googleapis.com/compute/beta/projects/myproject/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/beta/projects/my-project/zones/us-east1-c/instanceGroupManagers/example-group",
 "autoscalingPolicy": {
  "minNumReplicas": 10,
  "maxNumReplicas": 20,
  "mode": "ON",
  "scaleDownControl": {
    "timeWindowSec": 60,
    "maxScaledDownReplicas": {
      "calculated": 3,
      "percent": 15
    }
  },
  "coolDownPeriodSec": 60,
  "cpuUtilization": {
   "utilizationTarget": 0.6
  }
 },
 "zone": "https://www.googleapis.com/compute/beta/projects/my-project/zones/us-east1-c",
 "selfLink": "https://www.googleapis.com/compute/beta/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 grupo de instâncias gerenciadas na lista para abrir a página de detalhes do 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 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/myproject/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/myproject/zones/us-central1-f",
 "operationType": "compute.autoscalers.patch",
 "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/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:

  • OFF: 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ê o reative mais tarde;
  • ONLY_SCALE_OUT: restringe o escalonamento automático apenas 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.
  • ON: 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 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, defina o Modo de escalonamento automático para desativar ou restringir o escalonamento automático para o grupo ou para ativar o escalonador automático novamente.

gcloud

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

gcloud compute instance-groups managed set-autoscaling 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://www.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 (Beta)

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. Se você espera, regularmente, que um pico de carga ocorra logo após um declínio na carga, é possível limitar a taxa de escalonamento para evitar que o escalonador automático reduza o tamanho de um MIG em mais instâncias de VM do que a carga de trabalho pode perder.

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.

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 beta compute instance-groups managed set-autoscaling. Por exemplo, use o seguinte comando para configurar o escalonamento automático de um example-group:

gcloud beta 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 beta 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 beta 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 recomendado atual do MIG, o escalonador automático usa o tamanho do pico dos últimos 30 minutos (digamos, 100 VMs), usa max-scaled-in-replicas (digamos, 10 VMs) e não define o tamanho recomendado atual para o grupo com menos de 90 VMs (100-10).

API

Configure os controles de escalonamento vertical configurando os campos maxScaledDownReplicas e timeWindowSec na estrutura autoscalingPolicy.scaleDownControl 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/beta/projects/project-id/regions/region/autoscalers

{
  "name": "name",
  "target": "https://compute.googleapis.com/compute/v1/projects/myproject/regions/region/instanceGroupManagers/instance-group-name",
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleDownControl": {
      "maxScaledDownReplicas": {
           "fixed": max-scale-down-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/beta/projects/project-id/regions/region/autoscalers?autoscaler=name

{
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleDownControl": {
      "maxScaledDownReplicas": {
           "fixed": max-scale-down-replicas
      },
      "timeWindowSec": time-window
    }
  }
}

Substitua:

  • 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-down-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 será capaz de perder todas essas VMs ao mesmo tempo. É possível especificar um número de VMs ou uma porcentagem. Use maxScaledDownReplicas.percentage para 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 recomendado atual do MIG, o escalonador automático usa o tamanho do pico dos últimos 30 minutos (digamos, 100 VMs), usa max-scaled-down-replicas (digamos, 10 VMs) e não define o tamanho recomendado atual para o grupo com menos de 90 VMs (100-10).

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 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.

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/beta/projects/project-id/zones/zone/autoscalers?autoscaler=name

{
  "autoscalingPolicy": {
    "scaleDownControl": null
  }
}

Substitua:

  • name: o nome do escalonador automático a ser atualizado. Para ter acesso a uma lista de escalonadores automáticos atuais 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 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, clique em Excluir configuração de escalonamento automático para interromper o escalonador automático e excluir a configuração dele.

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 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/myproject/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