Getting Started with AWS EC2 Autoscaling

Published:19 October 2022 - 7 min. read

Nicholas Xuan Nguyen Image

Nicholas Xuan Nguyen

Read more tutorials by Nicholas Xuan Nguyen!

Azure Cloud Labs: these FREE, on‑demand Azure Cloud Labs will get you into a real‑world environment and account, walking you through step‑by‑step how to best protect, secure, and recover Azure data.

Running a website or application doesn’t have to be costly. In fact, there are ways to save money on resources while still providing users with a great experience. One example is through AWS EC2 Autoscaling.

EC2 Auto Scaling is a service that can help automatically scale your Amazon EC2 capacity up or down according to the conditions you define. And in this tutorial, you’ll learn how to set up and apply a basic EC2 Auto Scaling configuration on AWS to your applications.

Read on and ensure your application always has resources without paying more than you need!

Prerequisites

This tutorial comprises hands-on demonstrations. To follow along, you’ll need an AWS account, and a free tier account would suffice.

Creating a Launch Template

Before jumping into AWS EC2 Auto Scaling, you first need a way to launch an EC2 instance, a launch template (similar to launch configuration). A launch template contains all the information required to launch an EC2 instance, such as the instance type, subnet, and security groups.

AWS recommends using a launch template, providing more flexibility and advanced features than a launch configuration. EC2 Auto Scaling uses a launch template to launch new instances when scaling up.

To create a launch template:

1. Open your favorite web browser, and sign in to the AWS Management Console.

2. Search for EC2 launch templates in the search bar and select Launch templates from the results under Features. Doing so opens the EC2 launch templates page.

Opening the launch templates page
Opening the launch templates page

3. Next, select a region from the dropdown list (top-right), and click Create launch template to initiate creating a launch template.

You can use auto-scaling in any region that supports EC2 Auto Scaling, but this tutorial uses US East (N. Virginia).

Initiating creating a launch template
Initiating creating a launch template

4. Now, configure the new launch template’s name and description with the following:

  • Launch template name – required – Provide a name for your launch template (ec2-autoscaling-template-demo). The name must be unique within the region, not longer than 128 characters, and doesn’t contain special characters other than hyphens (-), underscores (_), and periods (.).
  • Template version description – Input a description for your launch template (ec2 autoscaling template demo), and not longer than 255 characters.
  • Auto Scaling guidance – Tick the Provide guidance to help me set up a template that I can use with EC2 Auto Scaling option to enable auto-scaling guidance. This option makes creating a launch template compatible with EC2 Auto Scaling easier.
Configuring a launch template
Configuring a launch template

5. Scroll down to the Launch templates contents section, and choose application and OS images for your launch template with the following:

  • Application and OS Images (Amazon Machine Image) – Select a boot image for your template, but this tutorial uses an Amazon Linux 2 AMI. Your EC2 instances will be launched based on the selected boot image.

You can select any boot image you prefer, but an Amazon Linux 2 AMI is recommended since it’s free tier eligible.

  • Architecture – Select an architecture for your template, but this tutorial uses x86-64 (64-bit).
Providing launch template contents

6. Next, set the Instance type and the Key par (login) for your launch template as follows:

  • Instance type – Select the instance type for your template. But this tutorial’s choice is t2.micro since it’s free tier eligible.

Consider other factors when selecting an instance type, such as CPU and memory requirements, since some instance types cost more than others.

  • Key pair (login) – Select Don’t include in launch template since this is not needed for auto-scaling.

When a key pair is specified, EC2 Auto Scaling launches your instances with the key pair.

Selecting an Instance type, and Key par (login)
Selecting an Instance type, and Key par (login)

7. Under Network settings, choose the Select existing security group option and specify a Security groups setting for your EC2 instances. Doing so makes EC2 Auto Scaling launch your instances with this security group.

Note that you can choose the Create security group option if you wish to create a new security group for your EC2 instances.

Selecting an existing security groups
Selecting an existing security groups

8. Keep other default settings, and click Create launch template (lower-right) under the Summary toggle list to create your launch template.

Creating the new launch template
Creating the new launch template

9. Finally, click Create Auto Scaling group under the Create an Auto Scaling group from your template section to continue.

Don’t close the launch template page since you’ll create your Auto Scaling group in the following section, one at a time.

Initiating creating an Auto Scaling group
Initiating creating an Auto Scaling group

Creating an AWS EC2 Auto Scaling Group

Now that you have an EC2 launch template, you’ll need to create an AWS EC2 Auto Scaling group to contain your EC2 instance. AWS EC2 Auto Scaling has features that let you use health check replacements and scaling policies.

You can create an Auto Scaling group with multiple instances if you like. But in this tutorial, you’ll create a single instance Auto Scaling group to demonstrate how Auto Scaling works.

1. Configure the Auto Scaling group with the following while still on the Create launch template page:

  • Auto Scaling group name – Input a name for your Auto Scaling group (ec2-autoscaling-group-demo). The name must be unique within your AWS Region with no more than 255 characters in length.
  • Launch template – Select your EC2 launch template from the dropdown list (ec2-autoscaling-template-demo).
  • Click Next to continue.
Naming the AWS EC2 Auto Scaling group
Naming the AWS EC2 Auto Scaling group

2. Next, leave all default settings as is, but select an existing VPC and subnet for your Auto Scaling group, and click Next to continue.

Specifying these settings makes your Auto Scaling group know where to launch your EC2 instances.

Selecting an existing VPC and subnet for your Auto Scaling group
Selecting an existing VPC and subnet for your Auto Scaling group

3. Keep the default settings, and click Next to continue.

Leaving other default settings
Leaving other default settings

4. Now, configure the Group size of your Auto Scaling group with the following:

CapacityLimitDetails
Desired1Set the number of instances you want in your Auto Scaling group. The desired capacity must be greater than or equal to the minimum capacity and less than or equal to the maximum capacity.
Minimum1Set the minimum number of instances in your Auto Scaling group. The value must be greater than or equal to 1 and less than or equal to the maximum capacity.
Maximum1Set the maximum number of instances you want in your Auto Scaling group.
Specifying the Auto Scaling group’s capacity
Specifying the Auto Scaling group’s capacity

5. Scroll down, keep the default settings, and click Skip to review to continue.

  • Scaling policies – Keep the None option selected since you’ll use a simple scaling policy. This policy increases the desired capacity of your Auto Scaling group by one EC2 instance when the older instance in the group has been terminated.
  • Instance scale-in protection – Keep this option disabled since you don’t need it in this tutorial. Enabling this option lets you control whether your Auto Scaling group can terminate your instance when scaling in.
Keeping details settings for scaling policies and instance scale-in protection
Keeping details settings for scaling policies and instance scale-in protection

6. Lastly, review your Auto Scaling group settings, and click Create auto scaling group (bottom-right) to create your Auto Scaling group.

Creating the Auto Scaling group
Creating the Auto Scaling group

Once created, you’ll see your Auto Scaling group listed, as shown below.

Verifying the newly-created Auto Scaling group
Verifying the newly-created Auto Scaling group

Testing an AWS EC2 Auto Scaling Group

Great! You’ve managed to create an AWS EC2 Auto Scaling group to contain your EC2 instance. But how do you know your Auto Scaling group works?

You’ll verify that your AWS EC2 Auto Scaling group has launched one EC2 instance. This instance is the one you specified (Desired capacity) in step four of the “Creating an AWS EC2 Auto Scaling Group” section.

1. Tick the checkbox next to your newly-created Auto Scaling group and click the Activity tab to see all activities in your Auto Scaling group.

Under the Activity history section at the bottom, you will see the Description of the most recent event in your Auto Scaling group. In this case, the description says Launching a new EC2 instance, with the Successful status and instance ID (i-09b699064f6e06070).

Copy the instance ID, as you’ll need it to verify your instance in the following step.

Viewing your activity history.
Viewing your activity history.

2. Navigate to the EC2 dashboard, and compare the instance ID you copied in step one with any running instances.

Seeing both instance IDs match indicates your Auto Scaling group has successfully launched an EC2 instance.

Comparing the instance ID
Comparing the instance ID

3. Back in the Auto Scaling group page, click on the Instance management tab, and you’ll see all information about your EC2 instances in one place. The most critical piece of information on this tab are:

  • The Lifecycle column – You can see that the EC2 instance in your Auto Scaling group is in the InService state, which signifies the instance is available to handle requests.
  • The Health status column – You can see that the health check status of your EC2 instance is Healthy, which indicates the instance is passing all health checks.

Terminating an EC2 Instance

Now that you’ve verified that your Auto Scaling group is working, you can test the Auto Scaling group further by terminating the EC2 instance within. Remember, terminating an instance in the group causes the Auto Scaling group to launch a new EC2 instance as a replacement automatically.

In real-life cases, you’d use an Auto Scaling group to scale up in response to changing conditions automatically. When? For example, one of your NGINX web servers is overloaded with requests and is in danger of going down.

But for now, you’ll test your Auto Scaling group by terminating the EC2 instance manually to simulate what would happen if an instance fails.

1. Navigate to your instances, and tick the checkbox next to the instance to select it.

Once selected, click on the Instance state dropdown menu → Terminate instance to terminate the selected instance.

Terminating an EC2 instance
Terminating an EC2 instance

2. Next, click Terminate when prompted to confirm terminating the instance.

Confirming instance termination.
Confirming instance termination.

Below, you can see a message that indicates the EC2 instance has been successfully terminated.

The default cooldown period for an Auto Scaling group is 300 seconds (5 minutes), which means that it will take the Auto Scaling group at least five minutes to launch a new instance after you terminate the old one.

Verifying successful instance termination
Verifying successful instance termination

3. Finally, check the Activity history in the Auto Scaling group while waiting for the new instance to launch.

As shown below, you’ll see that a new EC2 instance has been launched automatically. This output confirms your Auto Scaling group is working as expected.

Checking a new EC2 instance is launched automatically
Checking a new EC2 instance is launched automatically

Conclusion

Handling the load for your application is an essential part of keeping it running smoothly. Luckily, with AWS EC2 Auto Scaling, you can ensure your application always has the needed resources to handle changing traffic patterns.

And in this tutorial, you’ve learned how to create an Auto Scaling group, launch instances into the group, and scale the group in response to changing conditions. At this point, you can now confidently create AWS EC2 Auto Scaling groups for your applications.

With this newfound knowledge, why not create auto scaling groups with AWS CloudFormation for even more convenience? You will thank yourself later when your load increases, and you don’t have to worry about manually provisioning more resources!

Hate ads? Want to support the writer? Get many of our tutorials packaged as an ATA Guidebook.

Explore ATA Guidebooks

Looks like you're offline!