- Intro,
- Architecture,
- How They Work Together,
- Step-by-Step Setup (EC2 Launch Type),
- Final thoughts.
- Auto Scaling ECS Services using the EC2 Launch Type,.. twtech uses two layers of Auto Scaling:
- Layer 1: ECS Service Auto Scaling
- Layer 1: Scales the number of ECS tasks running in twtech service.
- Layer 2: EC2 Auto Scaling Group (ASG)
- Layer 2: Scales the number of EC2 instances (twtech container hosts) in the ECS cluster.
How They Work Together
|
Component |
Purpose |
|
ECS Service Auto Scaling. |
Adjusts number of tasks (based on
CPU, memory, etc.) |
|
EC2 Auto Scaling Group (ASG). |
Ensures there are enough EC2
instances to run those tasks |
NB:
- If twtech ECS service wants to scale up but no EC2 instances are available with enough resources, the new tasks won’t be placed.
- That’s why twtech must scale both the tasks and the EC2 hosts (instances).
Step-by-Step Setup (EC2
Launch Type)
Step
1: Create an ECS Cluster with EC2 Instances
Use an EC2 Launch Template or
Launch Configuration that:
- Installs the ECS agent
- Joins the ECS cluster
- Has a container-friendly AMI (e.g., Amazon Linux 2
ECS-optimized)
Set up an Auto Scaling Group
(ASG) for twtech EC2 instances.
# bash
aws
autoscaling create-auto-scaling-group \
--auto-scaling-group-name twtech-ecs-asg \
--launch-template LaunchTemplateName=twtech-template
\
--min-size 2 \
--max-size 10 \
--desired-capacity 2 \
--vpc-zone-identifier subnet-abc123xxx,subnet-def456xxx
Step 2: Attach ECS Capacity Provider to
Cluster
# bash
aws
ecs create-capacity-provider \
--name twtech-capacity-provider \
--auto-scaling-group-provider
autoScalingGroupArn=arn:aws:autoscaling:... \
--managed-scaling
status=ENABLED,targetCapacity=80,minimumScalingStepSize=1,maximumScalingStepSize=100
\
--managed-termination-protection ENABLED
Attach to the ECS Cluster:
# bash
aws
ecs put-cluster-capacity-providers \
--cluster twtech-ecs-cluster \
--capacity-providers twtech-capacity-provider \
--default-capacity-provider-strategy capacityProvider=twtech-capacity-provider,weight=1
Step 3: Set Up ECS Service Auto Scaling
Same as before, register a scalable
target:
# bash
aws
application-autoscaling register-scalable-target \
--service-namespace twtech-ecs-ns \
--resource-id service/twtech-ecs-cluster/twtech-service \
--scalable-dimension ecs:service:DesiredCount
\
--min-capacity 2 \
--max-capacity 10
NB:
- twtech should Define target-tracking policy (e.g., target CPU 60%).
Step 4: Configure EC2 Auto Scaling Policies
(Optional)
- twtech can configure its ASG to auto scale based on ECS Cluster Reservation or CloudWatch metrics like CPUReservation or MemoryReservation.
# Sample metric alarm:
# bash
aws
cloudwatch put-metric-alarm \
--alarm-name ecs-high-cpu \
--metric-name CPUReservation \
--namespace AWS/ECS \
--statistic Average \
--period 300 \
--threshold 75 \
--comparison-operator GreaterThanThreshold \
--dimensions
Name=ClusterName,Value=twtech-ecs-cluster \
--evaluation-periods 2 \
--alarm-actions
arn:aws:autoscaling:...:policy/twtech-scale-out
Final thoughts
|
Layer |
What
It Scales |
Tool |
|
ECS Service Auto Scaling. |
Tasks. |
application-autoscaling |
|
EC2 ASG Auto Scaling. |
EC2 Hosts (instances). |
autoscaling
+ cloudwatch |
No comments:
Post a Comment