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 adiciona mais VMs ao MIG quando há mais carga (escalonamento horizontal) e exclui VMs quando a demanda é menor (escalonamento vertical).

Pré-requisitos

O escalonador automático usa o agente de serviço do Compute Engine para adicionar e remover instâncias do 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 Google Cloud, abra a página IAM.

    Acessar IAM

  2. Clique em Conceder acesso.

  3. No campo Novos participantes, 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.

Uma política de escalonamento automático precisa ter pelo menos um sinal de escalonamento. Quando você ativa o escalonamento automático em um MIG, por padrão, o escalonador automático adiciona um sinal de uso da CPU. Você pode editar esse indicador padrão ou remover e adicionar outros indicadores à política.

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 exibição do balanceamento de carga HTTP
  • 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 inicialização

O período de inicialização, anteriormente conhecido como período de espera, é a duração necessária para os aplicativos serem inicializados nas instâncias de VM. Durante a inicialização de um aplicativo em uma instância, os dados de uso da instância podem não refletir circunstâncias normais. Portanto, o autoescalador usa o período de inicialização para tomar decisões de escalonamento das seguintes maneiras:

  • Para as decisões de escalonamento vertical, o escalonador automático considera os dados de uso de todas as instâncias, mesmo as que ainda estão no período de inicialização. O escalonador automático recomenda remover instâncias se a utilização média de todas elas for menor que a meta de utilização.
  • Para decisões de escalonamento horizontal, o autoescalador ignora os dados de uso de instâncias que ainda estão no período de inicialização.
  • Se você ativar o modo preditivo, o período de inicialização informará o escalonador automático preditivo para escalonar horizontalmente 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 inicialização como 300 segundos, o escalonador automático preditivo criará VMs cinco minutos antes da carga prevista.

Por padrão, o período de inicialização é de 60 segundos. 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 inicialização 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

Os sinais de escalonamento automático, como o uso da CPU, não são muito estáveis e podem mudar rapidamente. À medida que a carga aumenta e diminui, o escalonador automático precisa estabilizar o sinal para evitar a exclusão e a criação contínuas de VMs. O escalonador automático estabiliza um sinal, mantendo capacidade de VM suficiente para atender à carga de pico observada durante o período de estabilização.

O período de estabilização é igual a 10 minutos ou ao período de inicialização definido, o que for mais longo. O período de estabilização é usado apenas para decisões de redução de escalonamento vertical quando o escalonador automático precisa excluir VMs.

Quando a carga diminui, o escalonador automático não exclui VMs imediatamente. O escalonador automático mantém a capacidade de monitoramento necessária durante o período de estabilização e exclui VMs apenas quando há capacidade suficiente para atender à carga de pico. Isso pode parecer um atraso na redução de escalonamento horizontal, mas é um recurso integrado do escalonamento automático.

Se o aplicativo levar mais de 10 minutos para inicializar em uma nova VM, o escalonador automático usará o período de inicialização em vez dos 10 minutos padrão de estabilização para aguardar a exclusão da VM. Isso garante que a decisão de excluir a VM do escalonador automático leve em consideração o tempo necessário para recuperar a capacidade de exibição.

Quando a carga sobe, o escalonador automático não usa o período de estabilização e cria imediatamente quantas VMs forem necessárias para atender à demanda.

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

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.

Limitações

O que acontece durante a recuperação automática

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. Enquanto uma instância está sendo recriada pelo MIG, o número de instâncias em execução no grupo pode ser menor que o número mínimo de instâncias especificado para o grupo (autoscalingPolicy.minNumReplicas).

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. Saiba como o escalonamento automático funciona em um MIG regional.
  2. Se você não tiver um MIG, confira como criar um grupo de instâncias gerenciadas.
  3. Crie um escalonador automático que age de acordo com:

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