Escalonamento com base em previsões


É possível configurar o escalonamento automático para um grupo de instâncias gerenciadas (MIG, na sigla em inglês) para adicionar ou remover automaticamente instâncias de máquina virtual (VM) com base em aumentos ou diminui na carga. No entanto, se o aplicativo levar alguns minutos ou mais para ser inicializado, a adição de instâncias em resposta a alterações em tempo real talvez não aumente a capacidade do aplicativo rápido o suficiente. Por exemplo, se houver um grande aumento na carga (como quando os usuários ligam pela manhã pela primeira vez), alguns usuários poderão passar por atrasos enquanto seu aplicativo é inicializado em novas instâncias.

Use o escalonamento automático preditivo para melhorar os tempos de resposta para aplicativos com longos tempos de inicialização e cujas cargas de trabalho variam de maneira previsível com ciclos diários ou semanais.

Quando você ativa o escalonamento automático preditivo, o Compute Engine prevê a carga futura com base no histórico do MIG e escalona horizontalmente o MIG antes da carga prevista, para que novas instâncias estejam prontas para servir quando a carga chegar. Sem o escalonamento automático preditivo, um autoescalador só pode escalonar um grupo de modo reativo, com base nas alterações observadas na carga em tempo real. Com o escalonamento automático preditivo ativado, o autoescalador trabalha com dados em tempo real e com dados históricos para cobrir a carga atual e prevista. Para mais informações, consulte Como funciona o escalonamento automático preditivo e Como verificar se o escalonamento automático preditivo é adequado para a carga de trabalho.

Antes de começar

  • Para usar os exemplos de linha de comando deste guia, instale a Google Cloud CLI ou inicie o Cloud Shell.
  • Leia sobre os fundamentos do escalonador automático.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Preços

O escalonamento automático preditivo é gratuito. Porém, se você ativar o escalonamento automático preditivo para garantir a disponibilidade, pagará pelos recursos do Compute Engine que seu MIG usa.

Limitações

  • O escalonamento automático preditivo funciona somente com a utilização da CPU como métrica de escalonamento. As métricas do Cloud Load Balancing ou do Cloud Monitoring não são compatíveis.
  • O Compute Engine requer três dias de histórico de escalonamento automático baseado em CPU antes de gerar previsões.
  • As previsões são baseadas em padrões de carga semanais e diários. O Compute Engine não prevê eventos mensais, anuais ou únicos, e não prevê padrões de carregamento com menos de 10 minutos. É possível usar o escalonamento automático baseado em programação para solicitar capacidade para um ou mais padrões de carga.

Cargas de trabalho adequadas

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.

Se a inicialização do serviço levar muito tempo, os usuários poderão enfrentar a latência depois de um evento de escalonamento horizontal, ou seja, enquanto as novas VMs forem provisionadas, mas ainda não estiverem sendo exibidas. O escalonamento automático preditivo leva em consideração o tempo de inicialização do aplicativo e escalona antecipadamente antes de aumentos previstos no uso. Isso ajuda a garantir que o número de instâncias de exibição disponíveis seja suficiente para a utilização de destino.

Para saber como o escalonamento automático preditivo pode afetar seu grupo, consulte Como verificar se o escalonamento automático preditivo é adequado para sua carga de trabalho.

Como ativar e desativar o escalonamento automático preditivo

É possível ativar o escalonamento automático preditivo ao escalonar com base na utilização da CPU. Para mais informações sobre como configurar o escalonamento automático baseado em CPU, consulte Como escalonar com base na utilização da CPU.

Se o MIG não tiver histórico do escalonador automático, poderá levar três dias para que o algoritmo preditivo afete o autoescalador. Durante esse período, o grupo é escalonado com base somente em dados em tempo real. Após três dias, o grupo começa a ser escalonado usando predições. is medida que mais carga do histórico é coletada, o autoescalador preditivo entende melhor seus padrões e suas previsões. O Compute Engine usa até três semanas do histórico de carga do MIG para alimentar o modelo de machine learning.

Console

  1. No Console do Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Na lista, clique no nome de um MIG para abrir a página de visão geral do grupo.

  3. Clique em Editar.

  4. Se não existir uma configuração de escalonamento automático, em Escalonamento automático, clique em Configurar escalonamento automático.

  5. Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.

  6. Especifique os números mínimo e máximo de instâncias que você quer que o autoescalador crie nesse grupo.

  7. Na seção Métricas de escalonamento automático, se uma métrica de utilização de CPU ainda não existir, adicione uma:

    1. Clique em Adicionar métrica.
    2. Em Tipo de métrica, selecione Utilização de CPU.
    3. Informe a utilização de CPU de destino que você quer. Esse valor é tratado como uma porcentagem. Por exemplo, para ter 75% de utilização da CPU, insira 75.
    4. Em Escalonamento automático preditivo, selecione Otimizar para disponibilidade para ativar o escalonamento automático preditivo.
      • Como alternativa, se você quiser desativar o algoritmo preditivo e usar apenas o autoescalador em tempo real, selecione Desativado.
    5. Clique em Concluído.
  8. Em Período de inicialização, especifique quanto tempo leva para o aplicativo ser inicializado em uma nova instância. Essa configuração informa ao autoescalador preditivo para escalonar ainda mais antes da carga prevista, para que os aplicativos sejam inicializados quando a carga chegar.

  9. Clique em Save.

gcloud

Ao configurar ou atualizar o autoescalador de um MIG, inclua a sinalização --cpu-utilization-predictive-method com um dos seguintes valores:

  • optimize-availability: para ativar o algoritmo preditivo
  • none (padrão): para desativar o algoritmo preditivo

Se o escalonamento automático baseado em CPU ainda não estiver ativado para o grupo, será necessário ativá-lo. Use o comando set-autoscaling para configurar a política de escalonamento automático de um grupo do zero. Por exemplo, o comando a seguir mostra como configurar o escalonamento automático com as seguintes configurações:

  • Escalonamento automático preditivo ativado.
  • Meta de uso da CPU de 75%.
  • O número máximo de instâncias definido como 20.
  • Um período de inicialização (--cool-down-period) definido como cinco minutos. Essa configuração informa ao autoescalador preditivo para escalonar cinco minutos antes da carga antecipada, para que os aplicativos sejam inicializados quando a carga chegar.
gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method optimize-availability \
  --target-cpu-utilization 0.75 \
  --max-num-replicas 20 \
  --cool-down-period 300

Se o escalonamento automático baseado em CPU já estiver ativado para o grupo, use o comando update-autoscaling para ativar o algoritmo preditivo:

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method=optimize-availability

REST

Ao criar ou atualizar um autoescalador, inclua o campo predictiveMethod no corpo da solicitação com um dos seguintes valores:

  • OPTIMIZE_AVAILABILITY: para ativar o algoritmo preditivo
  • NONE (padrão): para desativar o algoritmo preditivo

Se o grupo não tiver uma configuração de escalonamento automático, faça o seguinte:

Se o grupo já tiver uma configuração de escalonamento automático, faça o seguinte:

Se o escalonamento automático baseado em CPU ainda não estiver ativado para o grupo, será necessário ativá-lo.

Por exemplo, a solicitação a seguir corrige um recurso de escalonamento automático atual para ativar o escalonamento automático baseado em CPU com as seguintes configurações:

  • Escalonamento automático preditivo ativado.
  • Meta de uso da CPU de 75%.
  • O número máximo de instâncias definido como 20.
  • Um período de inicialização (coolDownPeriodSec) definido como cinco minutos. Essa configuração informa ao autoescalador preditivo para escalonar cinco minutos antes da carga antecipada, para que os aplicativos sejam inicializados quando a carga chegar.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers/

{
  "name": "AUTOSCALER_NAME",
  "target": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME",
  "autoscalingPolicy": {
    "cpuUtilization": {
       "utilizationTarget": 0.75,
       "predictiveMethod": "OPTIMIZE_AVAILABILITY"
     },
    "maxNumReplicas": 20,
    "coolDownPeriodSec": 300
  }
}

Como verificar se o autoescalador preditivo está ativado

Para ver a configuração de escalonamento automático atual de um MIG, consulte Como conseguir as propriedades de um MIG.

Como configurar o escalonamento automático preditivo

Para mais informações sobre como configurar a utilização de destino, o número mínimo e máximo de instâncias e o período de inicialização, consulte Escalonamento baseado na utilização de CPU. Quando você configura essas opções, o autoescalador preditivos mantém todas as instâncias no nível de utilização de destino definido, dentro dos limites mínimo e máximo do grupo, da mesma maneira que um autoescalador em tempo real.

Use a configuração do período de inicialização para contabilizar o tempo necessário para a inicialização do aplicativo. Essa configuração influencia até onde o autoescalador preditivo inicia novas instâncias antes do aumento previsto na carga, para que seu aplicativo esteja pronto para servir quando a carga chegar.

Como verificar se o escalonamento automático preditivo é adequado para sua carga de trabalho

Para ver se o escalonamento automático preditivo pode melhorar a disponibilidade do seu aplicativo, compare o desempenho da configuração atual de escalonamento automático baseado em CPU do grupo com o escalonamento automático preditivo. Não é necessário ativar o escalonamento automático preditivo para fazer a comparação.

Para mais informações sobre cargas de trabalho adequadas para escalonamento automático preditivo, consulte Cargas de trabalho adequadas.

Como verificar sobrecargas

O MIG com escalonamento automático é sobrecarregado quando a utilização média da CPU excede seu objetivo. Para verificar se sua configuração de escalonamento automático resultou em VMs sobrecarregadas durante os últimos sete dias e para ver se o escalonamento automático preditivo pode reduzir cargas superiores, conclua as seguintes etapas:

  1. No Console do Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique em um MIG atual em que o escalonamento automático baseado em CPU esteja configurado. A página de visão geral do grupo é aberta.

  3. Clique em Editar.

  4. Na seção Escalonamento automático, em Métricas de escalonamento automático, expanda a seção Uso da CPU e clique em Ver se a previsão é de previsão. o escalonamento automático pode otimizar sua disponibilidade.

  5. Com base nos dados dos últimos sete dias, a tabela mostra quantas VMs foram usadas por dia e quantas VMs foram sobrecarregadas por dia nas seguintes linhas:

    • Configuração de escalonamento automático atual: mostra o desempenho do autoescalador com base na configuração do autoescalador nos últimos sete dias.
    • Com o escalonamento automático de previsão definido como "Otimizar para disponibilidade": mostra o desempenho do autoescalador se o escalonamento automático preditivo fosse ativado nos últimos sete dias.

É possível usar o "Número de VMs usadas por dia" como proxy para custos. Por exemplo, para reduzir o número diário de VMs sobrecarregadas, o autoescalador preditivo pode criar VMs anteriormente e executá-las por mais tempo, o que resulta em cobranças adicionais.

Como monitorar e simular o escalonamento automático preditivo

Você pode ver o tamanho histórico do grupo usando o Cloud Monitoring. O gráfico de monitoramento mostra como a configuração de escalonamento automático escalonou o grupo ao longo do tempo e também mostra como o escalonamento automático preditivo, se ativado, teria escalonado o grupo.

Para grupos com o escalonamento automático preditivo desativado, use esta ferramenta para simular o escalonamento automático preditivo antes de ativá-lo.

  1. No Console do Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique em um MIG atual em que o escalonamento automático baseado em CPU esteja configurado. A página de visão geral do grupo é aberta.

  3. Clique em Monitoramento para ver os gráficos relacionados ao grupo.

  4. No primeiro gráfico, clique no título e selecione Escalonamento automático de previsão. Essa visualização mostra o tamanho real e o tamanho previsto do grupo.

  5. Selecione um período diferente para ver mais histórico ou aumentar o zoom em um período em que a demanda cresceu para ver como o escalonamento automático preditivo afeta o tamanho do grupo antes da carga prevista.

Como funciona o escalonamento automático preditivo

O escalonador automático preditivo prevê sua métrica de escalonamento com base nas tendências históricas da métrica. As previsões são recalculadas em intervalos de poucos minutos, o que permite ao autoescalador adaptar rapidamente a previsão para alterações muito recentes na carga. O autoescalador preditivo precisa de pelo menos três dias de histórico para determinar um padrão de uso de serviço representativo antes de fornecer previsões. O Compute Engine usa até três semanas do histórico de carga do MIG para alimentar o modelo de machine learning.

O autoescalador preditivo calcula o número de VMs necessárias para atingir a meta de utilização com base em vários fatores, incluindo:

  • O valor futuro previsto da métrica de escalonamento
  • O valor atual da métrica de escalonamento
  • Confiança em tendências anteriores, incluindo a variabilidade da métrica de escalonamento
  • O período de inicialização do aplicativo configurado, também chamado de período de inicialização

Com base nesses fatores, ele faz o escalonamento horizontal do seu grupo antes da demanda prevista.

Comparação da disponibilização de VMs com e sem escalonamento automático preditivo.

Figura 1. Comparação da disponibilização de VMs com e sem escalonamento automático preditivo.

Na figura 1, a linha azul mostra uma demanda crescente de VMs. A linha preta mostra a resposta do autoescalador: mais VMs são adicionadas. No entanto, para aplicativos com longos tempos de inicialização, a linha cinza mostra que as VMs adicionadas exigem mais tempo para ficar prontas para veicular, o que pode resultar em VMs de veiculação insuficientes para atender à demanda. Com o escalonamento automático preditivo ativado, o aumento previsto da demanda e o longo tempo de inicialização do aplicativo são contabilizados: o autoescalador responde adicionando VMs mais cedo, resultando em um número suficiente de VMs de exibição. Você pode configurar com que antecedência novas instâncias são adicionadas definindo o período de inicialização.

Dados de uso em tempo real

O autoescalador preditivo não pode determinar um padrão para todas as alterações futuras no uso com base em dados históricos, o que também funciona perfeitamente com os dados em tempo real. Por exemplo, um evento de notícias inesperado pode contribuir para um aumento no uso que não poderia ser previsto com base apenas no histórico. Para lidar com essas alterações imprevisíveis na carga, o autoescalador preditivo responde da seguinte maneira:

  • Ele adapta as previsões: as previsões são recalculadas constantemente, em minutos, para que se ajustem e incorpore os dados mais recentes. O momento exato dos ajustes em novos padrões depende, entre outras coisas, da repetição do novo padrão e do tamanho da diferença entre o novo padrão e as previsões anteriores.
  • Ele é gerado para dados em tempo real: o número recomendado de instâncias do autoescalador, com base em valores em tempo real da métrica, é sempre suficiente para atender à meta de destino do grupo. Se o valor atual de um sinal em tempo real for maior que a previsão, o valor atual do sinal terá prioridade sobre a previsão. Como resultado, os MIGs que têm escalonamento automático preditivo ativado sempre têm mais disponibilidade que os MIGs que não têm.

Dois gráficos mostram como as previsões se adaptam ao uso real da CPU.

Figura 2. Dois gráficos mostram como as previsões se adaptam ao uso real da CPU.

Na figura 2, a linha amarela pontilhada exibe a previsão em t1. Porém, o uso real da CPU, como mostrado pela linha azul sólida, é diferente do previsto. No gráfico à esquerda, o uso real da CPU é maior que o previsto. No gráfico à direita, o uso real da CPU é menor que o previsto. A linha azul pontilhada mostra a previsão ajustada.

Picos curtos e imprevisíveis

Picos curtos e imprevisíveis são abordados em tempo real. O autoescalador cria pelo menos quantas instâncias forem necessárias para manter a utilização no destino configurado, com base no valor atual da métrica. No entanto, essas instâncias não são criadas com antecedência, como mostrado na figura a seguir.

Um pico curto e imprevisível faz com que o escalonador automático reaja em tempo real.

Figura 3. Um pico curto e imprevisível faz com que o escalonador automático reaja em tempo real.

Na figura 3, a linha azul sólida mostra o uso real da CPU. Não foi possível prever um aumento inesperado no uso da CPU. Como o autoescalador sempre monitora os dados em tempo real, ele adiciona instâncias para acomodar o pico. A linha preta sólida ilustra a adição retroativa de VMs do autoescalador em resposta ao pico. A linha cinza sólida mostra o número de VMs de veiculação. A linha cinza atrasa a linha preta devido ao tempo de inicialização do aplicativo. Nesse cenário, o grupo está temporariamente sobrecarregado.

Declínios repentinos

Outro tipo de alteração imprevisível no uso é uma queda repentina, por exemplo, uma queda causada por uma falha em parte da pilha de aplicativos. Quando isso acontece, o número de instâncias inicialmente segue a previsão. No entanto, com o tempo, a previsão se ajustará ao uso menor do que o previsto, resultando em um escalonamento. O momento exato desse ajuste depende de vários fatores, incluindo: a frequência com que o padrão ocorreu no passado, quanto tempo dura a queda e a profundidade da diminuição.

Uma queda repentina faz com que o escalonador automático preditivo altere a previsão dele.

Figura 4 Uma queda repentina faz com que o escalonador automático preditivo altere a previsão dele.

Na figura 4, a linha amarela pontilhada exibe a previsão em t1. Porém, o uso real da CPU, como mostrado pela linha azul sólida, ficou abaixo do previsto. A linha azul pontilhada mostra a previsão atualizada, que foi ajustada automaticamente após observar o uso de previsão menor que a previsão. Isso faz com que o autoescalador remova as instâncias após o período de estabilização padrão.

Dados históricos

O autoescalador preditivo precisa de pelo menos três dias de carga histórica para começar a fazer a previsão. Se você tiver um novo MIG que não tenha dados históricos, o Compute Engine escalonará seu grupo de maneira reativa usando dados em tempo real até que dados históricos suficientes fiquem disponíveis. Após três dias, à medida que o Compute Engine coleta dados de uso extras, as previsões melhoram.

Se você atualizar o aplicativo criando um novo MIG e excluindo o antigo (por exemplo, uma implantação azul-verde), ele precisará de três dias de dados de carga históricos para que o escalonamento automático preditivo possa começar a gerar as previsões novamente. Se você quiser preservar o histórico de carga nos MIGs de modo que as previsões possam ser iniciadas imediatamente ao criar um novo MIG, entre em contato conosco para solicitar instruções para participar de uma visualização particular.

A seguir