O documento discute como economizar usando instâncias Amazon EC2 Spot. Apresenta três tipos de requisições de instâncias Spot: Spot, Spot Blocks e Spot Fleet. Explica como escalar aplicações usando instâncias Spot junto com instâncias On-Demand para reduzir custos significativamente.
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. 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. 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. $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
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!
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
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. 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. 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
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. 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. 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. 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. 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
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. Flexibilidade do Spot Fleet
2. Entre famílias EC2
3. Entre AZs
1. Dentro da família EC2
31. Spot Fleet
Dependendo da quantidade e variação do seu Spot Fleet,
utilizar o CLI pode ser complicado.
Dica:
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
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
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. 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. Qual tipo de Spot devo usar?
• Na dúvida, use Spot Fleet