Como usar o escalonamento automático para aplicativos altamente escalonáveis


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. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

Arquitetura do aplicativo

O aplicativo inclui os seguintes componentes do Compute Engine:

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:

  1. No Console do Google Cloud, acesse a página Firewalls.

    Acessar Firewalls

  2. Clique em Create firewall rule.

  3. Em Nome, insira default-allow-http.

  4. Defina Rede como default.

  5. Defina Destinos para selecionar Specified target tags.

  6. Em Tags de destino, insira http-server.

  7. Defina Filtro de origem como IP ranges.

  8. Em Intervalos de IP de origem, insira 0.0.0.0/0.

    para permitir o acesso a todos os endereços IP.

  9. Em Portas e protocolos, selecione Protocolos e portas especificados. Em seguida, selecione tcp e insira 80 para permitir acesso ao tráfego HTTP.

  10. 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:

  1. No Console do Google Cloud, acesse a página Modelos de instância.

    Acesse "Modelos de instância"

  2. Clique em Criar modelo de instância.

  3. Em Nome, insira autoscaling-web-app-template.

  4. Em Configuração da máquina, defina Tipo de máquina como e2-standard-2.

  5. 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.

  6. Clique em Rede, discos, segurança, gerenciamento, locatário único para ver as configurações avançadas.

  7. Na guia Gerenciamento, localize Automação e 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 instâncias executam o aplicativo da Web durante a inicialização.

  8. 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:

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique em Criar grupo de instâncias para criar um novo grupo.

  3. Selecione Novo grupo gerenciado de instâncias (sem estado).

  4. Em Nome, insira autoscaling-web-app-group.

  5. Em Modelo de instância, selecione autoscaling-web-app-template.

  6. Para Local, selecione Várias zonas.

  7. Em Região, selecione us-central1.

  8. Em Zonas, selecione as seguintes zonas na lista suspensa:

    • us-central1-b
    • us-central1-c
    • us-central1-f
  9. Configure o escalonamento automático para o grupo de instâncias:

    1. Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias para o grupo.
    2. Defina o Número mínimo de instâncias como 3.

    3. Defina Número máximo de instâncias como 6.

    4. Defina o Período de inicialização como 120 segundos.

    5. 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.

    6. Defina a Utilização da CPU de destino para 60.

    7. Clique em Concluído.

  10. Em Recuperação automática, selecione Sem verificação de integridade na lista suspensa Verificação de integridade.

  11. Clique em Criar. Você será redirecionado para a página Grupos de instâncias.

  12. Verifique se as instâncias estão em execução:

    1. 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.
    2. 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:

      Aplicativo de demonstração da Web, que lista informações sobre a instância e tem botões de ação.

      Quando terminar, feche a guia do navegador com o aplicativo de demonstração da Web.

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:

  1. Na página Grupos de instâncias de autoscaling-web-app-group, clique na guia Monitoramento.
  2. É 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.
  3. 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:

  1. No Console do Google Cloud, abra o Cloud Shell.

    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.

  2. 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])$
    
  3. 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
    
  4. 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:

  1. 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
    
  2. 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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. 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

  1. In the Google Cloud console, go to the Instance groups page.

    Go to Instance groups

  2. Select the checkbox for your autoscaling-web-app-group instance group.
  3. To delete the instance group, click Delete.

Como excluir o modelo de instância

  1. No Console do Google Cloud, acesse a página Modelos de instância.

    Acesse "Modelos de instância"

  2. Clique na caixa de seleção ao lado de autoscaling-web-app-template.

  3. 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

  1. No Google Cloud Console, acesse a página Regras de firewall.

    Acessar as regras de firewall

  2. Clique na caixa de seleção ao lado da regra de firewall denominada default-allow-http.

  3. Clique em Excluir na parte superior da página. Na nova janela, clique em Excluir para confirmar a remoção.

A seguir