Django com Auto scaling na AWS – parte 2/2

Olá,

na primeira parte do artigo, fizemos os 3 primeiros passos para ter nosso app Django com Auto scaling na AWS.

Agora vamos para a parte um pouco mais complicada que requer mais atenção.

4 – Criando o ELB e Auto Scaling Group

Vamos criar o ELB ( Load Balancer ) que é encarregado de distribuir o tráfego entre as instâncias Django que estão no ar. Já o Auto Scaling Group é o grupo de instâncias idênticas que rodam a aplicação, esse grupo é configurado para aumentar ou diminuir o número de instâncias de acordo com a necessidade.


Criando o ELB

Acesse o painel de controle do EC2, e clique na opção Load Balancers do menu lateral e depois clique no botão Create Load Balancer.

elb-1

Escolha uma nome para o Load Balancer, e mude a configuração da Instance Port para a porta 8000 onde nosso Django estará ouvindo.

 

elb-2

 

Modifique o Ping Path para /, que é o path que o Load Balancer acessará para checar se o Django está funcionando. Caso essa checagem falhe, o load balancer para de enviar tráfego para essa instância.

elb-3

 

 

Pronto, agora confira as configuração e clique em Create.

elb-4

Criando uma Launch Configuration

A launch configuration é a template que será utilizada para subir novas instâncias no Scaling Group. Nela iremos definir qual AMI deve ser utilizada, qual tipo de instância, etc…

No painel de controle do EC2 acesse a opção Launch Configuration.

lc-1

Selecione a AMI que criamos anteriormente.

lc-2

Escolha um nome para sua Launch Configuration e marque a opção de CloudWatch detailed monitoring. Essa opção irá nos ajudar quando fomos testar se o Scale Group está funcionando, pois teremos mais estatísticas no CloudWatch.

lc-4

Selecione o Security Group default, que utilizamos anteriormente, cuja as portas 22 e 8000 estão liberadas. Essas portas não devem ficar expostas depois que o Scale Group estiver funcionando, são importantes apenas durante a fase de testes.

lc-5

Criando o Scaling Group

Bom, agora vem a parte com mais detalhes.

Após criar a Launch Configuration o wizard para criação do Scaling group deve abrir automaticamente, caso isso não aconteça, clique na opção Auto Scaling Groups do menu lateral.

Nesse primeiro passo, temos que modificar as opções:

  • Group name
  • Network – utilize sua VPC, pois o tipo de instância t2-micro só está disponível para ser utilizada em VPC
  • Subnet – caso esteja utilizando a região SaoPaulo, utilize apenas a subnet na AZ sa-east-1a, pois a instância t2-micro não está disponível na AZ sa-east-1b ( pelo menos hoje enquanto escrevo esse artigo)
  • Load Balancing – escolha o ELB que criamos anteriormente

sg-1

Nesse segundo passo, temos que definir:

  • o número mínimo de instâncias do Scale group
  • o número máximo de instâncias do Scale group
  • o critério que fará o Auto Scale Group aumentar o número de instâncias
  • o critério que fará o Auto Scale Group diminuir o número de instâncias

SG-2.1

Clique na primeira opção Add new alarm e configure de acordo com a figura abaixo:

SG-2.2

 

Com essa configuração, o Scale Group irá adicionar 1 nova instância ao grupo, quando o uso de CPU dos servidores for maior ou igual à 70% por mais de 1 minuto, até que seja atingido o número máximo de instâncias do grupo.

Clique na segunda opção Add new alarm e configure de acordo com a figura abaixo:

*fique atento ao sinal de menor ou igual <=

SG-2.3

Com essa configuração, o Scale Group irá remover 1 instância ao grupo, quando o uso de CPU dos servidores for menor ou igual à 50% por mais de 1 minuto, até que seja atingido o número mínimo de instâncias.

No final, você deve ter as configurações igual a figura abaixo.

SG-2.4

Agora nesse passo, defina um alarm, para que você receba notificações quando o Scale Group entrar em ação.

sg-3

Finalmente, vamos conferir as configurações e clique em Create.

sg-6

Pronto, Auto Scale Group criado!!

Confira se o grupo conseguiu subir instâncias, pelo painel de controle EC2, na opção Auto Scale Groups.

sg-7

 

Aguarde alguns minutos, e confira no ELB, se a instância criada pelo Scale Group está em serviço.

elb-check

Ótimo, está em serviço, podemos acessar o app, utilizando a url do ELB.

elb-teste-ok

Funcionou! Estamos prontos para testar o auto scale finalmente.

5 – Testando!

Agora vamos testar o Auto Scale, ou seja, vamos simular tráfego para que a utilização de CPU das instância EC2 ultrapasse os 70%, ativando os alarmes que irão acionar o mecanismo de scaling.

Para testar, acesse o endereço de seu ELB, como na figura acima, selecione 10 minutos e clique no botão Generate Load. Após isso acesse o painel de controle da ferramenta CloudWatch da Amazon.

Nesse painel você poderá conferir o status dos alarmes de utilização de CPU.

Após 1 minuto, o alarme de média de uso de CPU >= 70% irá ser ativado, acionando a criação de instâncias pelo Auto Scale Group.

sg-increase

Pronto, agora quando acessamos as informação do scale group, já podemos verificar que existem 2 instancias ativas.

 

 

sg-increase-1

 

Nosso Scale Group está funcionando! 🙂

 

Agora vamos deixar a instância parada por 1 minuto e verificar no CloudWatch o alarme para uso de CPU <= 30%.

sg-terminating-2

Veja que a instância que tinha sido adicionada pouco tempo atrás já está sendo destruída.

 

sg-terminating

 

Bom, agora que já testamos tudo, não podemos nos esquecer de excluir todos itens criados durante esse tutorial para não ter um susto no final do mês.

Os itens que foram criados durante o artigo e que geram cobrança são:

  • Auto Scale Group
  • ELB
  • Instância RDS
  • AMI

 

É isso ai pessoal, espero que esse artigo ajude quem esteja a procura de saber mais a respeito de Auto Scale com um exemplo prático.

Qualquer comentário e/ou feedback é muito bem vindo. 🙂

 

 

 

1 comment

Leave a Reply