Como gerenciar autoescaladores


Se você usa grupos de instâncias gerenciadas (MIGs, na sigla em inglês), leia este documento para saber como criar, configurar e excluir o escalonador automático do MIG.

Antes de começar

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

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

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

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

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 autoescalador, 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 para um recurso REST do escalonador automático zonal ou regional.

Console

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

    Acesse grupo de instâncias

  2. Clique no nome de um MIG na lista para abrir a página de visão geral desse grupo.
  3. Clique em Detalhes para conferir 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
...

REST

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 o método autoscalers.get para um MIG zonal ou o método regionAutoscalers.get para um MIG regional.

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

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 Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique no nome de um MIG na lista para abrir a página de visão geral desse grupo.
  3. Clique em Editar para conferir 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.

REST

Para atualizar um recurso do escalonador automático, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional. 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 usar o escalonamento automático preditivo

O escalonamento automático preditivo usa dados históricos para escalonar o grupo antes da carga prevista. Ela funciona melhor se a carga de trabalho atender aos seguintes critérios:

  • O aplicativo leva muito tempo para ser inicializado, por exemplo, ao configurar um período de inicialização de mais de dois minutos.
  • Sua carga de trabalho varia de maneira previsível com ciclos diários ou semanais.

Para mais informações, consulte Escalonamento com base em previsões.

Como desativar ou restringir um escalonador automático

Desative um escalonador automático para impedi-lo temporariamente de escalonar o MIG, ou restrinja-o, para que ele só possa escalonar o MIG horizontalmente. 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.
  • Ative o escalonamento automático preditivo posteriormente. O escalonamento automático preditivo requer uma política de escalonamento automático para começar a coletar o histórico de carga no qual basear as previsões. O escalonador automático detecta esse histórico mesmo quando o modo está definido como OFF.

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

Use as instruções nesta seção para definir o modo do escalonador automático. Os seguintes modos estão disponíveis:

  • 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 Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique no nome de um MIG na lista para abrir a página de visão geral desse grupo.
  3. Clique em Editar para conferir 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 update-autoscaling com a sinalização --mode.

gcloud compute instance-groups managed update-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.

REST

Para atualizar o modo de um recurso do escalonador automático, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional. 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.

O escalonador automático se comporta da seguinte maneira quando você define o modo dele como ONLY_SCALE_OUT:

  • Independentemente da diminuição da carga ou das alterações feitas na configuração do escalonador automático, ele não diminui o valor targetSize do MIG.
  • Caso você altere manualmente o tamanho de destino de um MIG zonal para um valor menor que o recomendado, o escalonador automático substitui esse valor.
  • Não é possível alterar manualmente o tamanho de destino de um MIG regional.
  • Enquanto o modo do escalonador automático estiver definido como ONLY_SCALE_OUT, o escalonador automático não reduzirá o número de instâncias no grupo se você definir o campo autoscalingPolicy.maxNumReplicas com um valor inferior ao valor atual do targetSize do grupo. Como de costume, o escalonador automático recalcula continuamente o tamanho recomendado do grupo, que pode ser diminuído para atender ao novo máximo, mas sem reduzir o escalonamento horizontal do grupo.
  • O campo autoscalers.status informa um aviso: "O escalonamento automático opera em um modo restrito: ONLY_SCALE_OUT."

O escalonador automático se comporta da seguinte maneira quando o modo dele é definido como OFF:

  • O escalonador automático não altera o valor targetSize do MIG em resposta a alterações na carga ou na própria configuração. Como de costume, o escalonador automático recalcula continuamente o tamanho recomendado do grupo, que pode ser diminuído para atender ao novo máximo, mas sem reduzir o escalonamento horizontal do grupo.
  • É possível alterar manualmente o tamanho de destino de um MIG zonal ou regional. Os valores minNumReplicas e maxNumReplicas da política de escalonamento automático não afetam o tamanho definido.
  • Se você desativar o escalonamento automático de um MIG regional em que a redistribuição proativa de instâncias estiver ativada e o MIG tiver uma distribuição desigual de instâncias entre as zonas, o grupo proativamente exclui ou cria instâncias nas zonas dele para restabelecer uma distribuição uniforme.
  • O campo autoscalers.status exibe um aviso: "O escalonamento automático opera em modo restrito: DESATIVADO".

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

A configuração de controles de redução de escalonamento vertical é opcional. Por padrão, os controles de redução 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.

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 Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique no nome de um MIG escalonado automaticamente na lista para abrir a página de visão geral desse grupo.

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

  4. Em Escalonamento automático, clique em Controles de escalonamento vertical, e selecione Ativar controles de escalonamento vertical.

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

REST

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 autoscalers.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 autoscalers.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 CLI do Google Cloud ou a API Compute Engine.

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

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 Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique no nome de um MIG escalonado automaticamente na lista para abrir a página de visão geral desse grupo.

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

  4. Em Escalonamento automático, clique em Controles de escalonamento vertical e 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

REST

Para remover os controles de escalonamento vertical, use o método autoscalers.patch para um MIG zonal ou use o método regionAutoscalers.patch para. um MIG regional e forneça configurações vazias para controles de escalonamento vertical.

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 acessar uma lista de escalonadores atuais e os MIGs de destino, use o método autoscalers.aggregatedList.

Como excluir um escalonador automático

É possível excluir permanentemente o recurso do escalonador automático e o histórico dele. Se você quiser interromper temporariamente o escalonamento automático e manter o recurso do escalonador automático e a configuração e o histórico dele, desative o escalonador.

Console

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

    Acesse grupo de instâncias

  2. Clique no nome de um MIG na lista para abrir a página de visão geral desse grupo.

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

  4. Em Escalonamento automático, na lista suspensa Modo de escalonamento automático, selecione 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 CLI gcloud, todos os escalonadores automáticos anexados ao MIG também serão excluídos.

REST

Para interromper um escalonador automático e excluir a configuração dele, use o método autoscalers.delete para um MIG zonal ou use o método regionAutoscalers.delete para um MIG regional.

 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