Este tutorial explica como usar o escalonamento automático para ajustar automaticamente o número de instâncias de VM que hospedam seu aplicativo, permitindo que seu aplicativo se adapte a quantidades variadas de tráfego.
Para usar o escalonamento automático, hospede seu aplicativo em um grupo gerenciado de instâncias. 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 habilitado, o número de VMs no grupo de instâncias aumenta (aumenta a escala horizontal) ou diminui (aumenta a escala horizontal) automaticamente de acordo com o valor de destino especificado para sua política de escalonamento automático.
Este tutorial inclui etapas detalhadas para iniciar um aplicativo Web em um grupo de instâncias gerenciadas, configurar o escalonamento automático, configurar o acesso à rede e observar o escalonamento automático simulando picos e quedas de carga. Dependendo da sua experiência com esses recursos, este tutorial leva cerca de 20 minutos para ser concluído.
Objetivos
- Inicie um aplicativo Web de demonstração em um grupo de instâncias gerenciadas.
- Observe 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 de aplicativo
O aplicativo inclui os seguintes componentes do Compute Engine:
- Regra de firewall : a Google Cloudfirewall que permite permitir ou negar 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 diversas zonas.
Iniciando o aplicativo da web
Este tutorial usa um aplicativo da web armazenado no GitHub. Se quiser saber mais sobre como o aplicativo foi implementado, consulte o repositório GoogleCloudPlatform/python-docs-samples no GitHub.
Inicie o aplicativo Web em cada VM em um grupo de instâncias gerenciadas incluindo um script de inicialização em um modelo de instância. Para permitir o tráfego HTTP para o aplicativo Web, crie uma regra de firewall.
Crie uma regra de firewall
Crie uma regra de firewall para permitir o tráfego HTTP para o aplicativo web:
No console do Google Cloud, acesse a página Firewalls .
Clique em Criar regra de firewall .
Em Nome , insira
default-allow-http
.Defina a rede como
default
.Defina Destinos para selecionar
Specified target tags
.Em Tags de destino , insira
http-server
.Defina o filtro de origem para
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 Protocolos e portas especificados . Em seguida, selecione TCP e digite
80
para permitir acesso ao tráfego HTTP .Clique em Criar .
Crie um modelo de instância
Crie um modelo de instância que inicie o aplicativo Web de demonstração 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 o 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 a partir deste modelo.Expanda a seção Opções avançadas para ver 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
Este script faz com que cada VM execute o aplicativo Web durante a inicialização.
Clique em Criar .
Crie um grupo gerenciado de instâncias
Crie um grupo de instâncias regionais para começar a executar o aplicativo 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 de instâncias.
Selecione Novo grupo gerenciado de instâncias (sem estado) ."
Para Nome , insira
autoscaling-web-app-group
.Para Modelo de instância , selecione
autoscaling-web-app-template
.Para Localização , selecione Zonas múltiplas .
Para Região , selecione us-central1 .
Para 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:
- Para o modo de escalonamento automático , selecione Ativado: adicionar e remover instâncias do grupo .
Defina o número mínimo de instâncias como
3
.Defina o número máximo de instâncias como
6
.Defina o período de inicialização para
120
segundos.Em Métricas de escalonamento automático , selecione Utilização da CPU como tipo de métrica. Para saber mais sobre métricas de escalonamento automático, consulte Política de escalonamento automático .
Defina a utilização alvo da CPU como
60
.Clique em Concluído .
Em Autohealing , selecione Nenhuma verificação de integridade na lista suspensa Verificação de integridade .
Clique em Criar . Isso redireciona você para a página Grupos de instâncias .
Para verificar se suas 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 é aberta exibindo o aplicativo web de demonstração:
Quando terminar, feche a guia do navegador do aplicativo web de demonstração.
- Na página Grupos de instâncias no console do Google Cloud, clique em
Observando o escalonamento automático
Para obter 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 baseada no uso da CPU . Isso significa que o escalonador automático aumenta ou diminui o grupo conforme necessário para manter a utilização alvo 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 do grupo de instâncias
autoscaling-web-app-group
, clique na guia Monitoramento . - Você pode monitorar o escalonamento automático no gráfico de tamanho do grupo . O gráfico exibe Instances , que representa o número de instâncias de VM no grupo ao longo do tempo.
Opcional: Para monitorar a capacidade escalonada automaticamente versus a utilização, consulte o gráfico de utilização do escalonador automático (CPU) . O gráfico exibe Utilização , que é a utilização total da CPU das instâncias de VM no grupo, e Capacidade , que é a utilização cumulativa da CPU alvo do grupo (utilização alvo da CPU multiplicada pelo número de instâncias de VM).
O escalonamento automático tenta fazer com que a capacidade corresponda à utilização alterando o número de instâncias , quando possível.
Mantenha esta janela aberta.
Simular expansão
A expansão ocorre quando a utilização média da CPU do grupo de instâncias é significativamente maior que o valor desejado. Durante a expansão, 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 de destino ou até que o tamanho do grupo de instâncias seja igual ao Número máximo de instâncias , que foi definido como 6
.
Para acionar o escalonamento horizontal, aumente a utilização da CPU para suas instâncias:
No console do Google Cloud, abra o Cloud Shell .
O Cloud Shell é aberto na parte inferior do console do Google Cloud. Pode levar alguns segundos para a sessão inicializar.
Crie uma variável bash local para o ID do projeto:
export PROJECT_ID=[PROJECT_ID]
onde
PROJECT_ID
é o ID do projeto atual, que é exibido em cada nova linha no Cloud Shell:user@cloudshell:~ ([PROJECT_ID])$
Execute o seguinte script bash. Esse script faz com que as instâncias do aplicativo Web de demonstração tenham uma carga maior, o que aumenta a utilização da CPU. Após alguns minutos, a utilização da CPU ultrapassará o valor desejado, solicitando 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, o que aciona o escalonamento automático para aumentar a capacidade aumentando o número de instâncias .
Você também pode notar que agora 6 instâncias estão listadas na guia Visão geral .
Mantenha ambas as janelas abertas.
Simular escala em
A redução vertical ocorre quando a utilização média da CPU do grupo de instâncias é significativamente menor que o valor desejado. Durante a redução 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 da CPU desejada ou até que o tamanho do grupo de instâncias seja igual ao número mínimo de instâncias , que foi definido como 3
.
Para acionar a redução vertical, diminua a utilização da CPU para suas instâncias:
Execute o seguinte script bash. Esse script faz com que as instâncias do aplicativo Web de demonstração tenham uma carga reduzida, o que diminui a utilização da CPU. Após alguns minutos, a utilização da CPU ficará abaixo do valor desejado, solicitando que o escalonador automático 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 exibe 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 .
Você também pode notar que apenas três instâncias estão listadas na guia Visão geral .
Feche ambas as janelas quando terminar.
Limpar
Depois de concluir o tutorial, você poderá limpar os recursos criados para que eles parem de usar a cota e de incorrer em cobranças. As seções a seguir descrevem como excluir ou desativar esses recursos.
Se você criou um projeto separado para este tutorial, exclua o projeto inteiro. Caso contrário, se o projeto tiver recursos que você deseja manter, exclua apenas os recursos criados neste tutorial.
Excluindo 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.
Excluindo recursos específicos
Excluindo 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.
Excluindo 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 exclusão.
Excluindo a regra de firewall
No console do Google Cloud, 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.
O que vem a seguir
- Tente outro tutorial:
- Saiba mais sobre grupos de instâncias gerenciadas .
- Saiba mais sobre escalonamento automático .
- Saiba mais sobre como projetar sistemas robustos .
- Saiba mais sobre como criar aplicativos da Web escaláveis e resilientes em Google Cloud .