Depois de falar sobre como se deve configurar o Auto Scaling da solução AWS da Amazon, fiquei em dúvida se havia sido clara o suficiente e resolvi completar o que havia dito antes no post de hoje.
Amazon Auto Scaling é um dos produtos AWS que permite que você aumente ou diminua a capacidade da sua aplicação automaticamente de acordo com critérios que você definir. Desta forma, você pode aumentar o seu número de instâncias (máquinas) em momentos de picos de acesso à sua aplicação e diminuir este número quando o número de acessos voltar ao normal.
A configuração completa do serviço de Auto Scaling é dada pelo conjunto LoadBalancer + configuração de auto scaling + CloudWatch. Usando este conjunto, você consegue escalar automaticamente a sua aplicação. Vamos detalhar cada um deles:
- LoadBalancer(LB): Distribui, de forma automática, o tráfego da sua aplicação entre as instâncias(máquinas) Amazon EC2. Esta distribuição é feita tanto entre instâncias que estão na mesma região(zone) ou em regiões distintas. Além disso, o LoadBalancer identifica instâncias que não estão saudáveis(não respondem às requisições) e interrompe o tráfego de requisições para esta instância.
- CloudWatch: Este é o serviço de monitoração dos seus recursos AWS. Com ele você pode acompanhar o uso de recursos e desempenho operacional das suas instâncias EC2 ou RDS. É possível ver o uso de CPU, tráfego de leitura e escrita, tráfego de rede e etc. Você pode escolher se deseja monitorar pela média, soma, máximo e qual o intervalo de tempo(1 hora, 15 minutos, 5 minutos ou 1 minuto).
- Configuração do autoscaling: A configuração de autoscaling determina qual tipo de máquina será lançada em momentos de pico, qual o seu tamanho, qual o número mínimo e máximo de novas instâncias que sua aplicação poderá ter rodando ao mesmo tempo e as políticas para lançar e parar instâncias.
Para uma melhor compreensão de como este conjunto funciona, vamos a um exemplo. Suponha que você possui uma máquina rodando sua aplicação na Amazon(1 instância EC2). Você sabe que quando há 50% de utilização de CPU da sua instância por mais 5 minutos, significa um pico de acesso e você deseja dobrar a sua capacidade(lançar outra instância). Mas passado o pico de acesso, você quer voltar à sua capacidade inicial.
Diante deste cenário temos 1 instância EC2 rodando embaixo de um LoadBalancer. Esta instância está saudável e funcionando bem até que há um pico de acesso(o comercial do seu produto passou na tv). Com o aumento de acessos, o tráfego aumenta e a instância atinge 50% de utilização de CPU. O serviço de monitoração, CloudWatch, percebe que o percentual de utilização de CPU chegou a 50% e, através do disparo de um alarme, executa a política que dobra a capacidade da aplicação. Esta política foi configurada conforme o passo-a-passo de configuração de autoscaling. Agora o LoadBalancer passa a distribuir as requisições entre estas duas novas instâncias.
Agora que o pico de acessos passou, o percentual de utilização médio das duas instâncias baixou para 10%. Não é necessário ter 2 instâncias rodando. Novamente o CloudWatch percebe que o percentual de utilização de CPU baixou para 10% e executa a política que diminui 50% da capacidade atual. Voltamos a ter uma instância rodando.
Acredito que o ponto mais difícil do serviço de autoscaling é entender o conceito e para qual finalidade devemos usar a ferramenta. Uma vez que conseguimos entender isso, a configuração é simples. O Passo-a-passo da configuração de auto-scaling, você encontrar aqui. Já o CloudWatch e o LoadBalancer tem configuração ainda mais simples e que pode ser feita pelo AWS Console.
Configuração LoadBalancer:
Acesse o seu AWS Console, vá na aba EC2 e no canto esquerdo da tela, selecione a opção Load Balancers:

Para criar um LoadBalancer é só clicar em “Create Load Balancer”. Será exibida uma tela popup para que a configuração do novo Load Balancer seja feita. A primeira coisa é dar um nome para o seu load balancer e escolher os protocolos com o qual ele vai funcionar(HTTP, HTTPS, SSL).

O passo seguinte é configurar os parametros para a verificação de saúde das instâncias sob o LoadBalancer.

- response timeout: quanto tempo o LoadBalancer deve esperar por uma resposta da instância;
- Health Check Interval: quantos segundos deve esperar para realizar uma nova verificação de saúde;
- Unhealthy Threshold: número de fracassos na verificação de saúde de uma instância para indicar que ela não está saudável. Exemplo: Ele vai perguntar duas vezes para a instância se ela está saudável. Se as duas respostas consecutivas forem “não saudável”, o LoadBalancer marca esta instância como “não saudável”;
- Healthy Threshold: número de sucessos na verificação de saúde de uma instância para indicar que ela está saudável. Exemplo: Ele vai perguntar 10 vezes para a instância se ela está saudável. Se as 10 respostas consecutivas forem “saudável”, o LoadBalancer marca esta instância como “saudável”;
O próximo passo é adicionar instâncias ao Load Balancer.

Agora é revisar as configurações e concluir. Não esqueça que o seu domínio(www.meusite.com) deve apontar para o DNS Name do seu loadbalancer.
Configuração CloudWatch:
Acesse o seu AWS Console, vá na aba CloudWatch e no canto esquerdo da tela, selecione a opção Alarms:

Vamos criar um alarme para associar à nossa política que dobra a capacidade.
Neste passo você escolhe a métrica que você quer utilizar, o tipo estatístico(média, soma, máximo) e o período( a cada 5 minutos, 15 minutos e etc). No próximo passo, vamos definir o alarme informando a descrição e os parametros para monitoração.

Neste exemplo, o alarme será disparado quando o percentual de utilização de CPU passar de 60% por 1 minuto ou mais.
No passo seguinte, vamos indicar qual a política que este alarme vai executar. Você também pode configurar endereços de email para o qual será enviado um alerta quando este alarme for disparado.

Você indica se a ação é um envio de email(send notification) ou a execução de uma política.
Após seguirmos estes três passos de configuração, já temos um serviço completo de autoscaling configurado para nossa aplicação.
Deixe um comentário