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.
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:
- 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).
- 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.
- Acesse o Console da AWS e abra o serviço EC2.
- No menu lateral esquerdo, na seção Instances, clique em Launch Templates.
- Clique no botão laranja Create launch template.
- 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(out2.micro). - Key pair: Selecione a chave
mark01-teste. - Network settings:
- Em Security Groups, selecione o grupo existente
dxc-lab.
- Em Security Groups, selecione o grupo existente
- Launch template name:
- Expanda a seção Advanced details no final da página.
- Role até o campo User data e cole o script abaixo. Este script instala um servidor web Apache e uma ferramenta chamada
stresspara 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
- 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.
- No menu lateral do EC2, role até o final e clique em Auto Scaling Groups.
- 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:
60segundos. -
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.
- Vá no menu Instances -> Instances no console EC2.
- Você verá 1 instância sendo criada automaticamente pelo ASG.
- Selecione essa instância -> Clique em Instance state -> Terminate instance.
- 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).
- No menu Instances, selecione a nova instância criada e copie o Public IPv4 address.
- Abra o terminal da sua máquina local ou o AWS CloudShell.
- Conecte na instância via SSH usando a chave
mark01-teste:
ssh -i mark01-teste.pem ec2-user@<IP_PUBLICO_DA_INSTANCIA>
- Dentro da instância EC2, execute o utilitário
stresspara elevar o uso de CPU para 100%:
stress --cpu 2 --timeout 300
(O comando vai rodar por 5 minutos mantendo a CPU estressada).
- 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:
- Vá em Auto Scaling Groups.
- Selecione
asg-lab-demoe clique em Delete. - Confirme a exclusão digitando
delete.
Ao excluir o Auto Scaling Group, ele encerrará automaticamente todas as instâncias EC2 associadas a ele.
- Vá em Launch Templates, selecione
template-lab-autoscalinge clique em Actions -> Delete template.
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>