Amazon Auto Scaling é um dos produtos AWS que permite que você aumente ou diminua a capacidade do seu EC2 Amazon automaticamente de acordo com critérios que você definir. Desta forma, você pode aumentar o seu número de instâncias EC2 em momentos de picos de acesso à sua aplicação e diminuir este número quando o número de acessos voltar ao normal.
Vamos a um exemplo. Você pode definir que quando a utilização média de CPU de seu conjunto EC2 for maior que 70%, você quer dobrar a sua atual capacidade. Da mesma forma, você define que quer reduzir em 50% a sua capacidade atual quando a utilização média de CPU for menor que 10%. Com isso você reduz os custos da sua aplicação, uma vez que você só usa os recursos da Amazon quando realmente são necessários.
Se você já é assinante do Amazon EC2, você pode usar o Auto Scaling sem pagar taxas adicionais por isso. Para configurar o Auto Scaling é muito fácil. Vamos ao passo-a-passo:
- Acesso a minha instância EC2 através do ssh;
- Uma vez dentro da minha instância, faço download da API de Auto Scaling que pode ser encontrada aqui;
- Descompactar o arquivo usando unzip ou tar;
- Agora vamos configurar algumas variáveis para que a Auto Scaling API funcione. Devemos configurar:
$ export JAVA_HOME=/caminho-para-sua-pasta-java
$ export EC2_CERT=/caminho-para-seu-certificado-acesso/cert-XXXXXXXXXXXX.pem
$ export EC2_PRIVATE_KEY=/caminho-para-sua-chave-acesso/pk-XXXXXXXXXXXXXXXX.pem
$ export AWS_AUTO_SCALING_HOME=/caminho-absoluto/AutoScaling-1.0.33.1/
Eu aconselho colocá-las no seu .bashrc.
- Com a API configurada vamos criar a configuração de lançamento de novas instâncias do nosso auto scaling: launch configuration. Quando houver picos de acesso à sua aplicação, é aqui que o auto scaling procura quais são as características da instância que ele deve lançar.
$ as-create-launch-config nomeDaConfiguração –image-id imagemEC2 –instance-type tipodainstancia
O nome da instância pode ser o que você quiser. A imagem é o image-id da sua imagem ou da imagem EC2 que você quer lançar. O tipo da instância pode ser micro, small, medium, large… Só fique atento pois as instâncias micro e large são 64bits e as small e medium 32bits. Não tente lançar uma imagem que foi construída a partir de uma instância micro como uma instância medium. Não vai funcionar!
- O próximo passo é configurar o grupo Auto Scaling. Este grupo representa o conjunto de instâncias EC2 que você deseja aplicar as condições de dimensionamento.
$ as-create-auto-scaling-group nomedogrupo –launch-configuration nomeDaConfiguração –availability-zones us-east-1b –min-size 1 –max-size 10 –default-cooldown 60 –load-balancers nomeDoLB –health-check-type ELB –grace-period 120
Vamos detalhar cada parâmetro:
- availability-zones: Aqui você especifica em quais regiões(zones) da Amazon suas instâncias serão lançadas. É obrigatório que pelo menos uma região esteja configurada.
- min-size: quantidade mínima de instâncias que serão mantidas em funcionamento.
- max-size: quantidade máxima de instâncias que serão mantidas em funcionamento. Uma dica importante é que a Amazon limita em 20 instâncias. Se você precisar de mais de vinte, tem que solicitar a liberação.
- default-cooldown: é o tempo de “resfriamento”. Definido em segundos, significa o tempo que o escalonador deve esperar entre atividades de escalonamento bem sucedidas.
- health-check: o que deve-se verificar para dizer que seu conjunto EC2 está saudável e funcionando ou não. Como estou usando o Auto Scaling com o Load Balancer, informo ELB. Mas poderia ser EC2 também. Mais detalhes aqui.
- grace-period: é o tempo em que se ignora falhas de “saúde” de uma instância após esta ser lançada. Também definido em segundos.
- Agora é só configurar as ações de escalonamento que desejamos para o nosso grupo através das políticas de escalonamento. É importante que você tenha políticas que aumentem e diminuam a sua capacidade EC2. Vou citar um exemplo:
Política para dobrar a capacidade:
$ as-put-scaling-policy –name policy-double –type PercentChangeInCapacity –auto-scaling-group nomedogrupo –adjustment=100
Política para reduzir a capacidade pela metade:
$ as-put-scaling-policy –name policy-down –type PercentChangeInCapacity –auto-scaling-group nomedogrupo –adjustment=-50
A Amazon não suporta mais o uso de triggers. Agora o Auto Scaling é feito somente com políticas. Mas e como e quando estas políticas são disparadas? Para o completo funcionamento do Auto Scaling, devemos utilizar o serviço de CloudWatch da Amazon. Na configuração do CloudWatch é que vamos dizer em que momento cada política deve ser aplicada.
Não estou conseguindo configurar na minha instância com o ubuntu. Poderia me dar seu contato de msn para conversarmos?
Olá! Eu não estou mais trabalhando com Cloud e fiquei “desatualizada” nas novas funcionalidades do EC2. Sugiro q vc busque ajuda nos fóruns do AWS. Me ajudou muito!
Até mais!
Poderia me informar apenas se para efetuar essa ação no CloudWatch, usaria qual tipo de alarme?
– ALARM
– INSUFFICIENT DATA
– OK
Eu usei o ALARM.
Olá Ana Paula,
Primeiramente gostaria de agradecer pelo ótimo tutorial, encontrei vários na internet mas o seu é mais objetivo e mais claro.
Só uma dúvida que ainda ficou.
Entendi que preciso criar uma AMI para poder utilizar o auto scaling, porém na prática pretendo utilizar este recurso para um e-commerce onde todos os dias são cadastrados novos produtos.
Neste caso sempre que houver atulizações no site vou precisar criar uma nova AMI e definir todo o auto scaling novamente?
Abraços.