Skip to main content

EC2 na prática: Introdução ao Auto Scaling

Este guia foi desenhado para primeiro contato com o conceito de Auto Scaling na AWS. Vamos entender o conceito e criar uma arquitetura elástica utilizando apenas a interface gráfica do Console AWS.

O que é Auto Scaling?

Imagine que sua aplicação receba muitos acessos em horários de pico e poucos acessos durante a madrugada.

  • Sem Auto Scaling: Você precisaria deixar vários servidores ligados 24/7 (custo alto) ou ligar/desligar instâncias manualmente.
  • Com Auto Scaling: A própria AWS monitora o uso de recursos (como CPU) e aumenta ou diminui a quantidade de instâncias automaticamente conforme a demanda.

Conceitos Chave​

Para configurar o Auto Scaling na AWS, trabalhamos com dois componentes principais:

  1. Launch Template (Modelo de Inicialização): É a "fôrma do bolo". Define como a máquina deve nascer (qual AMI, tipo de instância, Security Group, chave SSH e script de inicialização).
  2. Auto Scaling Group - ASG (Grupo de Auto Scaling): É o "gerenciador". Define onde as máquinas vão rodar, a quantidade mínima/máxima e as regras de expansão/contração.

Pré-requisitos do Laboratório​

Antes de iniciar no console, certifique-se de que possui:

  • Chave SSH (Key Pair): mark01-teste
  • Security Group: dxc-lab (com porta 80 HTTP e 22 SSH liberadas)

Passo 1: Criar o Launch Template (Modelo de Inicialização)​

Primeiro, vamos definir as configurações padrão das instâncias que o grupo irá criar.

  1. Acesse o Console da AWS e abra o serviço EC2.
  2. No menu lateral esquerdo, na seção Instances, clique em Launch Templates.
  3. Clique no botão laranja Create launch template.
  4. Configure os campos principais:
    • Launch template name: template-lab-autoscaling
    • Template version description: Versão inicial para laboratório
    • Auto Scaling guidance: Marque a caixa Provide guidance to help set up a template for use with EC2 Auto Scaling.
    • Application and OS Images (AMI): Selecione Amazon Linux (Amazon Linux 2023).
    • Instance type: Selecione t3.micro (ou t2.micro).
    • Key pair: Selecione a chave mark01-teste.
    • Network settings:
      • Em Security Groups, selecione o grupo existente dxc-lab.
  5. Expanda a seção Advanced details no final da página.
  6. Role até o campo User data e cole o script abaixo. Este script instala um servidor web Apache e uma ferramenta chamada stress para simularmos carga de CPU depois:
#!/bin/bash
# Atualiza os pacotes e instala o Servidor Web e a ferramenta Stress
yum update -y
yum install -y httpd stress
systemctl start httpd
systemctl enable httpd

# Cria uma página HTML mostrando o ID da máquina atual
EC2_INSTANCE_ID=$(token=$(curl -sS -X PUT "[http://169.254.169.254/latest/api/token](http://169.254.169.254/latest/api/token)" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") && curl -sS -H "X-aws-ec2-metadata-token: $token" [http://169.254.169.254/latest/meta-data/instance-id](http://169.254.169.254/latest/meta-data/instance-id))
echo "<h1>Laboratório Auto Scaling - Instância: $EC2_INSTANCE_ID</h1>" > /var/www/html/index.html

  1. Clique em Create launch template.

Passo 2: Criar o Auto Scaling Group (ASG)​

Agora que temos o modelo, vamos criar o grupo que gerencia a quantidade de instâncias.

  1. No menu lateral do EC2, role até o final e clique em Auto Scaling Groups.
  2. Clique em Create Auto Scaling group.

Etapa 2.1: Escolher o Nome e o Template​

  • Auto Scaling group name: asg-lab-demo
  • Launch template: Selecione template-lab-autoscaling.
  • Clique em Next.

Etapa 2.2: Escolher a Redes (VPC e Subnets)​

  • VPC: Selecione a VPC padrão (Default VPC).
  • Availability Zones and subnets: Selecione pelo menos 2 ou 3 subnets da lista (ex: us-east-1a, us-east-1b). Isso garante alta disponibilidade distribuindo as instâncias em data centers diferentes.
  • Clique em Next.

Etapa 2.3: Opções Avançadas (Integrar com Load Balancer - Opcional)​

  • Para este primeiro contato simples, mantenha No load balancer.
  • Em Health checks, mantenha as opções padrão ativas.
  • Clique em Next.

Etapa 2.4: Definir Tamanho do Grupo e Políticas de Escalabilidade​

Aqui definimos os limites operacionais:

  • Group size (Tamanho do Grupo):

  • Desired capacity (Desejado): 1

  • Minimum capacity (Mínimo): 1

  • Maximum capacity (Máximo): 3

  • Automatic scaling (Politica de Dimensionamento):

  • Marque a opção Target tracking scaling policy.

  • Metric type: Average CPU utilization (Uso Médio de CPU).

  • Target value: 50 (Isso significa: Se a média de CPU passar de 50%, a AWS adiciona instâncias. Se baixar, ela remove).

  • Instance warmup: 60 segundos.

  • Clique em Next.

Etapa 2.5: Notificações e Tags (Opcional)​

  • Avance clicando em Next nas seções de Notifications e Tags.
  • Na tela de Review, revise os dados e clique em Create Auto Scaling group.

Passo 3: Testando o Comportamento do Auto Scaling​

Agora vamos validar se a automação está funcionando na prática.

Teste 1: Auto-recuperação (Self-Healing)​

O Auto Scaling garante que a quantidade Mínima/Desejada sempre esteja rodando. Se uma máquina falhar, ele cria outra no lugar.

  1. Vá no menu Instances -> Instances no console EC2.
  2. Você verá 1 instância sendo criada automaticamente pelo ASG.
  3. Selecione essa instância -> Clique em Instance state -> Terminate instance.
  4. Observe o comportamento: Aguarde 1 a 2 minutos e recarregue a página. Você verá que o Auto Scaling detectou o encerramento e subiu uma nova instância automaticamente para manter o mínimo de 1 máquina ativa!

Teste 2: Estresse de CPU (Escalabilidade Vertical/Horizontal)​

Agora vamos simular pico de acessos gerando carga de CPU para forçar o Auto Scaling a subir mais instâncias até o limite máximo (3).

  1. No menu Instances, selecione a nova instância criada e copie o Public IPv4 address.
  2. Abra o terminal da sua máquina local ou o AWS CloudShell.
  3. Conecte na instância via SSH usando a chave mark01-teste:
ssh -i mark01-teste.pem ec2-user@<IP_PUBLICO_DA_INSTANCIA>

  1. Dentro da instância EC2, execute o utilitário stress para elevar o uso de CPU para 100%:
stress --cpu 2 --timeout 300

(O comando vai rodar por 5 minutos mantendo a CPU estressada).

  1. Acompanhe no Console AWS:
  • Vá em Auto Scaling Groups -> Clique no asg-lab-demo.
  • Clique na aba Activity (Atividade).
  • Após 2 a 3 minutos, você verá um evento indicando que a métrica de CPU ultrapassou 50% e o evento: "Launching a new EC2 instance..."
  • Acesse a aba Instance management para ver as novas máquinas sendo provisionadas automaticamente até atingir o limite definido (máximo 3).

🧹 Limpeza dos Recursos (Teardown)​

Para evitar cobranças indesejadas após a conclusão do laboratório:

  1. Vá em Auto Scaling Groups.
  2. Selecione asg-lab-demo e clique em Delete.
  3. Confirme a exclusão digitando delete.
note

Ao excluir o Auto Scaling Group, ele encerrará automaticamente todas as instâncias EC2 associadas a ele.

  1. Vá em Launch Templates, selecione template-lab-autoscaling e clique em Actions -> Delete template.

Conclusão

Você aprendeu os conceitos fundamentais do AWS Auto Scaling, como criar um Launch Template, configurar limites de capacidade mínima/máxima e testar as respostas automáticas a falhas e estresse de carga via Console AWS!


<ElicitationsGroup message="Deseja incluir mais elementos neste módulo de Auto Scaling?">
<Elicitation label="Adicionar uma etapa para integrar um Application Load Balancer (ALB)" query="Como podemos adicionar uma seção neste documento do Auto Scaling ensinando a criar um Load Balancer (ALB) via console para distribuir o tráfego entre as instâncias?"/>
<Elicitation label="Adicionar explicação visual com diagramas Mermaid" query="Você pode adicionar diagramas Mermaid no Markdown para explicar o fluxo do Auto Scaling e facilitar o entendimento da equipe?"/>
</ElicitationsGroup>