Neste documento, descrevemos como escalonar um grupo gerenciado de instâncias (MIG) com base na capacidade de serviço de um balanceador de carga de aplicativo externo ou interno. Isso significa que o escalonamento automático adiciona ou remove instâncias de VM no grupo quando o balanceador de carga indica que o grupo atingiu uma fração configurável da capacidade total, sendo essa capacidade total definida pela capacidade de destino do modo de balanceamento selecionado do grupo de instâncias de back-end.
Também é possível fazer o escalonamento de um MIG com base na utilização da CPU ou nas métricas do Monitoring.
Limitações
É possível fazer o escalonamento automático de um grupo de instâncias gerenciadas com base na capacidade de exibição de um balanceador de carga de aplicativo externo e um balanceador de carga de aplicativo interno. Outros tipos de balanceadores de carga não são compatíveis.
Antes de começar
- Analise as limitações do escalonador automático.
- 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Como fazer escalonamento com base na capacidade de serviço do balanceamento de carga HTTP(S)
No Compute Engine, você tem o suporte para o balanceamento de carga dentro dos grupos de instâncias. Para usar o escalonamento automático com o balanceamento de carga, defina um autoescalador que faz esse escalonamento com base na carga das instâncias.
Um balanceador de carga HTTP(S) externo ou interno distribui solicitações
para serviços de back-end de acordo com o mapa de URL. O balanceador de carga pode ter um ou
mais serviços de back-end, cada um deles oferecendo suporte aos back-ends de grupos de endpoints de rede (NEG, na sigla em inglês) ou grupos de instâncias. Quando os
back-ends são grupos de instâncias, o balanceador de carga HTTP(S) externo oferece dois
modos de balanceamento:
UTILIZATION
e RATE
. Use UTILIZATION
para especificar uma meta máxima
para a utilização média de back-end de instâncias no grupo de instâncias. Use RATE
para especificar um número de destino de solicitações por segundo por instância
ou por grupo. Observação: somente os grupos de instâncias zonais aceitam a especificação de uma
taxa máxima para todo o grupo. Não é possível definir uma taxa máxima por grupo para grupos de
instâncias gerenciadas regionais.
A capacidade de destino e o modo de balanceamento especificados definem as condições em que o Google Cloud determina quando uma VM de back-end atingiu a capacidade total. O Google Cloud tenta enviar tráfego para VMs íntegras que ainda têm capacidade sobrando. Se todas as VMs tiverem atingido a capacidade máxima, a meta máxima de utilização ou taxa terá sido excedida.
Ao anexar um escalonador automático a um back-end de grupo de instâncias de um balanceador de carga HTTP(S) externo, esse escalonador automático fará o escalonamento do grupo de instâncias gerenciadas para manter uma fração da capacidade de serviço de balanceamento de carga.
Por exemplo, imagine que a capacidade de serviço de balanceamento de carga de um grupo de instâncias gerenciadas seja definida como 100 RPS por instância. Se você criar um escalonador automático com a política de balanceamento de carga HTTP(S) e configurá-lo para manter um nível de utilização de 0,8 ou 80%, o escalonador automático adicionará ou removerá instâncias do grupo de instâncias gerenciadas para manter 80% da capacidade de serviço ou 80 RPS por instância.
O diagrama a seguir mostra como o escalonador automático interage com um grupo de instâncias gerenciadas e um serviço de back-end:
Configurações de balanceamento de carga aplicáveis
É possível definir uma das três opções de capacidade de serviço de balanceamento de carga. Ao criar o back-end pela primeira vez, é possível escolher entre a utilização máxima do back-end, as solicitações máximas por segundo por instância ou as solicitações máximas por segundo de todo o grupo. O escalonamento automático funciona apenas com utilização máxima do back-end e solicitações máximas por segundo/instância. O motivo disso é que o valor dessas configurações pode ser controlado ao adicionar ou remover instâncias. Por exemplo, se você configurar um back-end para processar 10 solicitações por segundo por instância e o escalonador automático estiver configurado para manter 80% dessa taxa, o escalonador poderá adicionar ou remover instâncias quando a quantidade de solicitações por segundo por instância for alterada.
O escalonamento automático não funciona com a quantidade máxima de solicitações por grupo porque essa configuração independe do número de instâncias no grupo de instâncias. No balanceador de carga, a quantidade máxima de solicitações por grupo é enviada continuamente para o grupo de instâncias, independentemente de quantas instâncias existem nesse grupo.
Por exemplo, se você definir o back-end para processar no máximo 100 solicitações por grupo por segundo, o balanceador de carga enviará 100 solicitações por segundo para o grupo, independentemente de o grupo ter duas ou 100 instâncias. Como esse valor não pode ser ajustado, o escalonamento automático não funciona com configurações de balanceamento de carga que usam o número máximo de solicitações por segundo por grupo.
Ativar o escalonamento automático baseado na capacidade de serviço de balanceamento de carga
Console
- Acesse a página Grupos de instâncias no Console do Google Cloud.
- Se você tiver um grupo de instâncias, selecione-o e clique em Editar. Se você não tem um grupo de instâncias, clique em Criar grupo de instâncias.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.
- Especifique os números mínimo e máximo de instâncias que você quer que o autoescalador crie nesse grupo.
- Na seção Métricas de escalonamento automático, clique em Adicionar métrica.
- Defina o Tipo de métrica como Utilização de balanceamento de carga HTTP.
Insira a Meta HTTP de utilização de balanceamento de carga. Esse valor é tratado como uma porcentagem. Por exemplo, para 60% de utilização do balanceamento de carga HTTP, insira
60
.Use o Período de espera para definir o período de inicialização, que informa ao escalonador automático quanto tempo leva para o aplicativo ser inicializado. Especificar um período de inicialização preciso melhora as decisões do escalonador automático. Por exemplo, ao escalonar horizontalmente, o escalonador automático ignora os dados das VMs que ainda estiverem sendo inicializadas, porque é possível que elas ainda não representem o uso regular do aplicativo. O período de inicialização padrão é de 60 segundos.
Salve as alterações.
gcloud
Para ativar um escalonador automático responsável pelo escalonamento com base na capacidade de serviço, use o subcomando
set-autoscaling
. Por exemplo, o comando a seguir cria um autoescalador que dimensiona o grupo de instâncias gerenciadas de destino para que 60% da capacidade de serviço seja mantido. Com o parâmetro --target-load-balancing-utilization
,
também é necessário o parâmetro --max-num-replicas
para criar um
escalonador automático:
gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \ --max-num-replicas 20 \ --target-load-balancing-utilization 0.6 \ --cool-down-period 90
Use a flag --cool-down-period
para definir o período de inicialização, que informa ao
escalonador automático quanto tempo leva para o aplicativo ser inicializado. Especificar um período de inicialização preciso melhora as decisões do escalonador automático. Por exemplo, ao escalonar horizontalmente, o
escalonador automático ignora os dados das VMs que ainda estiverem sendo inicializadas, porque é possível que elas
ainda não representem o uso regular do aplicativo. O período de inicialização
padrão é de 60 segundos.
É possível verificar se o escalonador automático foi criado usando o
subcomando instance-groups managed describe
:
gcloud compute instance-groups managed describe example-managed-instance-group
Para uma lista de flags e comandos gcloud
disponíveis, consulte a referência de gcloud
.
REST
Para criar um escalonador automático, use o
método autoscalers.insert
para um MIG zonal ou o
método regionAutoscalers.insert
para um MIG regional.
O exemplo a seguir cria um escalonador automático para um MIG zonal:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/
O corpo da solicitação precisa conter os campos name
, target
e autoscalingPolicy
. autoscalingPolicy
precisa definir loadBalancingUtilization
.
Use o campo coolDownPeriodSec
para definir o período de inicialização, que informa ao
escalonador automático quanto tempo leva para o aplicativo ser inicializado. Especificar um período de inicialização preciso melhora as decisões do escalonador automático. Por exemplo, ao escalonar horizontalmente, o
escalonador automático ignora os dados das VMs que ainda estiverem sendo inicializadas, porque é possível que elas
ainda não representem o uso regular do aplicativo. O período de inicialização
padrão é de 60 segundos.
{ "name": "example-autoscaler", "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group", "autoscalingPolicy": { "maxNumReplicas": 20, "loadBalancingUtilization": { "utilizationTarget": 0.8 }, "coolDownPeriodSec": 90 } }
Para mais informações sobre como ativar o escalonamento automático com base na capacidade de serviço do balanceamento de carga, conclua o tutorial Como fazer o escalonamento automático global de um serviço da Web no Compute Engine.
A seguir
- Saiba mais sobre como gerenciar escalonadores automáticos.
- Saiba como os escalonadores automáticos tomam decisões.
- Saiba como usar vários sinais de escalonamento automático para escalonar seu grupo.