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
- Para usar os exemplos de linha de comando deste guia, siga estas etapas:
- Instale ou atualize a ferramenta de linha de comando gcloud para a versão mais recente.
- Defina uma região e uma zona padrão.
- Para usar os exemplos da API deste guia, configure o acesso a ela.
- Analise as limitações do escalonador automático.
- Leia sobre os fundamentos do escalonador automático.
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 escalonador automático e fica possível determinar se o escalonamento é necessário. Você define a meta de uso da CPU que será mantida pelo escalonador automático, 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 escalonador automático 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.
Ativar o escalonamento automático com base na utilização da CPU
Console
- Acesse a página Grupos de instâncias.
- 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.
- Em Escalonamento automático, selecione Ativado.
- Em Escalonamento automático baseado em, selecione Uso de CPU.
- 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
. - 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 escalonador automático 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.
- 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 escalonador automático 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 escalonador automático:
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 escalonador automático quantos segundos esperar após uma nova instância ser iniciada antes de considerar os dados dela. Esse período de espera conta o tempo que a instância pode levar para ser inicializada, em que os dados de uso coletados não são confiáveis para o escalonamento automático. Depois que o período de espera for aprovado, o escalonador automático começa a incluir os dados de uso da instância para determinar se o grupo precisa ser escalonado. 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 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 escalonador automático quantos segundos esperar após uma nova instância ser iniciada antes de considerar os dados dela. Esse período de espera conta o tempo que a instância pode levar para ser inicializada, em que os dados de uso coletados não são confiáveis para o escalonamento automático. Depois que o período de espera for aprovado, o escalonador automático começa a incluir os dados de uso da instância para determinar se o grupo precisa ser escalonado. 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, siga 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%.