42
© 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

Amazon EC2: Economize utilizando Instancias Spot

Embed Size (px)

Citation preview

Page 1: Amazon EC2: Economize utilizando Instancias Spot

© 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

Page 2: Amazon EC2: Economize utilizando Instancias Spot

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

Page 3: Amazon EC2: Economize utilizando Instancias Spot

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.

Page 4: Amazon EC2: Economize utilizando Instancias Spot

As Regras são Simples

Mercados onde o preço mudabaseado na oferta e procura

Você nunca pagará mais do que o valor da sua oferta. Quando o preçode mercado exceder o valor da suaoferta, você recebe 2 minutos para

concluir suas tarefas

Page 5: Amazon EC2: Economize utilizando Instancias Spot

$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

Page 6: Amazon EC2: Economize utilizando Instancias Spot

Spot Bid Advisor

https://aws.amazon.com/ec2/spot/bid-advisor/

Page 7: Amazon EC2: Economize utilizando Instancias Spot

Exemplo

Page 8: Amazon EC2: Economize utilizando Instancias Spot

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!

Page 9: Amazon EC2: Economize utilizando Instancias Spot

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

Page 10: Amazon EC2: Economize utilizando Instancias Spot

spot.json

{

"ImageId": "ami-f0091d91",

"KeyName": "EC2",

"SecurityGroupIds": [ "sg-c0c188a5" ],

"InstanceType": "m3.medium",

"Placement": {

"AvailabilityZone": "us-west-2c”

},

"SubnetId": "subnet-0694685f”

}

Page 11: Amazon EC2: Economize utilizando Instancias Spot

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

Page 12: Amazon EC2: Economize utilizando Instancias Spot

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

Page 13: Amazon EC2: Economize utilizando Instancias Spot

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

Page 14: Amazon EC2: Economize utilizando Instancias Spot

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

Page 15: Amazon EC2: Economize utilizando Instancias Spot

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-nameASG_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

Page 16: Amazon EC2: Economize utilizando Instancias Spot

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

Page 17: Amazon EC2: Economize utilizando Instancias Spot

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

Page 18: Amazon EC2: Economize utilizando Instancias Spot

Auto Scaling Spot CLI

#Cria Auto Scaling anexado à um Load Balancer

aws autoscaling create-auto-scaling-group --region us-west-2 --auto-scaling-group-nameASG_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

Page 19: Amazon EC2: Economize utilizando Instancias Spot

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

Page 20: Amazon EC2: Economize utilizando Instancias Spot

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

Page 21: Amazon EC2: Economize utilizando Instancias Spot

Spot Blocks

Page 22: Amazon EC2: Economize utilizando Instancias Spot

Amazon EC2 Spot Block

$1

Rode sem

interrupções por até

6 horas

Reduza até 50% do

preço On-Demand

Page 23: Amazon EC2: Economize utilizando Instancias Spot

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-specificationfile:///Users/user/Folder/spot.json

Page 24: Amazon EC2: Economize utilizando Instancias Spot

Spot Fleet

Page 25: Amazon EC2: Economize utilizando Instancias Spot

Amazon EC2 Spot Fleet

• Lance centenas de instâncias Spot com uma única chamadaRequestSpotFleet

• 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

Page 26: Amazon EC2: Economize utilizando Instancias Spot

Flexibilidade do Spot Fleet

2. Entre famílias EC2

3. Entre AZs

1. Dentro da família EC2

Page 27: Amazon EC2: Economize utilizando Instancias Spot

Spot Fleet CLI

#Lança instâncias Spot

aws ec2 request-spot-fleet –-spot-fleet-request-configfile:///Users/user/Folder/spot_fleet.json

Page 28: Amazon EC2: Economize utilizando Instancias Spot

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”

}

}

]

}

Page 29: Amazon EC2: Economize utilizando Instancias Spot

Spot Fleet

Dependendo da quantidade e variação do seu Spot Fleet,

utilizar o CLI pode ser complicado.

Dica:

Page 30: Amazon EC2: Economize utilizando Instancias Spot

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

Page 31: Amazon EC2: Economize utilizando Instancias Spot

Cenário

Page 32: Amazon EC2: Economize utilizando Instancias Spot

Spot Fleet mantém a Capacidade Desejada

Page 33: Amazon EC2: Economize utilizando Instancias Spot

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)

AlarmeAmazon

CloudWatch

Contagem de

Requisições

AWS

Lambda

ModifySpotFleetRequest API

Page 34: Amazon EC2: Economize utilizando Instancias Spot

“A flexibilidade que a AWS oferece para adequar nosso

ambiente à variação de audiência, aliada a performance,

robsutez e segurança são os pilares onde nos apoiamos

para desenvolver nossa parceria com a AWS.”

O ZAP tem sede em São Paulo, conta com 400 funcionários e possui 25 escritórios regionais distribuídos pelo Brasil. Nossos principais polos de tecnologia estão localizados em São Paulo, Porto Alegre e Maringá.

Oferecemos as ferramentas de buscas com os mais adequados filtros de pesquisa através de website ou por meio de um moderno aplicativo para celulares e tablets das plataformas Android e iOS, com mais de 14 milhões de visitas/mês.

“Redução de

custos é chave para

o momento sócio

econômico que estamos

atravessando no Brasil e

a AWS tem o suporte

tecnológico ideal para

nos ajudar a atingir esta

meta.”

- Eduardo Perez, CTO

Page 35: Amazon EC2: Economize utilizando Instancias Spot

Desafio

Otimização de Uso / Custo

Volatilidade Cambial

Automatização + DevOps

Escalabilidade + HA

Page 36: Amazon EC2: Economize utilizando Instancias Spot

Ambiente ZAP

Page 37: Amazon EC2: Economize utilizando Instancias Spot

Economia para instâncias Linux

63.50%

95.70% 95.50%

c3.8xlarge c3.xlarge m3.xlarge

Page 38: Amazon EC2: Economize utilizando Instancias Spot

Economia para instâncias Windows

78.50%

85.30%

c3.xlarge m3.large

Page 39: Amazon EC2: Economize utilizando Instancias Spot

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

Page 40: Amazon EC2: Economize utilizando Instancias Spot

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

Page 41: Amazon EC2: Economize utilizando Instancias Spot

Qual tipo de Spot devo usar?

• Na dúvida, use Spot Fleet

Page 42: Amazon EC2: Economize utilizando Instancias Spot

Obrigado!