Auto Scaling Group
Scaling Policies
Simple / step scaling: increase or decrease based on CloudWatch alarms.
Target tracking: select a metric and a target value, ASG will smartly adjust it.
keep average CPU at 40%
keep request count per target at 1000
To scale based on RAM, must use a custom CloudWatch metric.
Feature
Launch configuration once created cannot be changed
To upgrade an AMI, must re-associate the launch configuration / template.
must terminate instances manually.
CloudFormation can help with the step.
Enable CloudWatch detailed monitoring which is disabled in creation
Create a new Launch Config with detail monitoring enabled
Associate it to the Auto Scaling Group
Scheduled scaling actions:
Modify the ASG settings (min / max / desired) at pre-defined time
Helpful when patterns are known in advance
Lifecycle Hooks:
Perform actions before an instance is in service, or before it is terminated.
Ex. cleanup, log extraction, special health checks.
AZ Rebalance
Be mindful of unfinished tasks
Scaling Processes
Launch: Add a new EC2 to the group, increasing the capacity.
Terminate: Removes an EC2 instance from the group, decreasing its capacity.
HealthCheck: Checks the health of the instances.
ReplaceUnhealthty: Terminate unhealthy instances and re-create them.
AZRebalance: Balance the number of EC2 instances across AZs.
AlarmNotification: Accepts notification from CloudWatch.
ScheduledActions: Performs scheduled actions that you create.
AddToLoadBalancer: Adds instances to the load balancer or target group.
Health Checks
Types:
EC2 status checks (default)
The health of EC2 instance doesn't equal to the health of ELB. Change health check targets to terminate instances correctly.
ELB health checks (HTTP)
ASG will launch a new instance after terminating an unhealthy one.
With Grace Period: 300s to wait for the health of new instance
With Cooldown Period: 300s to wait for another scaling / termination
Comparison of Auto Scaling update stratigies
Use the same ASG with new EC2 Launch Template
No chance to test the service in new version.
requests are handled by different version of service.
Create another ASG, EC2 Launch Template but use the same ALB.
Can send small traffic from ALB to new Scaling Group to verify the service in new version.
Create another ALB, ASG, EC2 Launch Template, and use Route53 to change the routing.
Relying customers on good behavior about DNS queries and respecting TTL.
Can test service in new version with a different ALB before update the Route53.
Last updated