Escalabilidade com base em previsões

Pode configurar a escala automática para um grupo de instâncias geridas (GIG) para adicionar ou remover automaticamente instâncias de máquinas virtuais (VMs) com base nos aumentos ou nas diminuições da carga. No entanto, se a sua aplicação demorar alguns minutos ou mais a inicializar, a adição de instâncias em resposta a alterações em tempo real pode não aumentar a capacidade da sua aplicação com rapidez suficiente. Por exemplo, se houver um grande aumento na carga (como quando os utilizadores acordam de manhã), alguns utilizadores podem sofrer atrasos enquanto a sua aplicação está a ser inicializada em novas instâncias.

Pode usar o dimensionamento automático preditivo para melhorar os tempos de resposta das aplicações com longos tempos de inicialização e cujas cargas de trabalho variam de forma previsível com ciclos diários ou semanais.

Quando ativa a escala automática preditiva, o Compute Engine prevê a carga futura com base no histórico do GIG e aumenta a escala do GIG antes da carga prevista, para que as novas instâncias estejam prontas para servir quando a carga chegar. Sem a escalabilidade automática preditiva, um escalador automático só pode dimensionar um grupo de forma reativa, com base nas alterações observadas na carga em tempo real. Com o dimensionamento automático preditivo ativado, o dimensionador automático funciona com dados em tempo real, bem como com dados do histórico, para cobrir a carga atual e prevista. Para mais informações, consulte os artigos Como funciona o dimensionamento automático preditivo e Verificar se o dimensionamento automático preditivo é adequado para a sua carga de trabalho.

Antes de começar

  • Se quiser usar os exemplos de linhas de comando neste guia, instale a CLI do Google Cloud ou inicie a Cloud Shell.
  • Leia acerca dos princípios básicos do escalamento automático.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Preços

A escala automática preditiva não tem custos financeiros. No entanto, se ativar a criação de uma escala automática preditiva para otimizar a disponibilidade, paga pelos recursos do Compute Engine que o GIG usa.

Limitações

  • A escala automática preditiva só funciona com a utilização da CPU como métrica de escalabilidade. As métricas do Cloud Load Balancing ou do Cloud Monitoring não são suportadas.
  • O Compute Engine requer 3 dias de histórico de escalamento automático baseado na CPU antes de poder gerar previsões.
  • As previsões baseiam-se em padrões de cárdio semanais e diários. O Compute Engine não prevê eventos mensais, anuais ou únicos, nem prevê padrões de carga com menos de 10 minutos. Pode usar a criação de escala automática baseada em horários para pedir capacidade para padrões de carga únicos ou outros.

Cargas de trabalho adequadas

O dimensionamento automático preditivo funciona melhor se a sua carga de trabalho cumprir os seguintes critérios:

  • A sua aplicação demora muito tempo a inicializar, por exemplo, se configurar um período de inicialização de mais de 2 minutos.
  • A sua carga de trabalho varia de forma previsível com ciclos diários ou semanais.

Se o seu serviço demorar muito tempo a inicializar, os utilizadores podem sentir latência do serviço após um evento de expansão, ou seja, enquanto as novas VMs são aprovisionadas, mas ainda não estão a servir. O dimensionamento automático preditivo tem em conta o tempo de inicialização da sua aplicação e aumenta a escala antes dos aumentos previstos na utilização, o que ajuda a garantir que o número de instâncias de publicação disponíveis é suficiente para a utilização alvo.

Para pré-visualizar como o redimensionamento automático preditivo pode afetar o seu grupo, consulte o artigo Verificar se o redimensionamento automático preditivo é adequado para a sua carga de trabalho.

Ativar e desativar o dimensionamento automático preditivo

Pode ativar a escala automática preditiva quando a escala se baseia na utilização da CPU. Para mais informações sobre a configuração do ajuste de escala automático baseado na CPU, consulte o artigo Ajuste de escala com base na utilização da CPU.

Se o MIG não tiver histórico do escalador automático, podem decorrer 3 dias antes de o algoritmo preditivo afetar o escalador automático. Durante este período, o grupo é dimensionado com base apenas nos dados em tempo real. Após 3 dias, o grupo começa a ser dimensionado com base em previsões. À medida que são recolhidos mais dados do histórico de carga, o escalador automático preditivo compreende melhor os seus padrões de carga e as respetivas previsões melhoram. O Compute Engine usa até 3 semanas do histórico de carga do seu MIG para alimentar o modelo de aprendizagem automática.

Consola

  1. Na consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Na lista, clique no nome de um GMI existente para abrir a página de vista geral do grupo.

  3. Clique em Edit.

  4. Clique em Tamanho do grupo e ajuste automático da escala para expandir a secção e fazer o seguinte:

    1. Se a configuração do ajuste de escala automático não existir, configure o ajuste de escala automático da seguinte forma:

      1. Na secção Ajuste automático da escala, clique em Configurar ajuste automático da escala. O sinal de utilização da CPU é adicionado por predefinição.
      2. Especifique os números mínimo e máximo de instâncias que quer que o escalador automático crie neste grupo.
      3. Na secção Sinais de dimensionamento automático, clique no sinal de utilização da CPU.
      4. Modifique o Tipo de sinal e a Utilização da CPU alvo, conforme necessário.
      5. Na secção Ajuste de escala automático preditivo, selecione Otimizar para disponibilidade para ativar o ajuste de escala automático preditivo.

        • Em alternativa, se quiser desativar o algoritmo preditivo e usar apenas o escalador automático em tempo real, selecione Desativado.
      6. Clique em Concluído.

    2. Se a criação de uma escala automática com base na utilização da CPU já estiver configurada, faça o seguinte:

      1. Na secção Sinais de dimensionamento automático, clique no sinal de utilização da CPU.
      2. Na secção Ajuste de escala automático preditivo, selecione Otimizar para disponibilidade para ativar o ajuste de escala automático preditivo.
    3. Clique em Concluído.

  5. Na secção Período de inicialização, especifique o tempo que a sua aplicação demora a inicializar numa nova instância. Esta definição informa o escalador automático preditivo para aumentar a escala com maior antecedência em relação à carga prevista, de modo que as aplicações sejam inicializadas quando a carga chegar.

  6. Clique em Guardar.

gcloud

Quando definir ou atualizar o escalador automático de um MIG, inclua a flag --cpu-utilization-predictive-method com um dos seguintes valores:

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

Se o redimensionamento automático baseado na CPU ainda não estiver ativado para o grupo, tem de o ativar. Pode usar o comando set-autoscaling para configurar uma política de escalamento automático de um grupo de raiz. Por exemplo, o comando seguinte mostra como configurar o dimensionamento automático com as seguintes definições:

  • Escala automática preditiva ativada.
  • Utilização da CPU alvo de 75%.
  • O número máximo de instâncias está definido como 20.
  • Um período de inicialização (--cool-down-period) definido para 5 minutos. Esta definição informa o escalador automático preditivo para aumentar a escala 5 minutos antes da carga prevista, para que as aplicações sejam inicializadas 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 dimensionamento automático baseado na 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

Quando criar ou atualizar um escalador automático, inclua o campo predictiveMethod no corpo do pedido com um dos seguintes valores:

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

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

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

Se o redimensionamento automático baseado na CPU ainda não estiver ativado para o grupo, tem de o ativar.

Por exemplo, o pedido seguinte aplica patches a um recurso de redimensionador automático existente para ativar o redimensionamento automático baseado na CPU com as seguintes definições:

  • Escala automática preditiva ativada.
  • Utilização da CPU alvo de 75%.
  • O número máximo de instâncias está definido como 20.
  • Um período de inicialização (coolDownPeriodSec) definido para 5 minutos. Esta definição informa o escalador automático preditivo para aumentar a escala 5 minutos antes da carga prevista, para que as aplicações sejam inicializadas 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
  }
}

A verificar se o redimensionador automático preditivo está ativado

Para ver a configuração atual do redimensionamento automático de um MIG, consulte o artigo Obter as propriedades de um MIG.

Configurar a escala automática preditiva

Para mais informações sobre como configurar a utilização alvo, o número mínimo e máximo de instâncias, e o período de inicialização, consulte o artigo Dimensionamento com base na utilização da CPU. Quando configura estas opções, o escalador automático preditivo funciona para manter todas as instâncias no nível de utilização alvo que define, dentro dos limites mínimo e máximo do grupo, da mesma forma que um escalador automático em tempo real.

Use a definição do período de inicialização para ter em conta o tempo que a sua aplicação demora a inicializar. Esta definição influencia a antecedência com que o escalador automático preditivo inicia novas instâncias antes do aumento previsto da carga, para que a sua aplicação esteja pronta para servir quando a carga chegar.

Verificar se o dimensionamento automático preditivo é adequado para a sua carga de trabalho

Para ver se o escalamento automático preditivo pode melhorar a disponibilidade da sua aplicação, pode comparar o desempenho da configuração de escalamento automático atual baseada na CPU do seu grupo com o escalamento automático preditivo. Não tem de ativar o ajuste de escala automático preditivo para fazer a comparação.

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

A verificar sobrecargas

O MIG com escalonamento automático está sobrecarregado quando a utilização média da CPU excede o destino. Para verificar se a configuração do dimensionamento automático resultou em VMs sobrecarregadas durante os últimos 7 dias e para ver se o dimensionamento automático preditivo pode reduzir as sobrecargas, conclua os seguintes passos:

  1. Na consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique num GIG existente para o qual a escala automática baseada na CPU está configurada. É aberta a página de vista geral do grupo.

  3. Clique em Edit.

  4. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.

  5. Na secção Ajuste de escala automático, em Sinais de ajuste de escala automático, expanda a secção Utilização da CPU e, de seguida, clique em Ver se o ajuste de escala automático preditivo pode otimizar a sua disponibilidade.

  6. Com base nos dados dos últimos 7 dias, a tabela mostra quantas VMs foram usadas por dia e quantas VMs ficaram sobrecarregadas por dia para as seguintes linhas:

    • Configuração da escalabilidade automática atual: mostra o desempenho da escalabilidade automática com base na configuração da escalabilidade automática nos últimos 7 dias.
    • Com o redimensionamento automático preditivo definido como "Otimizar para disponibilidade": mostra como o redimensionamento automático teria funcionado se o redimensionamento automático preditivo tivesse sido ativado nos últimos 7 dias.

Pode usar o "Número de VMs usadas por dia" como um proxy para os custos. Por exemplo, para reduzir o número diário de VMs sobrecarregadas, o escalador automático preditivo pode criar VMs mais cedo e executá-las durante mais tempo, o que resulta em custos adicionais.

Monitorizar e simular a escala automática preditiva

Pode visualizar o tamanho histórico do seu grupo através do Cloud Monitoring. O gráfico de monitorização mostra como a configuração do redimensionamento automático redimensionou o grupo ao longo do tempo e também mostra como o redimensionamento automático preditivo, se ativado, teria redimensionado o grupo.

Para grupos com o dimensionamento automático preditivo desativado, pode usar esta ferramenta para simular o dimensionamento automático preditivo antes de o ativar.

  1. Na consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique num GIG existente para o qual a escala automática baseada na CPU está configurada. É aberta a página de vista geral do grupo.

  3. Clique em Monitorização para ver gráficos relacionados com o grupo.

  4. No primeiro gráfico, clique no respetivo título e selecione Ajuste de escala automático preditivo. Esta vista mostra o tamanho real do grupo, bem como o tamanho previsto.

  5. Pode selecionar um intervalo de tempo diferente para ver mais histórico ou aumentar o zoom num período em que a procura aumentou para ver como o ajuste de escala automático preditivo afeta o tamanho do grupo antes da carga prevista.

Como funciona a escala automática preditiva

O escalador automático preditivo prevê a sua métrica de escalamento com base nas tendências históricas da métrica. As previsões são recalculadas a cada poucos minutos, o que permite que o escalador automático adapte rapidamente a respetiva previsão a alterações muito recentes na carga. O escalador automático preditivo precisa de, pelo menos, 3 dias de histórico a partir dos quais determinar um padrão de utilização do serviço representativo antes de poder fornecer previsões. O Compute Engine usa até 3 semanas do histórico de carga do seu MIG para alimentar o modelo de aprendizagem automática.

O escalador automático preditivo calcula o número de VMs necessárias para atingir o objetivo de utilização com base em vários fatores, incluindo o seguinte:

  • O valor futuro previsto da métrica de escalabilidade
  • O valor atual da métrica de escalabilidade
  • Confiança nas tendências passadas, incluindo a variabilidade passada da métrica de escalabilidade
  • O período de inicialização da aplicação configurado, também denominado período de inicialização

Com base nesses fatores, o escalador automático preditivo expande o seu grupo antes da procura prevista.

Comparação de VMs de publicação com e sem a escala automática preditiva.

Figura 1. Comparação de VMs de publicação com e sem a escala automática preditiva.

Na figura 1, a linha azul mostra uma procura crescente de VMs. A linha preta mostra a resposta do escalador automático: são adicionadas mais VMs. No entanto, para aplicações com tempos de inicialização longos, a linha cinzenta mostra que as VMs adicionadas requerem tempo adicional antes de estarem prontas para publicar anúncios, o que pode resultar num número insuficiente de VMs de publicação para satisfazer a procura. Com o dimensionamento automático preditivo ativado, o aumento previsto na procura e o longo tempo de inicialização da aplicação são tidos em conta. O dimensionador automático responde adicionando VMs mais cedo, o que resulta num número suficiente de VMs de serviço. Pode configurar a antecedência com que são adicionadas novas instâncias definindo o período de inicialização.

Dados de utilização em tempo real

O escalador automático preditivo não consegue determinar um padrão para todas as alterações futuras na utilização com base nos dados do histórico, pelo que também funciona perfeitamente com dados em tempo real. Por exemplo, um evento de notícias inesperado pode contribuir para um aumento repentino na utilização que não teria sido possível prever apenas com base no histórico. Para processar estas alterações imprevisíveis na carga, o escalador automático preditivo responde da seguinte forma:

  • Adapta as suas previsões: as previsões são recalculadas constantemente, em minutos, para se ajustarem de forma a incorporar os dados mais recentes. O momento exato dos ajustes aos novos padrões depende, entre outras coisas, da repetibilidade do novo padrão e da dimensão da diferença entre o novo padrão e as previsões anteriores.
  • Produz dados em tempo real: o número recomendado de instâncias do escalador automático, com base nos valores em tempo real da métrica, é sempre suficiente para atingir a utilização alvo do grupo. Se o valor atual de um sinal em tempo real for superior à previsão, o valor atual do sinal tem prioridade sobre a previsão. Como resultado, os GIGs com o dimensionamento automático preditivo ativado têm sempre mais disponibilidade do que os GIGs sem esta opção.

Dois gráficos mostram como as previsões se adaptam à utilização real da CPU.

Figura 2. Dois gráficos mostram como as previsões se adaptam à utilização real da CPU.

Na figura 2, a linha amarela pontilhada mostra a previsão em t1. No entanto, a utilização real da CPU, conforme apresentado pela linha azul sólida, é diferente da prevista. No gráfico do lado esquerdo, a utilização real da CPU é superior à prevista. No gráfico à direita, a utilização real da CPU é inferior à prevista. A linha azul tracejada mostra a previsão ajustada.

Picos curtos e imprevisíveis

Os picos curtos e imprevisíveis são cobertos em tempo real. O dimensionamento automático cria, pelo menos, tantas instâncias quantas as necessárias para manter a utilização no destino configurado, com base no valor real atual da métrica. No entanto, estas instâncias não são criadas antecipadamente, conforme mostrado na figura seguinte.

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

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

Na figura 3, a linha azul sólida mostra a utilização real da CPU. Não foi possível prever um pico inesperado na utilização da CPU. Uma vez que o escalador automático monitoriza sempre os dados em tempo real, adiciona instâncias para acomodar o pico. A linha preta sólida ilustra a adição reativa de VMs pelo escalador automático em resposta ao pico. A linha cinzenta sólida mostra o número de VMs de publicação. A linha cinzenta fica atrás da linha preta devido ao tempo de inicialização da aplicação. Neste cenário, o grupo está temporariamente sobrecarregado.

Quedas súbitas

Outro tipo de alteração imprevisível na utilização é uma diminuição súbita, por exemplo, uma diminuição causada por uma falha numa parte da pilha de aplicações. Quando isso acontece, o número de instâncias segue inicialmente a previsão. No entanto, ao longo do tempo, a previsão ajusta-se à utilização inferior à prevista, o que resulta numa redução da escala. O momento exato deste ajuste depende de vários fatores, incluindo: a frequência com que o padrão ocorreu no passado, a duração da diminuição e a profundidade da diminuição.

Uma diminuição súbita faz com que o escalador automático preditivo altere a respetiva previsão.

Figura 4. Uma diminuição súbita faz com que o escalador automático preditivo altere a respetiva previsão.

Na figura 4, a linha amarela pontilhada mostra a previsão em t1. Mas a utilização real da CPU, conforme 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 uma utilização inferior à prevista. Isto resulta na remoção de instâncias pelo redimensionador automático após o período de estabilização padrão.

Dados do histórico

O escalador automático preditivo precisa de, pelo menos, 3 dias de carga histórica para começar a fazer previsões. Se tiver um MIG novo sem dados do histórico, o Compute Engine dimensiona o seu grupo de forma reativa através de dados em tempo real até que estejam disponíveis dados do histórico suficientes. Após 3 dias, à medida que o Compute Engine recolhe dados de utilização adicionais, as previsões melhoram.

Se atualizar a sua aplicação criando um novo MIG e eliminando o antigo, por exemplo, uma implementação azul/verde, o novo MIG precisa de 3 dias de dados de carga do histórico antes que o dimensionamento automático preditivo possa começar a gerar previsões novamente. Se quiser preservar o histórico de carregamentos em vários MIGs para que as previsões possam começar imediatamente quando criar um novo MIG, contacte-nos para pedir instruções para participar numa pré-visualização privada.

O que se segue?