Como fazer o escalonamento automático de grupos de instâncias

Os grupos de instâncias gerenciadas (MIGs, na sigla em inglês) oferecem recursos de escalonamento que permitem adicionar ou excluir automaticamente instâncias de máquina virtual (VM) em um MIG de acordo com os aumentos ou reduções na carga. O escalonamento automático ajuda seus apps a processar aumentos de tráfego de forma eficiente e reduzir os custos quando a necessidade de recursos é menor. Para isso, defina a política de escalonamento automático. O autoescalador realizará o escalonamento automático com base na carga medida e nas opções configuradas.

O escalonamento automático é feito com a adição de VMs adicionais ao MIG quando há mais carga (escalonamento horizontal, às vezes chamado de vertical) e a exclusão de VMs quando a demanda é reduzida (escalonamento vertical ou horizontal).

Especificações

  • O escalonamento automático só funciona com grupos de instâncias gerenciadas (MIGs, na sigla em inglês) zonais ou regionais. Grupos de instâncias não gerenciadas não são compatíveis.
  • Para escalonar automaticamente um MIG regional, as seguintes limitações se aplicam:

  • Não é possível criar instâncias com nomes específicos enquanto o escalonamento automático está ativado. No entanto, é possível ativar o escalonador automático após a criação de instâncias de VM com nomes específicos.

  • Não será possível usar o escalonamento automático se o MIG tiver uma configuração com estado.

  • Não use o escalonamento automático do Compute Engine com MIGs que pertencem ao Google Kubernetes Engine. Em vez disso, use o escalonamento automático de clusters.

    Caso você não tenha certeza se o grupo faz parte de um Cluster do GKE, procure o prefixo gke no nome do MIG. Por exemplo, gke-test-1-3-default-pool-eadji9ah.

  • Com um escalonador automático, é possível tomar decisões de escalonamento com base em várias métricas, no entanto, só é possível gerenciar um sinal por tipo de métrica, exceto no caso das métricas do Cloud Monitoring. Com um escalonador automático também é possível gerenciar até cinco sinais com base nas métricas do Monitoring. O escalonador automático calcula o número recomendado de máquinas virtuais para cada política e, em seguida, escalona com base no sinal que fornece o maior número de máquinas virtuais no grupo.

  • O escalonamento automático funciona independentemente da recuperação automática. Se você configurou a recuperação automática para o grupo e uma instância falhou na verificação de integridade, ela tentará recriar a instância. Recriar uma instância pode fazer com que o número de instâncias no grupo fique abaixo do limite de escalonamento automático (minNumReplicas) especificado.

  • Se você escalonar automaticamente um MIG regional, uma instância poderá ser adicionada e excluída imediatamente em uma das zonas. Isso acontece quando a utilização na zona aciona um escalonamento horizontal, mas a utilização geral no MIG regional não requer a instância extra ou a instância adicional é necessária em uma zona diferente.

Pré-requisitos

O escalonador automático usa a conta de serviço do sistema do Compute Engine para adicionar e remover instâncias no grupo. O Google Cloud cria automaticamente essa conta de serviço, assim como a política do IAM vinculada ao papel de agente de serviço do Compute Engine, quando a API Compute Engine está ativada.

Se o projeto não tiver essa conta, por exemplo, se você a tiver removido, poderá adicioná-la manualmente:

Console

  1. No Console do Cloud, acesse a página IAM.

    Acessar IAM

  2. Clique em Add.

  3. Insira service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com.

  4. Selecione o papel de Agente de serviço do Compute Engine.

  5. Clique em Save.

gcloud

gcloud projects add-iam-policy-binding PROJECT_ID \
   --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
   --role roles/compute.serviceAgent

Noções básicas

O escalonamento automático utiliza os conceitos e serviços fundamentais a seguir.

Grupos de instâncias gerenciadas

O escalonamento automático é um recurso dos grupos de instâncias gerenciadas (MIGs, na sigla em inglês). Um grupo de instâncias gerenciadas é um conjunto de instâncias de máquina virtual (VM) criado a partir de um modelo de instância comum. Um autoescalador adiciona ou exclui instâncias de um grupo com base na política de escalonamento automático do grupo. No Compute Engine, você tem os grupos de instâncias gerenciados e não gerenciados, mas somente os gerenciados podem ser usados com um autoescalador.

Para entender a diferença entre um grupo de instâncias gerenciadas e um grupo de instâncias não gerenciadas, consulte Grupos de instâncias.

Para saber como criar um grupo de instâncias gerenciadas, consulte Como criar MIGs.

Política de escalonamento automático

Ao definir uma política de escalonamento automático para seu grupo, você especifica um ou mais sinais que o escalonador automático usa para escalonar o grupo. Quando você define vários sinais em uma política, o escalonador automático calcula o número de VMs recomendado para cada sinal e define o tamanho recomendado do grupo para o maior número.

Nas seções a seguir, fornecemos uma visão geral dos sinais com base nas métricas de utilização de destino e nos sinais com base em programações.

Métricas de utilização de destino

É possível fazer escalonamento automático com base em uma ou mais das métricas a seguir que refletem a carga do grupo de instâncias:

  • Uso médio da CPU.
  • Capacidade de serviço de balanceamento de carga HTTP, que pode se basear em utilização ou solicitações por segundo.
  • Métricas do Cloud Monitoring.

O escalonador automático coleta continuamente informações de uso com base na métrica de utilização selecionada, compara a utilização real com a utilização de destino desejada e usa essas informações para determinar se o grupo precisa remover instâncias (escalonamento vertical) ou adicionar instâncias (escalonamento horizontal).

O nível de utilização de destino é o nível no qual você pretende manter as instâncias da máquina virtual (VM, na sigla em inglês). Por exemplo, se você escala com base na utilização da CPU, pode definir o nível de utilização de destino em 75%, e o autoescalador manterá a utilização da CPU do grupo especificado de instâncias em 75% ou perto desse valor. O nível de utilização de cada métrica é interpretado de maneira diferente com base na política de escalonamento automático.

Para mais informações sobre o escalonamento com base nas métricas de utilização de destino, consulte as seguintes páginas:

Programações

Use o escalonamento automático baseado em programação para alocar capacidade para cargas previstas. É possível ter até 128 programações de escalonamento por grupo de instâncias. Para cada programação de escalonamento, especifique o seguinte:

  • Capacidade: mínimo de instâncias de VM necessárias
  • Programação: horário de início, duração e recorrência (por exemplo, uma vez, diariamente, semanalmente ou mensalmente)

Cada programação de escalonamento fica ativa a partir do horário de início e durante a duração configurada. Durante esse período, o escalonador automático dimensiona o grupo para ter pelo menos quantas instâncias forem definidas pela programação de escalonamento.

Para mais informações, consulte Como escalonar com base em programações.

Período de resfriamento

O período de espera também é conhecido como período de inicialização do aplicativo. O Compute Engine usa o período de espera para tomar decisões de escalonamento de duas maneiras:

  • Para omitir dados de uso incomuns após a criação de uma VM e a inicialização do aplicativo.
  • Se o escalonamento automático preditivo estiver ativado, para informar ao autoescalador o tempo necessário para escalonar verticalmente antes da carga prevista, para que os aplicativos sejam inicializados quando a carga chegar.

Enquanto um aplicativo é inicializado em uma instância, o uso da instância pode não refletir circunstâncias normais. Assim, as informações de uso podem não ser confiáveis para decisões do escalonador automático, e convém omitir esses dados. Especifique um período de espera para permitir que suas instâncias concluam a inicialização antes que o escalonador automático comece a coletar informações de uso delas. Por padrão, o período de espera é de 60 segundos.

Se você ativar o modo preditivo, o período de espera informará o autoescalador preditivo para escalonar ainda mais antes da carga prevista, de modo que os aplicativos sejam inicializados quando a carga chegar. Por exemplo, se você definir o período de espera como 300 segundos, o autoescalador preditivo criará VMs cinco minutos antes da carga prevista.

Os tempos reais de inicialização variam de acordo com vários fatores. Recomendamos que você teste quanto tempo leva para que seu aplicativo seja inicializado. Para fazer isso, crie uma instância e cronometre o processo de inicialização desde o momento em que a instância esteja RUNNING até que o aplicativo esteja pronto.

Se você definir um valor de período de espera significativamente maior que o tempo que uma instância leva para ser inicializada, talvez o escalonador automático ignore os dados de uso legítimos e subestime o tamanho exigido pelo grupo, o que causará um atraso no escalonamento horizontal.

Período de estabilização

Para fins de redução horizontal, o escalonador automático calcula o tamanho alvo recomendado do grupo com base na carga de pico dos últimos 10 minutos. Esses últimos 10 minutos são chamados de período de estabilização.

Com o período de estabilização, o escalonador automático garante que o tamanho recomendado para o grupo de instâncias gerenciadas seja sempre suficiente para atender a demanda da carga de pico observada durante os 10 minutos anteriores.

Esse período de estabilização pode aparecer como um atraso no escalonamento vertical. Mas, na verdade, é um recurso integrado de escalonamento automático. O atraso garante que o tamanho do grupo menor seja suficiente para oferecer suporte à carga máxima dos últimos 10 minutos.

Modo de escalonamento automático

Se você precisar investigar ou configurar seu grupo sem interferência das operações de escalonamento automático, desative ou restrinja atividades de escalonamento automático temporariamente. A configuração do autoescalador permanece enquanto ele está desativado ou restrito, e todas as atividades de escalonamento automático são retomadas quando você o liga novamente ou remove a restrição.

Escalonamento automático de previsão

Se você ativar o escalonamento automático preditivo para otimizar seu MIG para disponibilidade, o autoescalador prevê a carga futura com base em dados históricos e dimensiona um MIG antes da carga prevista, para que novas instâncias estejam prontas para servir quando o carregamento chegar.

O escalonamento automático preditivo funciona melhor se a carga de trabalho atender a estes 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.

Controles de redução horizontal

Se as cargas de trabalho levarem muitos minutos para serem inicializadas (por exemplo, por causa das tarefas de instalação demoradas), é possível reduzir o risco de latência de resposta causada por eventos de escalonamento vertical abruptos. Para fazer isso, basta configurar controles. Especificamente, se você espera que os picos de carga ocorram logo após as recusas, limite a taxa de escalonamento vertical para evitar que o escalonamento automático reduza o tamanho de um MIG em mais instâncias de VM do que sua carga de trabalho pode tolerar.

Você não precisará configurar controles de escalonamento vertical se o aplicativo for inicializado rápido o suficiente para detectar picos de carga no escalonamento horizontal.

Para configurar controles de escalonamento vertical, defina as seguintes propriedades na política de escalonamento automático.

  • Redução máxima permitida. O número de instâncias de VM que sua carga de trabalho pode perder (a partir do tamanho do pico) dentro da janela de tempo especificada anteriormente. Use esse parâmetro para limitar quanto seu grupo pode ser escalonado verticalmente. Dessa forma, ainda será possível exibir um pico de carga provável até que mais instâncias comecem a ser exibidas. Quanto menor for a redução máxima permitida, mais tempo levará para que o grupo seja escalonado verticalmente.

  • Janela de tempo anterior. O histórico em que o escalonador automático monitora o tamanho de pico exigido pela carga de trabalho. O escalonador automático não será redimensionado abaixo da redução máxima permitida subtraída do tamanho de pico observado nesse período. É possível usar esse parâmetro para definir quanto tempo o escalonador automático deve aguardar antes de remover instâncias, conforme definido pela redução máxima permitida. Com uma janela de tempo anterior mais longa, o escalonador automático considera picos mais históricos, tornando o escalonamento vertical mais conservador e estável.

Para mais informações, veja como configurar controles de escalonamento vertical (em inglês) e Como compreender as decisões do escalonador automático.

O tamanho de grupo recomendado é o número recomendado de VMs do escalonador automático que o grupo de instâncias gerenciadas deve manter, com base na carga de pico observada durante os últimos 10 minutos. Esses 10 minutos são chamados de período de estabilização. O tamanho recomendado é recalculado constantemente. Se você definir uma política de escalonamento automático com controles de escalonamento vertical, o tamanho recomendado será restringido por esses controles.

Preços

Não há custo extra para configurar uma política de escalonamento automático. O autoescalador adiciona ou exclui dinamicamente instâncias de VM, portanto, você é cobrado apenas pelos recursos que seu MIG usa. Controle o custo do recurso configurando o número mínimo e máximo de instâncias na política de escalonamento automático. Para informações sobre preços do Compute Engine, consulte Preços.

A seguir

  1. Se você não tiver um MIG, confira como criar um grupo de instâncias gerenciadas.
  2. Crie um escalonador automático que age de acordo com:

  3. Gerencie seu escalonador automático, por exemplo, para ver informações sobre ele, configurar controles de escalonamento vertical ou aplicar restrições temporárias.