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

Os grupos de instâncias gerenciadas oferecem recursos de escalonamento automático que permitem adicionar ou excluir automaticamente instâncias de um grupo com base em aumentos ou reduções na carga. O escalonamento automático ajuda seus aplicativos a processar aumentos de tráfego 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.

O escalonamento automático é feito com a adição de mais instâncias ao seu grupo de instâncias quando há mais carga (aumento) e exclusão de instâncias quando a necessidade de instâncias é reduzida (diminuição).

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 de grupos de instâncias gerenciadas. Um grupo de instâncias gerenciadas é um conjunto de instâncias homogêneas, criadas a partir de um modelo de instância comum. Um autoescalador adiciona ou remove instâncias a partir de um grupo de instâncias gerenciadas. Embora o Compute Engine tenha grupos de instâncias gerenciadas e não gerenciadas, somente grupos de instâncias gerenciadas podem ser usados com escalonamento automático.

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.

Política de escalonamento automático e utilização de destino

Para criar um autoescalador, é preciso especificar a política de escalonamento e um nível de utilização de destino que o autoescalador usa para determinar quando escalonar o grupo. É possível escolher a escala usando as seguintes políticas:

  • 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 política, compara a utilização real com a utilização de destino desejada e determina se o grupo precisa ser dimensionado para cima ou para baixo.

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 um breve resumo de cada política, consulte Políticas. Para ver uma discussão detalhada de cada política, consulte:

Período de espera

Enquanto uma instância é inicializada, as informações sobre o uso podem não refletir circunstâncias normais. Assim, essas informações 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.

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 dados de uso legítimos e subestime o tamanho exigido pelo grupo, causando um atraso no escalonamento.

Período de estabilização

Para fins de redução, o autoescalador calcula o tamanho de alvo recomendado do grupo com base na carga de pico nos últimos 10 minutos. Estes últimos 10 minutos são referidos como o período de estabilização.

Esse período de estabilização de 10 minutos pode parecer um atraso na redução do dimensionamento, mas, na verdade, é um recurso embutido do 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.

Especificações

  • O escalonamento automático só funciona com grupos de instâncias gerenciadas zonais e regionais. Grupos de instâncias não gerenciadas não são compatíveis.
  • O escalonamento automático não funciona com MIGs regionais se a redistribuição proativa de instâncias estiver desativada.
  • Não é possível criar instâncias com nomes específicos enquanto o escalonamento automático está ativado. No entanto, é possível ativar o autoescalador depois que as instâncias com nomes específicos forem criadas.
  • Não use o escalonamento automático do Compute Engine com grupos de instâncias gerenciadas do Google Kubernetes Engine. Em vez disso, use o escalonamento automático de clusters.

    Se você não tiver certeza de que seu grupo faz parte de um cluster do GKE, procure o prefixo gke no nome do grupo de instâncias gerenciadas. Por exemplo, gke-test-1-3-default-pool-eadji9ah;

  • Com um escalonador automático, é possível tomar decisões de dimensionamento com base em várias métricas, no entanto, só é possível lidar com uma política por tipo de métrica, exceto no caso das métricas do Cloud Monitoring. Com ele, também é possível gerenciar até cinco políticas 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 na política 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.

Antes de começar

  1. Saiba mais sobre grupos de instâncias gerenciadas

    Como o escalonador automático é um recurso dos grupos de instâncias gerenciadas, saiba como eles funcionam antes de usar o escalonamento automático.

  2. Consiga um URL ou nome de grupo de instâncias gerenciadas

    Para todas as solicitações de escalonamento automático, é preciso fornecer um nome de grupo de instâncias gerenciadas ou um URL de grupo de instâncias gerenciadas. Na ferramenta de linha de comando gcloud, é possível usar um nome de grupo de instâncias gerenciadas, enquanto a API requer um URL totalmente qualificado.

    Use o comando instance-groups managed list --uri ou instance-groups managed list [INSTANCE_GROUP] --uri para conseguir o URL de um grupo de instâncias gerenciadas atual. Por exemplo, o comando a seguir fornece o URL de um grupo de instâncias gerenciadas na zona us-central1-f:

    gcloud compute instance-groups managed list example-group --uri --filter="zone:(us-central1-f)"
    

    A ferramenta gcloud retorna o URL do grupo de instâncias gerenciadas:

    https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-group
    

    Veja como criar um grupo de instâncias gerenciadas se você não tiver um.

A seguir

Quando estiver pronto, crie um escalonador automático que se aplique a capacidade de serviço de balanceamento de carga ou CPU ou a métrica do Cloud Monitoring. Ou siga um tutorial para saber como usar MIGs regionais e escalonamento automático para criar aplicativos escalonáveis.