Usando escalonamento automático para aplicativos altamente escaláveis


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. 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 de aplicativo

O aplicativo inclui os seguintes componentes do Compute Engine:

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:

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

    Vá para Firewalls

  2. Clique em Criar regra de firewall .

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

  4. Defina a rede como default .

  5. Defina Destinos para selecionar Specified target tags .

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

  7. Defina o filtro de origem para IPv4 ranges .

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

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

  9. Em Protocolos e portas , selecione Protocolos e portas especificados . Em seguida, selecione TCP e digite 80 para permitir acesso ao tráfego HTTP .

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

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

    Vá para 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 o 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 a partir deste modelo.

  6. Expanda a seção Opções avançadas para ver as configurações avançadas.

  7. Expanda a seção Gerenciamento .

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

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

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

    Vá para grupos de instâncias

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

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

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

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

  6. Para Localização , selecione Zonas múltiplas .

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

  8. Para 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. Para o modo de escalonamento automático , selecione Ativado: adicionar e remover instâncias do grupo .
    2. Defina o número mínimo de instâncias como 3 .

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

    4. Defina o período de inicialização para 120 segundos.

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

    6. Defina a utilização alvo da CPU como 60 .

    7. Clique em Concluído .

  10. Em Autohealing , selecione Nenhuma verificação de integridade na lista suspensa Verificação de integridade .

  11. Clique em Criar . Isso redireciona você para a página Grupos de instâncias .

  12. Para verificar se suas 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 é aberta exibindo o aplicativo web de demonstração:

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

      Quando terminar, feche a guia do navegador do aplicativo web de demonstração.

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:

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

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

    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.

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

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

  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.

Excluindo recursos específicos

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

Excluindo o modelo de instância

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

    Vá para 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 exclusão.

Excluindo a regra de firewall

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

    Vá para as regras do Firewall

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

  3. Clique em Excluir . Na nova janela, clique em Excluir para confirmar a exclusão.

O que vem a seguir