What’s an Auto Scaling Group?

Scale for your users, make yourself available.

  • In real-life, the load on your websites and application can change.

  • In the cloud, you can create and get rid of servers very quickly.

  • The goal of an Auto Scaling Group (ASG) is to:

    • Scale out (add EC2 instances) to match an increased load.

    • Scale in (remove EC2 instances) to match a decreased load.

    • Ensure we have a minimum and a maximum number of EC2 instances running.

    • Automatically register new instances to a load balancer

    • Re-create an EC2 instance in case a previous one is terminated (ex: if unhealthy)

  • ASG are free (you only pay for the underlying EC2 instances)

Auto Scaling Group Attributes

  • A Launch Template (older “Launch Configurations” are deprecated)

    • AMI + Instance Type

    • EC2 User Data

    • EBS Volumes

    • Security Groups

    • SSH Key Pair

    • IAM Roles for your EC2 Instances

    • Network + Subnets Information

    • Load Balancer Information

  • Min Size / Max Size / Initial Capacity

  • Scaling Policies

CloudWatch Alarms & Scaling

  • It is possible to scale an ASG based on CloudWatch alarms.

  • An alarm monitors a metric (such as Average CPU, or a custom metric)

  • Metrics such as Average CPU are computed for the overall ASG instances.

  • Based on the alarm:

    • We can create scale-out policies (increase the number of instances)

    • We can create scale-in policies (decrease the number of instances)

Auto Scaling Groups – Dynamic Scaling Policies

  • Target Tracking Scaling

    • Most simple and easy to set-up

    • Example: I want the average ASG CPU to stay at around 40%

  • Simple / Step Scaling

    • When a CloudWatch alarm is triggered (example CPU > 70%), then add 2 units

    • When a CloudWatch alarm is triggered (example CPU < 30%), then remove 1

  • Scheduled Actions

    • Anticipate a scaling based on known usage patterns

    • Example: increase the min capacity to 10 at 5 pm on Fridays

  • Predictive scaling:

    • continuously forecast load and schedule scaling ahead

Predictive Scaling

Good metrics to scale on

  • CPUUtilization: Average CPU utilization across your instances

  • RequestCountPerTarget: to make sure the number of requests per EC2 instances is stable

  • Average Network In / Out (if you’re application is network bound)

  • Any custom metric (that you push using CloudWatch)

Auto Scaling Groups - Scaling Cooldowns

  • After a scaling activity happens, you are in the cooldown period (default 300 seconds)

  • During the cooldown period, the ASG will not launch or terminate additional instances (to allow for metrics to stabilize)

  • Advice: Use a ready-to-use AMI to reduce configuration time in order to be serving request fasters and reduce the cooldown period

Last updated