aws meetup auto scaling deep dive

24
AWS MEETUP AUTO SCALING DEEP DIVE

Upload: phamnga

Post on 13-Feb-2017

240 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: AWS MEETUP AUTO SCALING DEEP DIVE

AWS MEETUP AUTO SCALING DEEP DIVE

Page 2: AWS MEETUP AUTO SCALING DEEP DIVE
Page 3: AWS MEETUP AUTO SCALING DEEP DIVE

What is a scalable service? ●  Increasingresourcesresultsinapropor0onalincreaseinperformance●  Faulttolerance●  Capableofhandlingheterogeneity●  Amor0zedopera0onalcostdiminishesasscaleincreases

Page 4: AWS MEETUP AUTO SCALING DEEP DIVE

Efficient Scaling Thinkca=le,notpets.--CERN

Page 5: AWS MEETUP AUTO SCALING DEEP DIVE

What is AWS Auto Scaling? •  Groups:EC2instancesareorganizedinto

groupssothattheycanbetreatedasalogicalunitforthepurposesofscalingandmanagement.Whenyoucreateagroup,youcanspecifyitsminimum,maximum,and,desirednumberofEC2instances

•  LaunchConfigura1ons:TemplateforagroupsEC2instances.AMI,Securitygroup,devicemappings,IAMpolicy,etc.

•  Scalingpolicies:Planthatdictatesthepoliciesusedtodrivescalingac0ons.

Page 6: AWS MEETUP AUTO SCALING DEEP DIVE

What can I do with AWS Auto Scaling?

●  Scale-inandoutbasedonmanualinterven0on

●  Scale-inandoutbasedonmetrics/alarms

●  Scale-inandoutbasedonschedules●  Auto-healfailingnodestomaintaincapacity

●  Reusetemplate-basedgroupconfigura0ons

Page 7: AWS MEETUP AUTO SCALING DEEP DIVE
Page 8: AWS MEETUP AUTO SCALING DEEP DIVE

Elastic & self-healing

Page 9: AWS MEETUP AUTO SCALING DEEP DIVE

What should I scale on? Auto-scalingyourWeb/RESTAPI0ers:●  NumberofHTTPrequests(outstandingorrate)●  NetworkI/O●  Response0me(averageorgeometricmean)●  Concurrentconnec0oncountAuto-scalingyourworker/batch0ers:●  Queuedepth●  AverageaggregateCPU●  Schedule-based●  CustomCloudWatchmetrics

Page 10: AWS MEETUP AUTO SCALING DEEP DIVE

What should I scale on? Scheduledscalingac0ons:•  Guaranteedorderofexecu0onforscheduledac0onswithinthesamegroup,but

notforscheduledac0onsacrossgroups•  Generallyexecuteswithinsecondsbutmaybedelayedforuptotwominutes

Cancreateamaximumof125scheduledac0onspermonthperAutoScalinggroup.(4xperdayfora31-daymonth,perAutoScalinggroup)

•  Musthaveaunique0mevalue•  Cooldownperiodsarenotsupported•  Canbeone-0me-onlyorrecurring

aws autoscaling put-scheduled-update-group-action --scheduled-action-name ScaleOut --auto-scaling-group-name foo --start-time "2016-05-12T09:00:00Z" --desired-capacity 3 aws autoscaling put-scheduled-update-group-action --scheduled-action-name ScaleIn --auto-scaling-group-name foo --start-time "2013-05-13T17:00:00Z" --desired-capacity 1 aws autoscaling put-scheduled-update-group-action --scheduled-action-name nighttime --auto-scaling-group-name foo --recurrence "0 17 * * *" --desired-capacity 1

Page 11: AWS MEETUP AUTO SCALING DEEP DIVE

Multi-input Scaling Policies ●  Scaleout:

●  +2instancesif>50visibleSQSmessagesfor>5min●  +50%if>1000visibleSQSmessagesfor>2min●  +fixed100instancesif>10000visibleSQSmessagesfor>1min

●  Scalein:●  -10instancesif0visibleSQSmessagesfor>15min●  -25%if0visibleSQSmessagesfor>30min

Page 12: AWS MEETUP AUTO SCALING DEEP DIVE

Termination: Custom Policies •  OldestInstance-theoldestinstanceinthegroup

•  NewestInstance-thenewestinstanceinthegroup

•  OldestLaunchConfigura0on-instancesthathavetheoldestlaunchconfig

•  ClosestToNextInstanceHour-instancesthatareclosesttothenextbillinghour

Page 13: AWS MEETUP AUTO SCALING DEEP DIVE

Termination: Default Policy

Page 14: AWS MEETUP AUTO SCALING DEEP DIVE

Termination: Instance protection •  Protectapar0cularinstance(ormul0ple)frombeingterminatedviascaling-in.•  Canbeenabledonawholegrouporindividualinstance.•  StartsoncetheinstancestateisInService•  DetachinganinstancefromtheASGclearsthisseang•  IfallinstancesinanASGareprotectedfromtermina0onandscale-inhappens,

thedesiredinstancecountisdecremented.•  Doesnotprotectfromtermina0onviatheEC2TerminateInstancesAPI

Page 15: AWS MEETUP AUTO SCALING DEEP DIVE

Auto Scaling Cooldown •  Preventsthelaunchingortermina0onofaddi0onalinstancesbeforethe

previousscalingac0vitytakeseffect•  Doesn’tapplytomanualscalingbydefault•  Doesn’taffectthereplacementofunhealthyinstances•  Defaultvalueof5minutes•  Cancreatescaling-policyspecificcooldowns•  AppliesaderaninstancemovesoutofWaitState•  Periodbeginsforspotwhenanybidissuccessful

Page 16: AWS MEETUP AUTO SCALING DEEP DIVE

Auto Scaling Health Checks AutoScalingperiodicallyperformshealthchecksontheinstancesinyourAutoScalinggroupandiden0fiesanyinstancesthatareunhealthy.Healthstatusisdeterminedby:•  EC2statuschecks(instanceStatus != running || systemStatus == impaired) •  ELBhealthchecks•  Customhealthchecks (aws autoscaling set-instance-health …)

SetyourHealthCheckGracePeriodappropriatelybasedonexpectedlaunch0me!

Page 17: AWS MEETUP AUTO SCALING DEEP DIVE

Advanced use: SNS AutoScalingsupportsthesendingofAmazonSNSno0fica0onswhenthefollowingeventsoccur:•  Successfulinstancelaunch•  Failedinstancelaunch•  Successfulinstancetermina0on•  FailedinstanceSNSsupportsdeliverytoLambda,SQS,HTTP,Email,andSMS.

Page 18: AWS MEETUP AUTO SCALING DEEP DIVE

Advanced use : Lifecycle Hooks Lifecyclehookssupportcustomac0onswhentheASGlaunchesandterminatesinstances.InstancescanstayinWaitstateforupto48hours.Cooldown&HealthCheckGracePeriodapplyuponenteringInService.Ac0onscanprovideeither:ABANDONorCONTINUE

Page 19: AWS MEETUP AUTO SCALING DEEP DIVE

Auto Scaling Debugging StandbyStateoffersameanstoremoveinstancesfromthegroup(andELB)formaintenance/debugging.aws autoscaling enter-standby --instance-ids i-5b73d709 --auto-scaling-group-name my-asg --should-decrement-desired-capacity

Page 20: AWS MEETUP AUTO SCALING DEEP DIVE

Everything Fails

"Everythingfails,allthe0me"WernerVogels,CTOAmazon.com

Designforfailure!

Page 21: AWS MEETUP AUTO SCALING DEEP DIVE

Simian Army •  ChaosMonkey•  ChaosGorilla•  ChaosKong•  ConformityMonkey•  JanitorMonkey

Page 22: AWS MEETUP AUTO SCALING DEEP DIVE

Continuous delivery AutomateeverythingpossibleInfrastructureascodeImmutablesystemsRollingdeployments,Red-black

Page 23: AWS MEETUP AUTO SCALING DEEP DIVE

Continuous delivery

Page 24: AWS MEETUP AUTO SCALING DEEP DIVE

Twi=er: @gnethercu= @IN_Intelligence

OpenSource: github.com/mypurecloud