Este tutorial explica como usar o dimensionamento automático para ajustar automaticamente o número de instâncias de VMs que estão a alojar a sua aplicação, permitindo que a aplicação se adapte a quantidades variáveis de tráfego.
Para usar o dimensionamento automático, aloje a sua aplicação num grupo de instâncias gerido. Um grupo de instâncias geridas é um conjunto de instâncias que estão a executar a mesma aplicação e que podem ser geridas como uma única entidade. Quando um grupo de instâncias geridas tem a escala automática ativada, o número de VMs no grupo de instâncias aumenta (escala horizontal) ou diminui (escala vertical) automaticamente de acordo com o valor de destino que especificar para a sua política de escala automática.
Este tutorial inclui passos detalhados para lançar uma aplicação Web num grupo de instâncias gerido, configurar o dimensionamento automático, configurar o acesso à rede e observar o dimensionamento automático simulando picos e quedas de carga. Consoante a sua experiência com estas funcionalidades, este tutorial demora cerca de 20 minutos a concluir.
Objetivos
- Inicie uma aplicação Web de demonstração num grupo de instâncias gerido.
- Observe os efeitos da escala automática simulando picos e quedas de tráfego.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
- Compute Engine
Para gerar uma estimativa de custos com base na sua utilização projetada,
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Arquitetura de aplicações
A aplicação inclui os seguintes componentes do Compute Engine:
- Regra de firewall: a Google Cloud firewall que lhe permite permitir ou negar tráfego às suas instâncias.
- Modelo de instância: um modelo usado para criar cada instância de VM no grupo de instâncias gerido.
- Grupo de instâncias geridas regional: um grupo de instâncias de VM que executam a mesma aplicação em várias zonas.
Iniciar a aplicação Web
Este tutorial usa uma aplicação Web armazenada no GitHub. Se quiser saber mais sobre como a aplicação foi implementada, consulte o repositório GoogleCloudPlatform/python-docs-samples no GitHub.
Inicie a aplicação Web em todas as VMs num grupo de instâncias gerido incluindo um script de arranque num modelo de instância. Para permitir o tráfego HTTP para a aplicação Web, crie uma regra de firewall.
Crie uma regra de firewall
Crie uma regra de firewall para permitir tráfego HTTP para a aplicação Web:
Na Google Cloud consola, aceda à página Firewalls.
Clique em Criar regra de firewall.
Em Nome, introduza
default-allow-http
.Defina Rede como
default
.Defina Segmentações para selecionar
Specified target tags
.Em Etiquetas de destino, introduza
http-server
.Defina o Filtro de origem como
IPv4 ranges
.Em Intervalos de IPv4 de origem, introduza
0.0.0.0/0
Para permitir o acesso a todas as moradas IP.
Em Protocolos e portas, selecione Protocolos e portas especificados. Em seguida, selecione TCP e introduza
80
para permitir o acesso ao tráfego HTTP.Clique em Criar.
Crie um modelo de instância
Crie um modelo de instância que inicie a aplicação Web de demonstração no arranque:
Na Google Cloud consola, aceda à página Modelos de instâncias.
Clique em Criar modelo de instância.
Em Nome, introduza
autoscaling-web-app-template
.Em Configuração da máquina, defina o Tipo de máquina como
e2-standard-2
.Em Firewall, selecione a caixa de verificação Permitir tráfego HTTP. Isto aplica a etiqueta de rede
http-server
a cada instância criada a partir deste modelo.Expanda a secção Opções avançadas para ver as definições avançadas.
Expanda a secção Gestão.
Na secção Automatização, introduza o seguinte script de arranque:
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 MV execute a aplicação Web durante o arranque.
Clique em Criar.
Crie um grupo de instâncias geridas
Crie um grupo de instâncias regional para começar a executar a aplicação Web:
Na Google Cloud consola, aceda à página Grupos de instâncias.
Clique em Criar grupo de instâncias para criar um novo grupo de instâncias.
Selecione Novo grupo de instâncias gerido (sem estado)."
Em Nome, introduza
autoscaling-web-app-group
.Para Modelo de instância, selecione
autoscaling-web-app-template
.Em Localização, selecione Várias zonas.
Para Região, selecione us-central1.
Para Zonas, selecione as seguintes zonas na lista pendente:
- us-central1-b
- us-central1-c
- us-central1-f
Configure o escalamento automático para o grupo de instâncias:
- Para o Modo de dimensionamento 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 dimensionamento automático, selecione Utilização da CPU como o tipo de métrica. Para saber mais sobre as métricas de dimensionamento automático, consulte o artigo Política de dimensionamento automático.
Defina a utilização da CPU alvo como
60
.Clique em Concluído.
Em Reparação automática, selecione Sem verificação de estado na lista pendente Verificação de estado.
Clique em Criar. Esta ação redireciona para a página Grupos de instâncias.
Para verificar se as suas instâncias estão em execução:
- Na página Grupos de instâncias na Google Cloud consola, clique em
autoscaling-web-app-group
para ver as instâncias nesse grupo. Em IP externo, clique num endereço IP para associar essa instância. É aberto um novo separador do navegador que apresenta a aplicação Web de demonstração:
Quando terminar, feche o separador do navegador da aplicação Web de demonstração.
- Na página Grupos de instâncias na Google Cloud consola, clique em
Observar a escala automática
Para mais informações sobre os comportamentos de dimensionamento automático, consulte o artigo Compreender as decisões de dimensionamento automático.
Monitorize a escala automática
O grupo de instâncias que criou usa uma política de escalabilidade automática baseada na utilização da CPU. Isto significa que o dimensionamento automático aumenta ou diminui o grupo conforme necessário
para manter a utilização da CPU alvo de 60
%.
Para monitorizar o tamanho e a utilização da CPU do seu grupo de instâncias, use os gráficos de escalamento automático na Google Cloud consola:
- Na página Grupos de instâncias do grupo de instâncias
autoscaling-web-app-group
, clique no separador Monitorização. - Pode monitorizar o dimensionamento automático a partir do gráfico Tamanho do grupo. O gráfico apresenta Instâncias, que representa o número de instâncias de VMs no grupo ao longo do tempo.
Opcional: para monitorizar a capacidade com escala automática em comparação com a utilização, consulte o gráfico Utilização do escalador automático (CPU). O gráfico apresenta a Utilização, que é a utilização total da CPU das instâncias de VM no grupo, e a Capacidade, que é a utilização da CPU alvo cumulativa do grupo (utilização da CPU alvo multiplicada pelo número de instâncias de VM).
A criação de uma escala automática tenta fazer com que a capacidade corresponda à utilização alterando o número de instâncias, quando possível.
Mantenha esta janela aberta.
Simule o aumento de nós
O aumento da escala ocorre quando a utilização média da CPU do grupo de instâncias é significativamente superior ao valor de destino. Durante o aumento da escala, o escalador 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 alvo 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 aumento da escala, aumente a utilização da CPU das suas instâncias:
Na Google Cloud consola, abra o Cloud Shell.
O Cloud Shell é aberto na parte inferior da Google Cloud consola. A sessão pode demorar alguns segundos a ser inicializada.
Crie uma variável bash local para o ID do projeto:
export PROJECT_ID=[PROJECT_ID]
em que
PROJECT_ID
é o ID do projeto do seu projeto atual, que é apresentado em cada nova linha no Cloud Shell:user@cloudshell:~ ([PROJECT_ID])$
Execute o seguinte script bash. Este script faz com que as instâncias da aplicação Web de demonstração tenham uma carga aumentada, o que aumenta a utilização da CPU. Após alguns minutos, a utilização da CPU vai ultrapassar o valor alvo, o que vai levar o dimensionamento automático a aumentar 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 o separador Monitorização na Google Cloud consola.
Após alguns minutos, o separador Monitorização apresenta um aumento da Utilização da CPU, o que aciona o dimensionamento automático para aumentar a Capacidade, aumentando o número de Instâncias.
Também pode reparar que agora são apresentadas 6 instâncias no separador Vista geral.
Mantenha ambas as janelas abertas.
Simule a redução horizontal
A redução ocorre quando a utilização média da CPU do grupo de instâncias é significativamente inferior ao valor alvo. Durante a redução, o escalador automático diminui gradualmente o tamanho do grupo de instâncias até a utilização da CPU aumentar para a utilização da CPU alvo ou até o tamanho do grupo de instâncias ser igual ao número mínimo de instâncias, que foi definido como 3
.
Para acionar a redução da escala, diminua a utilização da CPU das suas instâncias:
Execute o seguinte script bash. Este script faz com que as instâncias da aplicação 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 fica abaixo do valor alvo, o que leva o escalador automático a diminuir 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 o separador Monitorização na Google Cloud consola.
Após alguns minutos, o separador Monitorização apresenta uma diminuição da utilização da CPU. Após o período de estabilização, que verifica se a carga é consistentemente inferior, o ajuste automático de escala diminui a capacidade diminuindo o número de instâncias.
Também pode reparar que apenas são apresentadas 3 instâncias no separador Vista geral.
Feche ambas as janelas quando terminar.
Limpar
Depois de concluir o tutorial, pode limpar os recursos que criou para que deixem de usar a quota e incorrer em custos. As secções seguintes descrevem como eliminar ou desativar estes recursos.
Se criou um projeto separado para este tutorial, elimine o projeto completo. Caso contrário, se o projeto tiver recursos que quer manter, elimine apenas os recursos criados neste tutorial.
Eliminar 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.
Eliminar recursos específicos
Eliminar 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.
Eliminar o modelo de instância
Na Google Cloud consola, aceda à página Modelos de instâncias.
Clique na caixa de verificação junto a
autoscaling-web-app-template
.Clique em
Eliminar na parte superior da página. Na nova janela, clique em Eliminar para confirmar a eliminação.
Eliminar a regra de firewall
Na Google Cloud consola, aceda à página Regras de firewall.
Clique na caixa de verificação junto à regra de firewall denominada
default-allow-http
.Clique em
Eliminar. Na nova janela, clique em Eliminar para confirmar a eliminação.
O que se segue?
- Experimente outro tutorial:
- Saiba mais acerca dos grupos de instâncias geridos.
- Saiba mais sobre a escalabilidade automática.
- Saiba mais sobre como criar sistemas robustos.
- Saiba mais sobre como criar aplicações Web escaláveis e resilientes no Google Cloud.