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 gerenciado de instâncias 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 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 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 Indicadores de escalonamento automático, clique em Adicionar um indicador.
- Defina o Tipo de indicador como Uso do 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.
- 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.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Escalonamento baseado na capacidade de serviço de 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 escalonador automático 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
eRATE
. UseUTILIZATION
para especificar uma meta máxima para a utilização média de back-end de instâncias no grupo de instâncias. ComRATE
, é necessário 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
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 escalonador automático que dimensiona o grupo de instâncias gerenciadas de destino para que 60% da capacidade de serviço seja mantida. 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 degcloud
.REST
Para criar um escalonador automático, use o método
autoscalers.insert
para um MIG zonal ou o métodoregionAutoscalers.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
eautoscalingPolicy
.autoscalingPolicy
precisa definirloadBalancingUtilization
.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
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-12-22 UTC.
-