Veja neste tutorial como usar o escalonamento automático para ajustar automaticamente o número de instâncias de VM que hospedam seu aplicativo, permitindo que ele se adapte a quantidades variáveis de tráfego.
Para usar o escalonamento automático, hospede seu aplicativo em um grupo de instâncias gerenciadas. Um grupo de instâncias gerenciadas é uma coleção de instâncias que executam o mesmo aplicativo e podem ser gerenciadas como uma única entidade. Quando um grupo de instâncias gerenciadas tem o escalonamento automático ativado, o número de VMs no grupo aumenta (escalonamento horizontal) ou diminui automaticamente (escalonamento vertical) de acordo com o valor máximo especificado para a política de escalonamento automático.
Este tutorial inclui etapas detalhadas para lançar um aplicativo da Web em um grupo de instâncias gerenciadas, configurar o escalonamento automático e o acesso à rede e observar o escalonamento automático simulando picos e quedas de carga. Dependendo da sua experiência com esses recursos, a conclusão deste tutorial leva cerca de 20 minutos.
Arquitetura do aplicativo
O aplicativo inclui os seguintes componentes do Compute Engine:
- Regra de firewall: um firewall do Google Cloud que permite autorizar ou negar o tráfego para suas instâncias.
- Modelo de instância: um modelo usado para criar cada instância de VM no grupo de instâncias gerenciadas.
- Grupo regional de instâncias gerenciadas: um grupo de instâncias de VM que executam o mesmo aplicativo em várias zonas.
Como lançar o aplicativo da Web
Neste tutorial, é usado um aplicativo da Web armazenado no GitHub. Para saber mais sobre como o aplicativo foi implementado, consulte o repositório GoogleCloudPlatform/python-docs-samples no GitHub.
Inclua um script de inicialização em um modelo de instância para lançar o aplicativo da Web em todas as VMs em um grupo de instâncias gerenciadas. Para permitir o tráfego HTTP para o aplicativo da Web, crie uma regra de firewall.
Criar uma regra de firewall
Crie uma regra de firewall que permita o tráfego HTTP para o aplicativo da Web:
No console do Google Cloud , acesse a página Firewalls.
Clique em Create firewall rule.
Em Nome, insira
default-allow-http.Defina Rede como
default.Defina Destinos para selecionar
Specified target tags.Em Tags de destino, insira
http-server.Defina Filtro de origem como
IPv4 ranges.Em Intervalos IPv4 de origem, insira
0.0.0.0/0.para permitir o acesso a todos os endereços IP.
Em Protocolos e portas, selecione Portas e protocolos especificados. Em seguida, selecione TCP e insira
80para permitir o acesso ao tráfego HTTP.Clique em Criar.
Criar um modelo de instância
Crie um modelo de instância que lance o aplicativo de demonstração da Web na inicialização:
No console do Google Cloud , acesse a página Modelos de instância.
Clique em Criar modelo de instância.
Em Nome, insira
autoscaling-web-app-template.Em Configuração da máquina, defina Tipo de máquina como
e2-standard-2.Em Firewall, marque a caixa de seleção Permitir tráfego HTTP. Isso aplica a tag de rede
http-servera cada instância criada com base nesse modelo.Abra a seção Opções avançadas para conferir as configurações avançadas.
Expanda a seção Gerenciamento.
Na seção Automação, insira o seguinte script de inicialização:
sudo apt update && sudo apt -y install git gunicorn3 python3-pip git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/compute/managed-instances/demo sudo pip3 install -r requirements.txt sudo gunicorn3 --bind 0.0.0.0:80 app:app --daemon
Com esse script, todas as VMs executam o web app durante a inicialização.
Clique em Criar.
Criar um grupo de instâncias gerenciadas
Crie um grupo de instâncias regional para começar a executar o aplicativo da Web:
No console, do Google Cloud , acesse a página Grupos de instâncias.
Clique em Criar grupo de instâncias para criar um novo grupo.
Selecione Novo grupo de instâncias gerenciadas (sem estado).
Em Nome, insira
autoscaling-web-app-group.Em Modelo de instância, selecione
autoscaling-web-app-template.Para Local, selecione Várias zonas.
Em Região, selecione us-central1.
Em Zonas, selecione as seguintes zonas na lista suspensa:
- us-central1-b
- us-central1-c
- us-central1-f
Configure o escalonamento automático para o grupo de instâncias:
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias para o grupo.
Defina o Número mínimo de instâncias como
3.Defina Número máximo de instâncias como
6.Defina o Período de inicialização como
120segundos.Em Métricas de escalonamento automático, selecione Utilização de CPU como o tipo de métrica. Para saber mais sobre as métricas de escalonamento automático, consulte Política de escalonamento automático.
Defina a Utilização da CPU de destino para
60.Clique em Concluído.
Em Recuperação automática, selecione Sem verificação de integridade na lista suspensa Verificação de integridade.
Clique em Criar. Você será redirecionado para a página Grupos de instâncias.
Verifique se as instâncias estão em execução:
- Na página Grupos de instâncias no console do Google Cloud , clique em
autoscaling-web-app-grouppara ver as instâncias desse grupo. Em IP externo, clique em um endereço IP para conectar essa instância. Uma nova guia do navegador será aberta, exibindo o aplicativo de demonstração da Web:

Quando terminar, feche a guia do navegador com o aplicativo de demonstração da Web.
- Na página Grupos de instâncias no console do Google Cloud , clique em
Como observar o escalonamento automático
Para mais informações sobre comportamentos de escalonamento automático, consulte Noções básicas sobre decisões de escalonamento automático.
Monitorar o escalonamento automático
O grupo de instâncias que você criou usa uma Política de escalonamento automático com base no Uso da CPU. Isso significa que o autoescalador aumenta ou diminui o grupo conforme necessário para manter a utilização de destino da CPU em 60%.
Para monitorar o tamanho e a utilização da CPU do seu grupo de instâncias, use os gráficos de escalonamento automático no console do Google Cloud :
- Na página Grupos de instâncias de
autoscaling-web-app-group, clique na guia Monitoramento. - É possível monitorar o escalonamento automático no gráfico Tamanho do grupo. O gráfico exibe Instâncias, que representam o número de instâncias de VM no grupo ao longo do tempo.
Opcional: para monitorar a capacidade de escalonamento automático em comparação com a utilização, consulte o gráfico de Utilização do escalonador automático (CPU). O gráfico exibe a Utilização, que é o uso total de CPU das instâncias de VM no grupo, e a Capacidade, que é a utilização cumulativa da CPU de destino do grupo (utilização da CPU de destino multiplicada pelo número de instâncias de VM).
O escalonamento automático tenta fazer a Capacidade corresponder à Utilização alterando o número de Instâncias, quando possível.
Mantenha esta janela aberta.
Simular escalonamento horizontal
O escalonamento horizontal ocorre quando a utilização média da CPU do grupo de instâncias é
significativamente maior do que o valor de destino. Durante o escalonamento horizontal, o escalonador automático
aumenta gradualmente o tamanho do grupo de instâncias até que a utilização da CPU
diminua para o valor de utilização da CPU desejado ou até que o tamanho do grupo
de instâncias seja igual ao Número máximo de instâncias, definido como 6.
Para acionar o escalonamento horizontal, aumente a utilização da CPU nas suas instâncias:
No console do Google Cloud , abra o Cloud Shell.
O Cloud Shell é aberto na parte de baixo do Google Cloud console. A inicialização da sessão pode levar alguns segundos.
Crie uma variável bash local para o ID do projeto:
export PROJECT_ID=[PROJECT_ID]
em que
PROJECT_IDé o ID do projeto atual, que é exibido em cada nova linha no Cloud Shell:user@cloudshell:~ ([PROJECT_ID])$
Execute o script bash a seguir. Esse script faz com que as instâncias de aplicativos de demonstração da Web tenham uma carga aumentada, o que aumenta a utilização de CPU. Após alguns minutos, a utilização da CPU ultrapassará o valor de destino, fazendo com que o escalonamento automático aumente o tamanho do grupo de instâncias.
export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group") for i in $MACHINES; do NAME=$(echo "$i" | cut -f1 -d,) IP=$(echo "$i" | cut -f2 -d,) echo "Simulating high load for instance $NAME" curl -q -s "http://$IP/startLoad" >/dev/null --retry 2 done
Abra a guia Monitoring no console Google Cloud .
Após alguns minutos, a guia Monitoramento exibe que a Utilização da CPU aumentou. Isso aciona o escalonamento automático, que aumenta a Capacidade aumentando o número de instâncias.
Observe que agora há seis instâncias listadas na guia Visão geral.
Mantenha as duas janelas abertas.
Simular escalonamento vertical
O escalonamento vertical ocorre quando a utilização média da CPU do grupo de instâncias é
significativamente menor do que o valor de destino. Durante o escalonamento vertical, o escalonador automático
diminui gradualmente o tamanho do grupo de instâncias até que a utilização
da CPU aumente para a utilização de CPU desejada ou até que o tamanho
do grupo de instâncias seja igual ao Número mínimo de instâncias, definido como 3.
Para acionar o escalonamento vertical, diminua a utilização da CPU nas suas instâncias:
Execute o script bash a seguir. Esse script faz com que as instâncias de aplicativos de demonstração da Web tenham uma carga reduzida, o que diminui a utilização de CPU. Após alguns minutos, a utilização de CPU ficará abaixo do valor de destino, fazendo com que o autoescalador diminua o tamanho do grupo de instâncias.
export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group") for i in $MACHINES; do NAME=$(echo "$i" | cut -f1 -d,) IP=$(echo "$i" | cut -f2 -d,) echo "Simulating low load for instance $NAME" curl -q -s "http://$IP/stopLoad" >/dev/null --retry 2 done
Abra a guia Monitoring no console Google Cloud .
Após alguns minutos, a guia Monitoramento mostra que a Utilização da CPU diminuiu. Após o período de estabilização, que verifica se a carga é consistentemente menor, o escalonamento automático diminui a Capacidade diminuindo o número de Instâncias.
Observe que apenas três instâncias estão listadas na guia Visão geral.
Feche as duas janelas quando terminar.