Escalonamento baseado na utilização da CPU

A forma mais simples de escalonamento automático é escalonar um grupo de instâncias gerenciadas (MIG, na sigla em inglês) com base na utilização da CPU das instâncias.

Também é possível escalonar um MIG com base na capacidade de serviço de um balanceador de carga HTTP(S) externo ou nas métricas do Monitoring.

Antes de começar

Escalonamento com base no uso da CPU

É possível fazer escalonamento automático com base na utilização média da CPU de um grupo de instâncias gerenciadas (MIG, na sigla em inglês). Com essa política, o uso da CPU das instâncias do grupo é coletado no autoescalador e fica possível determinar se o escalonamento é necessário. Você define a meta de uso da CPU que será mantida pelo autoescalador, e ele trabalha para manter esse nível.

O escalonador automático avalia a meta do nível de utilização da CPU como uma fração do uso médio de todas as vCPUs ao longo do tempo no grupo de instâncias. Se o uso médio de todas as vCPUs exceder a utilização desejada, o escalonador automático adicionará instâncias de VM. Por outro lado, se esse uso médio for menor do que a utilização desejada, o autoescalador removerá instâncias. Por exemplo, uma meta de utilização configurada como 0,75 instrui o escalonador automático a manter um uso médio de 75% entre todas as vCPUs no grupo de instâncias.

Ativar o escalonamento automático com base na utilização da CPU

Console


  1. Acesse a página Grupos de instâncias.
  2. Se existir um grupo de instâncias, selecione-o e clique em Editar grupo. Se você não tem um grupo de instâncias, clique em Criar grupo de instâncias.
  3. Em Escalonamento automático, selecione Ativado.
  4. Em Escalonamento automático baseado em, selecione Uso de CPU.
  5. Informe a utilização de CPU de destino que você quer. Esse valor é tratado como uma porcentagem. Por exemplo, para ter 60% de utilização da CPU, insira 60.
  6. Insira o número máximo de instâncias que você quer para esse grupo. Defina também o número mínimo de instâncias e o período de espera. O período de espera é o número de segundos que o autoescalador precisa aguardar depois que a máquina virtual é iniciada para começar a coletar informações dela. Isso determina o tempo que a máquina virtual leva para inicializar, em que os dados coletados não são confiáveis para o escalonamento automático. O período de espera padrão é de 60 segundos.
  7. Salve as alterações.

gcloud


Use o subcomando set-autoscaling para ativar o escalonamento automático de um grupo de instâncias gerenciadas. Por exemplo, o comando a seguir cria um autoescalador com meta de uso da CPU de 60%. Com o parâmetro --target-cpu-utilization, também é necessário o parâmetro --max-num-replicas para criar um autoescalador:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --max-num-replicas 20 \
    --target-cpu-utilization 0.60 \
    --cool-down-period 90

Opcionalmente, é possível usar a sinalização --cool-down-period, que informa ao autoescalador quantos segundos esperar após uma nova instância ser iniciada antes de considerar os dados da nova instância. Esse período de espera conta o tempo que a instância pode levar para ser inicializada, em que os dados de utilização coletados não são confiáveis para escalonamento automático. Depois que o período de espera for aprovado, o autoescalador começa a incluir os dados de utilização da instância para determinar se o grupo precisa ser dimensionado. O período de espera padrão é de 60 segundos.

Para verificar se o escalonamento automático está ativado, use o subcomando instance-groups managed describe, que descreve o grupo de instâncias gerenciadas correspondente e fornece informações sobre os recursos de escalonamento automático desse grupo de instâncias:

gcloud compute instance-groups managed describe example-managed-instance-group

Para uma lista de sinalizações e comandos gcloud disponíveis, consulte a referência de gcloud.

API


Observação: o escalonamento automático é um recurso de grupos de instâncias gerenciadas, mas ele é um recurso de API separado. Lembre-se disso quando você criar solicitações de API para o escalonamento automático.

Na API, faça uma solicitação POST ao método autoscalers.insert:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/autoscalers/

O corpo da solicitação precisa conter os campos name, target e autoscalingPolicy. autoscalingPolicy precisa definir cpuUtilization e maxNumReplicas.

Opcionalmente, é possível usar o campo coolDownPeriodSec, que informa ao autoescalador quantos segundos esperar após uma nova instância ser iniciada antes de considerar os dados da nova instância. Esse período de espera conta o tempo que a instância pode levar para ser inicializada, em que os dados de utilização coletados não são confiáveis para escalonamento automático. Depois que o período de espera for aprovado, o autoescalador começa a incluir os dados de utilização da instância para determinar se o grupo precisa ser dimensionado. O período de espera padrão é de 60 segundos.

{
 "name": "example-autoscaler",
 "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 10,
    "cpuUtilization": {
       "utilizationTarget": 0.6
     },
    "coolDownPeriodSec": 90
  }
}

Para mais informações sobre como ativar o escalonamento automático com base na utilização da CPU, faça o tutorial Como usar o escalonamento automático para aplicativos altamente escalonáveis.

Como o escalonador automático lida com a utilização intensa da CPU

Durante períodos de intensa utilização da CPU, se ela estiver próxima a 100%, o escalonador automático presumirá que o grupo já está muito sobrecarregado. Nesses casos, ele aumenta o número de máquinas virtuais em até 50%.