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.