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.
Objetivos
- Lançar um aplicativo de demonstração da Web em um grupo de instâncias gerenciadas.
- Observar os efeitos do escalonamento automático simulando picos e quedas de tráfego.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
- Compute Engine
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
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
80
para 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-server
a 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
120
segundos.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-group
para ver as instâncias nesse 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 média da CPU do 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 debaixo do console do Google Cloud. 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 Monitoramento no console do 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 Monitoramento no console do 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.
Limpeza
Depois de concluir o tutorial, você pode limpar os recursos que criou para que eles parem de usar a cota e gerar cobranças. Nas seções a seguir, você aprenderá a excluir e desativar esses recursos.
Se você tiver criado um projeto separado para este tutorial, exclua o projeto inteiro. Se o projeto tiver recursos que você quer manter, exclua apenas os recursos criados neste tutorial.
Como excluir o projeto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Como excluir recursos específicos
Como excluir o grupo de instâncias
- In the Google Cloud console, go to the Instance groups page.
-
Select the checkbox for
your
autoscaling-web-app-group
instance group. - To delete the instance group, click Delete.
Como excluir o modelo de instância
No Console do Google Cloud, acesse a página Modelos de instância.
Clique na caixa de seleção ao lado de
autoscaling-web-app-template
.Clique em
Excluir na parte superior da página. Na nova janela, clique em Excluir para confirmar a remoção.
Como excluir a regra de firewall
No Google Cloud Console, acesse a página Regras de firewall.
Clique na caixa de seleção ao lado da regra de firewall denominada
default-allow-http
.Clique em
Excluir. Na nova janela, clique em Excluir para confirmar a exclusão.
A seguir
- Teste outro tutorial:
- Saiba mais sobre os grupos de instâncias gerenciadas.
- Saiba mais sobre o escalonamento automático.
- Saiba mais sobre como projetar sistemas robustos.
- Saiba mais sobre como criar aplicativos da Web escalonáveis e resilientes no Google Cloud.