O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2

595 visualizações

Publicada em

O Amazon EC2 permite que você obtenha capacidade computacional de uma forma econômica usando instâncias spot.

Este recurso permite uma redução de até 90% no custo em relação ao valor on demand. Nesta sessão, os participantes aprenderão as boas práticas deste modelo e alguns casos de uso em que as instâncias spot podem ser utilizadas com sucesso.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2

  1. 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Rubens Devito Filho | Arquiteto de Soluções Amazon EC2: Economize Utilizando Instâncias Spot
  2. 2. Agenda • Conceito de instâncias Spot • Tipos de requisições de instâncias Spot • Spot • Spot Blocks • Spot Fleet • Escalando com instâncias Spot • Quando usar Spot x Spot Blocks x Spot Fleet
  3. 3. O que é Amazon EC2 Spot $1 • São instâncias EC2 que você pode aplicar uma oferta de preço. Como instâncias Spot estão geralmente disponíveis a preços baixos, você pode reduzir significamente os custos com Amazon EC2.
  4. 4. As Regras são Simples Mercados onde o preço muda baseado na oferta e procura Você nunca pagará mais do que o valor da sua oferta. Quando o preço de mercado exceder o valor da sua oferta, você recebe 2 minutos para concluir suas tarefas
  5. 5. $0.27 $0.29$0.50 1b 1c1a 8XL $0.30 $0.16$0.214XL $0.07 $0.08$0.082XL $0.05 $0.04$0.04XL $0.01 $0.04$0.01L C3 $1.76 On Demand $0.88 $0.44 $.22 $0.11 Cada família de instância Cada tamanho de instância Cada Zona de Disponibilidade Em cada região É um Spot Market separado Quais são os mercados de Spot
  6. 6. Spot Bid Advisor https://aws.amazon.com/ec2/spot/bid-advisor/
  7. 7. Exemplo
  8. 8. Vamos às contas • m3.2xlarge em São Paulo = $0.761/hr • $0.0853/hr = ~11% • ~11% < t2.medium ($0.108/hr) • Por 3 meses ou mais • Ao invés de $1671.18 seu custo será de $184.24 • Redução de quase $1500!
  9. 9. Spot CLI #Lança instâncias Spot aws ec2 request-spot-instances --spot-price "0.0200" --instance-count 2 -- region us-west-2 --launch-specification file:///Users/user/Folder/spot.json
  10. 10. spot.json { "ImageId": "ami-f0091d91", "KeyName": "EC2", "SecurityGroupIds": [ "sg-c0c188a5" ], "InstanceType": "m3.medium", "Placement": { "AvailabilityZone": "us-west-2c” }, "SubnetId": "subnet-0694685f” }
  11. 11. Determine o tipo e a validade da sua oferta • Única ou persistente • Se a oferta for persistente, uma nova requisição será feita automaticamente após a instância ser terminada • Possibilidade de configurar o prazo da sua oferta
  12. 12. Spot CLI #Lança instâncias Spot aws ec2 request-spot-instances --spot-price "0.0200" --instance-count 2 -- region us-west-2 –-type ”persistent” --launch-specification file:///Users/user/Folder/spot.json
  13. 13. Use instâncias Spot para escalar 1. Crie um Auto Scaling só de Spot 2. Crie outro Auto Scaling com On-Demand 3. Ambos no mesmo Elastic Load Balancing 4. Configure métricas mais agressivas no Auto Scaling de Spot e seja mais conservador no Auto Scaling de On- Demand 5. Instâncias Spot serão lançadas primeiro e desligadas por último 6. Instâncias On-Demand serão lançadas por último e desligadas primeiro
  14. 14. Aplicação Web com Spot Dados de Sessão Zona de Disponibilidade A Zona de Disponibilidade B ASG Spot Elastic Load Balancing ASG On- Demand
  15. 15. Use instâncias Spot para escalar 1. Crie um Auto Scaling só de Spot a) Via Console, crie um Launch Configuration que faça a requisição de Spot b) Crie o Auto Scaling Group com esse Launch Configuration
  16. 16. Auto Scaling Spot CLI #Cria Launch Configuration com Spot aws autoscaling create-launch-configuration --launch-configuration-name LC_Spot -- image-id ami-d0f506b0 –-key-name EC2 --instance-type m3.medium --spot-price 0.0140 –- region us-west-2 #Cria Auto Scaling com Spot aws autoscaling create-auto-scaling-group --region us-west-2 --auto-scaling-group-name ASG_Spot --launch-configuration-name LC_Spot --availability-zones "us-west-2a" "us- west-2b" "us-west-2c" --max-size 4 --min-size 1 --desired-capacity 2 --vpc-zone- identifier subnet-bbd906cc,subnet-569e2733,subnet-0694685f
  17. 17. Use instâncias Spot para escalar 2. Crie um Auto Scaling de On-Demand a. Via Console, crie um Launch Configuration sem requisitar Spot b. Via CLI, utilize os mesmos comandos removendo apenas o parâmetro --spot-price c. Crie o Auto Scaling Group da mesma maneira que o Spot
  18. 18. Use instâncias Spot para escalar 3. Ambos no mesmo Elastic Load Balancing a. Via Console, vá no Auto Scaling e edite o campo Load Balancers b. Via CLI, adicione o parâmetro --load-balancer-names c. Faça isso para os dois Auto Scaling Groups
  19. 19. Auto Scaling Spot CLI #Cria Auto Scaling anexado à um Load Balancer aws autoscaling create-auto-scaling-group --region us-west-2 --auto-scaling-group-name ASG_Spot --launch-configuration-name LC_Spot --availability-zones "us-west-2a" "us- west-2b" "us-west-2c" --max-size 4 --min-size 1 --desired-capacity 2 --vpc-zone- identifier subnet-bbd906cc,subnet-569e2733,subnet-0694685f --load-balancer-names MyELB
  20. 20. Use instâncias Spot para escalar 4. Configure métricas mais agressivas no Auto Scaling de Spot e seja mais conservador no Auto Scaling de On- Demand. Exemplo: a) Se CPU >= 40% lance Spot b) Se CPU >= 70% lance On-Demand c) Se CPU <= 40% remova On-Demand d) Se CPU <= 20% remova Spot 5. Instâncias Spot serão lançadas primeiro e desligadas por último 6. Instâncias On-Demand serão lançadas por último e desligadas primeiro
  21. 21. Fique atento com o alerta de 2 minutos $ if curl -s http://169.254.169.254/latest/meta- data/spot/termination-time | grep -q .*T.*Z; then instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id); aws elb deregister-instances-from-load-balancer --load-balancer-name my-load-balancer --instances $instance_id; /env/bin/flushsessiontoDBonterminationscript.sh; fi 1) Verifica o alerta de 2 minutos 2) Se SIM, remove a instâncias do ELB 3) Caso contrário, não faça nada 4) Aguarda por 5 segundos
  22. 22. Spot Block
  23. 23. Amazon EC2 Spot Block $1 Rode sem interrupções por até 6 horas Reduza até 50% do preço On-Demand
  24. 24. Spot Block CLI
  25. 25. Spot Block CLI #Lança instâncias Spot aws ec2 request-spot-instances --spot-price "0.0200" --instance-count 1 –- block-duration-minutes 120 --region us-west-2 --launch-specification file:///Users/user/Folder/spot.json
  26. 26. Spot Fleet
  27. 27. Amazon EC2 Spot Fleet • Lance centenas de instâncias Spot com uma única chamada RequestSpotFleet • Lowest Price • Encontre o melhor preço que funcione para você • Diversified • Diversifique sua frota. Amplie sua disponibilidade • Custom Weighting • Crie sua própria unidade de capacidade baseado nas necessidades da sua aplicação
  28. 28. Flexibilidade do Spot Fleet 2. Entre famílias EC2 3. Entre AZs 1. Dentro da família EC2
  29. 29. Spot Fleet CLI #Lança instâncias Spot aws ec2 request-spot-fleet –-spot-fleet-request-config file:///Users/user/Folder/spot_fleet.json
  30. 30. spot_fleet.json { "SpotPrice": "0.04", "TargetCapacity": 3, "IamFleetRole": "arn:aws:iam::109434434086:role/aws-ec2-spot-fleet-role", "LaunchSpecifications": [ { "ImageId": "ami-f0091d91", "KeyName": "EC2", "SecurityGroups": [ { "GroupId": "sg-c0c188a5” } ], "InstanceType": "c3.large", "Placement": { "AvailabilityZone": "us-west-2c" }, "SubnetId": "subnet-0694685f", "IamInstanceProfile": { "Arn": "arn:aws:iam::109434434086:role/aws-ec2-spot-fleet-role” } }, { "ImageId": "ami-f0091d91", "KeyName": "EC2", "SecurityGroups": [ { "GroupId": "sg-c0c188a5" } ], "InstanceType": "m3.medium", "Placement": { "AvailabilityZone": "us-west-2b” }, "SubnetId": "subnet-569e2733", "IamInstanceProfile": { "Arn": "arn:aws:iam::109434434086:role/aws-ec2-spot-fleet-role” } } ] }
  31. 31. Spot Fleet Dependendo da quantidade e variação do seu Spot Fleet, utilizar o CLI pode ser complicado. Dica:
  32. 32. Aplicação Web sem Estado (Stateless) Elastic Load Balancing Stateless Web Servers (Spot) Stateless Web Servers (Spot) Dados de Sessão Spot fleet Zona de Disponibilidade A Stateless Web Servers (Spot) Stateless Web Servers (Spot) Zona de Disponibilidade B
  33. 33. Cenário
  34. 34. Spot Fleet mantém a Capacidade Desejada
  35. 35. Escale seu Spot Fleet Elastic Load Balancing Stateless Web Servers (Spot) Stateless Web Servers (Spot) Zona de Disponibilidade A Zona de Disponibilidade B Stateless Web Servers (Spot) Stateless Web Servers (Spot) alarm
  36. 36. Escale seu Spot Fleet
  37. 37. Requisitos para usar Spot • Não persista nada na instância Spot • Para sessões, Amazon ElastiCache ou Amazon DynamoDB • Para logs, Amazon S3 • … • Use para aplicações escaláveis e automatizadas • Evite para aplicações monolíticas caso ela seja crítica
  38. 38. Qual tipo de Spot devo usar? • Spot • Escalar (integrado com Auto Scaling) • Processamento em batch com tempo indeterminado • Task Nodes do EMR • Ambientes de DEV e Homologação, instância de CI • Workers em geral • Spot Blocks • Qualquer job que tem limite de até 6 horas para ser executado • Processamento em batch • HDFS de um cluster EMR • Spot Fleet • Aplicações Web estáveis usando Diversified em diferentes AZs • Task Nodes do EMR • Cluster de containers
  39. 39. Qual tipo de Spot devo usar? • Na dúvida, use Spot Fleet
  40. 40. Obrigado!

×