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
- 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.
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:
- Escalonamento baseado no uso da CPU
- Escalonamento com base na capacidade de exibição de um balanceador de carga HTTP(S) externo
- Escalonamento com base em métricas do Cloud Monitoring
- Escalonamento com base em programações
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
- No Console do Cloud, acesse a página Grupos de instâncias.
- Clique no nome de um MIG na lista para abrir a página de visão geral desse grupo.
- 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
- No Console do Cloud, acesse a página Grupos de instâncias.
- Clique no nome de um MIG na lista para abrir a página de visão geral desse grupo.
- Clique em Editar para ver e atualizar a configuração atual do grupo, incluindo as configurações de escalonamento automático dele.
- 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 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, se você configurar um período de espera 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 Como usar o escalonamento automático preditivo.
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 o Console do Google Cloud, a ferramenta gcloud
ou a API Compute Engine 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
- No Console do Cloud, acesse a página Grupos de instâncias.
- Clique no nome de um MIG na lista para abrir a página de visão geral desse grupo.
- Clique em Editar para ver a configuração atual do grupo, incluindo as configurações de escalonamento automático.
- 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.
- 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.
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.
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 campoautoscalingPolicy.maxNumReplicas
com um valor inferior ao valor atual dotargetSize
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
emaxNumReplicas
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
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:
No Console do Cloud, acesse a página Grupos de instâncias.
Clique no nome de um MIG escalonado automaticamente na lista para abrir a página de visão geral desse grupo.
Clique em Editar para ver a configuração atual do grupo, incluindo as configurações de escalonamento automático.
Em Escalonamento automático, selecione Ativar controles de redução de escalonamento horizontal.
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.
Em Ao longo de, especifique a frequência com que as instâncias podem ser removidas do grupo.
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 escalonar com base em CPU ou na capacidade de serviço do balanceamento de carga
- Como escalonar com base nas métricas do Cloud Monitoring.
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, substituazones/ZONE
porregions/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. UsemaxScaledInReplicas.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:
No Console do Cloud, acesse a página Grupos de instâncias.
Clique no nome de um MIG escalonado automaticamente na lista para abrir a página de visão geral desse grupo.
Clique em Editar para ver a configuração atual do grupo, incluindo as configurações de escalonamento automático.
Em Escalonamento automático, desmarque a caixa de seleção Ativar controles de redução de escalonamento horizontal.
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 ver uma lista de escalonadores atuais e os MIGs de destino, use o métodoautoscalers.aggregatedList
.
Como excluir um escalonador automático
É possível excluir permanentemente o recurso do escalonador automático e o histórico dele usando o
Console do Google Cloud, a ferramenta gcloud
ou a API do 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 e histórico dele, desative o
escalonador automático.
Console
No Console do Cloud, acesse a página Grupos de instâncias.
Clique no nome de um MIG na lista para abrir a página de visão geral desse grupo.
Clique em Editar para ver a configuração atual do grupo, incluindo as configurações de escalonamento automático.
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.
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
- Saiba como os escalonadores automáticos tomam decisões.
- Saiba como usar vários sinais de escalonamento automático para escalonar seu grupo.