auto scaling aws
DESCRIPTION
TRANSCRIPT
Auto-Scaling no AWSThiago Rondon, [email protected]
Encontro Técnico b-datum.com
Friday, November 29, 13
termostato“manter constante a temperatura de um determinado ambiente”
Friday, November 29, 13
capacidade
tempo
tradicional
necessidade
desperdício
problemas
desperdício
Friday, November 29, 13
Elastic Load Balacing
ELB
sticky sessions*default disable
múltiplas regiões
saúde do EC2ro
und-
robi
n
Friday, November 29, 13
CloudWatch
métricas próprias
alarmes
console ou API
Friday, November 29, 13
EC2 & AMI
Amazon Machine Image
Elastic Compute Cloud
Friday, November 29, 13
aws.amazon.com/developertools
Friday, November 29, 13
$ aws configureX
vim secrets.txt
AWSAccessKeyId=0000000AWSSecretKey=222222+33333333
export AWS_CREDENTIAL_FILE=secrets.txt
Friday, November 29, 13
Friday, November 29, 13
# as-‐as-‐cmd as-‐describe-‐auto-‐scaling-‐instances as-‐enable-‐metrics-‐collectionas-‐create-‐auto-‐scaling-‐group as-‐describe-‐auto-‐scaling-‐notification-‐types as-‐execute-‐policyas-‐create-‐launch-‐config as-‐describe-‐launch-‐configs as-‐put-‐notification-‐configurationas-‐create-‐or-‐update-‐tags as-‐describe-‐metric-‐collection-‐types as-‐put-‐scaling-‐policyas-‐delete-‐auto-‐scaling-‐group as-‐describe-‐notification-‐configurations as-‐put-‐scheduled-‐update-‐group-‐actionas-‐delete-‐launch-‐config as-‐describe-‐policies as-‐resume-‐processesas-‐delete-‐notification-‐configuration as-‐describe-‐process-‐types as-‐set-‐desired-‐capacityas-‐delete-‐policy as-‐describe-‐scaling-‐activities as-‐set-‐instance-‐healthas-‐delete-‐scheduled-‐action as-‐describe-‐scheduled-‐actions as-‐suspend-‐processesas-‐delete-‐tags as-‐describe-‐tags as-‐terminate-‐instance-‐in-‐auto-‐scaling-‐groupas-‐describe-‐adjustment-‐types as-‐describe-‐termination-‐policy-‐types as-‐update-‐auto-‐scaling-‐groupas-‐describe-‐auto-‐scaling-‐groups as-‐disable-‐metrics-‐collection as-‐version
Friday, November 29, 13
# as-‐create-‐launch-‐config -‐-‐image-‐id ami-‐43e0c12a \ -‐-‐instance-‐type t1.micro -‐-‐key "thiago-‐teste" \ -‐-‐group "default" -‐-‐launch-‐config bdatum-‐config
OK-‐Created launch config
Friday, November 29, 13
# as-‐describe-‐scaling-‐activitiesNo activities found
Friday, November 29, 13
# as-‐create-‐auto-‐scaling-‐group bdatum-‐scaling \ -‐-‐launch-‐configuration bdatum-‐config \ -‐-‐availability-‐zones us-‐east-‐1d -‐-‐min-‐size 2 \ -‐-‐max-‐size 10 -‐-‐load-‐balancers bdatum-‐elb \ -‐-‐health-‐check-‐type ELB -‐-‐grace-‐period 300
OK-‐Created AutoScalingGroup
Friday, November 29, 13
# as-‐put-‐scaling-‐policy \ -‐-‐auto-‐scaling-‐group bdatum-‐scaling \ -‐-‐name scale-‐up -‐-‐adjustment 1 \ -‐-‐type ChangeInCapacity -‐-‐cooldown 300
arn:aws:autoscaling:us-‐east-‐1:838846897022:scalingPolicy:c1016b4a-‐8e2d-‐43b5-‐aa0c-‐fdc701ffd362:autoScalingGroupName/bdatum-‐scaling:policyName/scale-‐up
Friday, November 29, 13
# as-‐put-‐scaling-‐policy \ -‐-‐auto-‐scaling-‐group bdatum-‐scaling \ -‐-‐name scale-‐dn "-‐-‐adjustment=-‐1" \ -‐-‐type ChangeInCapacity -‐-‐cooldown 300
arn:aws:autoscaling:us-‐east-‐1:838846897022:scalingPolicy:4b514a9a-‐e89c-‐4a65-‐a288-‐98ad7accbdec:autoScalingGroupName/bdatum-‐scaling:policyName/scale-‐dn
Friday, November 29, 13
# mon-‐put-‐metric-‐alarm -‐-‐alarm-‐name sample-‐scale-‐up \ -‐-‐alarm-‐description "Scale up at 80% load" \ -‐-‐metric-‐name CPUUtilization -‐-‐namespace AWS/EC2 \ -‐-‐statistic Average -‐-‐period 60 -‐-‐threshold 80 \ -‐-‐comparison-‐operator GreaterThanThreshold \ -‐-‐dimensions InstanceId=i-‐37b12752 -‐-‐evaluation-‐periods 3 \ -‐-‐unit Percent -‐-‐alarm-‐actions
OK-‐Created Alarm
Friday, November 29, 13
# mon-‐put-‐metric-‐alarm -‐-‐alarm-‐name sample-‐scale-‐dn \ -‐-‐alarm-‐description "Scale down at 20% load" \ -‐-‐metric-‐name CPUUtilization -‐-‐namespace AWS/EC2 \ -‐-‐statistic Average -‐-‐period 60 -‐-‐threshold 20 \ -‐-‐comparison-‐operator LessThanThreshold \ -‐-‐dimensions InstanceId=i-‐37b12752 -‐-‐evaluation-‐periods 3 \ -‐-‐unit Percent -‐-‐alarm-‐actions
OK-‐Created Alarm
Friday, November 29, 13
# as-‐describe-‐scaling-‐activities
ACTIVITY 1a823de6-‐e5a8-‐4a6c-‐b8a2-‐1abf4eb03f97 2013-‐11-‐25T18:08:28Z bdatum-‐scaling Failed Cannot find Load Balancer bdatum-‐elb. Validating load balancer configuration failed.
Friday, November 29, 13
Friday, November 29, 13
# as-‐describe-‐scaling-‐activities
ACTIVITY 949ac330-‐17d3-‐4ec5-‐b98b-‐810faf4b6067 bdatum-‐scaling PreInServiceACTIVITY ff225cbe-‐38e8-‐43f7-‐bb4a-‐d2a350472776 2013-‐11-‐25T18:17:02Z bdatum-‐scaling Successful
Friday, November 29, 13
Friday, November 29, 13
# shutdown
# siege -‐c25 -‐t10M host
Friday, November 29, 13
Friday, November 29, 13
Friday, November 29, 13
# as-‐describe-‐auto-‐scaling-‐groups bdatum-‐scaling
AUTO-‐SCALING-‐GROUP bdatum-‐scaling bdatum-‐config us-‐east-‐1d bdatum-‐elb 2 10 2 DefaultINSTANCE i-‐2cba484a us-‐east-‐1d InService Healthy bdatum-‐configINSTANCE i-‐2934164c us-‐east-‐1d InService Healthy bdatum-‐config
# as-‐delete-‐auto-‐scaling-‐group bdatum-‐scaling -‐-‐force-‐delete
Are you sure you want to delete this AutoScalingGroup? [Ny]y
OK-‐Deleted AutoScalingGroup
Friday, November 29, 13
# as-‐describe-‐launch-‐configsLAUNCH-‐CONFIG bdatum-‐config ami-‐43e0c12a t1.micro
# as-‐delete-‐launch-‐config bdatum-‐config
Are you sure you want to delete this launch configuration? [Ny]y
OK-‐Deleted launch configuration
Friday, November 29, 13
Disclaimer
AWS cobra por hora.
Friday, November 29, 13
Disclaimer
Faça corretamente a desinstalação !
as-delete-auto-scaling-group <group> --force-deleteas-delete-launch-config <group>
Friday, November 29, 13
Disclaimer
• Neste exemplo a regra define uma condição particular de no mínimo 2 minutos.• CloudWatch é um conjunto de coleções de dados que monitora as estatisticas como
por exemplo a utilização de CPU. É um conjunto de protocolos, e em geral leva cerca de 60 segundos para agregar todas as informações.
• Autoscaling também leva outros 60 segundos.• Então temos o tempo de boot do servidor. Um servidor grande e complexo pode levar
alguns minutos para iniciar.• Finalmente, o load balancer precisa monitorar esse servidor por algum tempo antes que
ele se sinta confortável e seguro para direcionar os requests para a nova instancia.
Friday, November 29, 13