AWS Auto Scaling
EC2 Auto Scaling chi tiết, Target Tracking, Warm Pools, Mixed Instances
Tổng quan
AWS Auto Scaling là dịch vụ cho phép tự động điều chỉnh capacity (số lượng tài nguyên) dựa trên nhu cầu thực tế, giúp:
- ✅ High Availability: Đảm bảo luôn có đủ resources để handle traffic
- ✅ Cost Optimization: Chỉ trả tiền cho những gì bạn thực sự cần
- ✅ Fault Tolerance: Tự động thay thế instances bị lỗi
- ✅ Better Performance: Tránh tình trạng quá tải
Các loại Auto Scaling
1. EC2 Auto Scaling
Mở rộng/thu hẹp số lượng EC2 instances trong Auto Scaling Group.
2. Application Auto Scaling
Mở rộng các dịch vụ AWS khác:
- ECS services
- DynamoDB tables và Global Secondary Indexes
- Aurora Replicas
- Lambda provisioned concurrency
- Spot Fleet requests
- EMR clusters
- AppStream 2.0 fleets
- SageMaker endpoints
3. AWS Auto Scaling (Unified)
Console tập trung để quản lý scaling cho nhiều resources cùng lúc với Scaling Plans.
Kiến trúc EC2 Auto Scaling
Các thành phần chính
1. Launch Template (Khuyên dùng) / Launch Configuration (Legacy)
Launch Template định nghĩa cách tạo EC2 instances:
| Thuộc tính | Mô tả |
|---|---|
| AMI ID | Image để launch instance |
| Instance Type | t2.micro, m5.large, etc. |
| Key Pair | SSH key để truy cập |
| Security Groups | Firewall rules |
| IAM Role | Permissions cho instance |
| User Data | Scripts chạy khi boot |
| EBS Volumes | Storage configuration |
| Network Settings | VPC, Subnet preferences |
[!TIP] Launch Template là phiên bản mới hơn, hỗ trợ versioning và nhiều tính năng hơn Launch Configuration.
2. Auto Scaling Group (ASG)
ASG quản lý một nhóm EC2 instances:
Capacity Settings:
- Minimum Capacity: Số instance tối thiểu (không bao giờ scale xuống dưới)
- Desired Capacity: Số instance mong muốn hiện tại
- Maximum Capacity: Số instance tối đa (không bao giờ scale lên trên)
Scaling Policies (Chính sách mở rộng)
1. Target Tracking Scaling (Recommended)
Tự động điều chỉnh để duy trì metric ở mức target.
Predefined Metrics:
| Metric | Mô tả |
|---|---|
ASGAverageCPUUtilization | Trung bình CPU của ASG |
ASGAverageNetworkIn | Trung bình bytes nhận vào |
ASGAverageNetworkOut | Trung bình bytes gửi đi |
ALBRequestCountPerTarget | Số requests per target từ ALB |
[!NOTE] Target Tracking là cách đơn giản và hiệu quả nhất. AWS sẽ tự động tạo và quản lý CloudWatch alarms.
2. Step Scaling
Scale theo các "bước" dựa trên mức độ alarm.
Ưu điểm: Có thể định nghĩa các mức độ scale khác nhau tùy theo severity.
3. Simple Scaling
Scale một lượng cố định khi alarm triggered, sau đó có cooldown period.
[!CAUTION] Simple Scaling có hạn chế vì cooldown period có thể gây chậm trễ khi traffic thay đổi liên tục. Ưu tiên dùng Step Scaling hoặc Target Tracking.
4. Scheduled Scaling
Scale theo lịch định trước - phù hợp khi bạn biết trước pattern.
Cron Expression Format:
5. Predictive Scaling
Sử dụng Machine Learning để phân tích traffic patterns và scale trước khi cần.
Yêu cầu:
- Cần ít nhất 24 giờ historical data
- Hoạt động tốt nhất với patterns định kỳ (daily, weekly)
Kết hợp với Load Balancer
Kiến trúc tích hợp
ASG vs Target Group - So sánh chi tiết
| Đặc điểm | Auto Scaling Group | Target Group |
|---|---|---|
| Thuộc về | EC2 Auto Scaling | Elastic Load Balancer |
| Mục đích chính | Quản lý số lượng instances | Định tuyến traffic |
| Tạo/Xóa instances | ✅ Có | ❌ Không |
| Routing traffic | ❌ Không | ✅ Có |
| Health Check | EC2 hoặc ELB | HTTP/HTTPS/TCP |
| Khi unhealthy | Terminate & replace | Ngừng gửi traffic |
ASG hoạt động độc lập với Load Balancer
ASG và Load Balancer là 2 dịch vụ hoàn toàn độc lập, có thể dùng riêng lẻ hoặc kết hợp:
| Scenario | ASG | LB | Use Case |
|---|---|---|---|
| Chỉ dùng ASG | ✅ | ❌ | Batch jobs, SQS workers, scheduled tasks |
| Chỉ dùng LB | ❌ | ✅ | Static fleet với số lượng cố định |
| Dùng cả hai | ✅ | ✅ | Web apps (Best practice) |
Auto Registration vào Target Group
Khi ASG được attach với Target Group, việc register/deregister instances diễn ra hoàn toàn tự động:
| Action | ASG tự động làm |
|---|---|
| Launch instance mới | Register vào Target Group |
| Terminate instance | Deregister khỏi Target Group |
| Instance unhealthy | Terminate, launch mới, register vào TG |
[!NOTE] Điều này chỉ hoạt động khi bạn đã attach ASG với Target Group trong cấu hình ASG.
Health Checks
Các loại Health Check
[!IMPORTANT] Khi sử dụng với Load Balancer, nên bật ELB Health Check để ASG có thể thay thế instances mà application không responsive.
Thứ tự replace instance unhealthy (default behavior)
Với health check failure, hành vi mặc định của EC2 Auto Scaling là terminate and launch:
- Tạo scaling activity để terminate instance unhealthy
- Đồng thời tạo scaling activity khác để launch instance thay thế (trong lúc terminate diễn ra)
Muốn đổi sang hướng ưu tiên availability (launch trước rồi terminate), cần cấu hình instance maintenance policy.
Nguồn: View the reason for health check failures, Instance maintenance policy for Auto Scaling group
Health Check Grace Period
Instance Lifecycle
Lifecycle States
Lifecycle Hooks
Cho phép thực hiện custom actions khi instance đang scale:
Use Cases:
- Scale OUT Hook: Install software, pull config từ S3, register vào service discovery
- Scale IN Hook: Drain connections, backup logs, deregister từ external systems
Multi-AZ Deployment
AZ Rebalancing
ASG tự động phân phối instances đều giữa các Availability Zones:
[!NOTE] Khi một AZ gặp vấn đề, ASG sẽ tự động launch instances ở các AZ còn lại.
Thứ tự hành động khi AZ bị lệch (AZ rebalancing)
Khi distribution giữa các AZ bị lệch (ví dụ terminate thủ công nhiều instance ở một AZ), ASG sẽ rebalance theo thứ tự:
- Launch instance mới ở AZ đang thiếu
- Terminate instance cũ ở AZ dư
Thiết kế này giúp hạn chế ảnh hưởng đến hiệu năng và độ sẵn sàng. Trong quá trình rebalancing, ASG có thể tạm thời vượt max capacity (tối đa 10% hoặc ít nhất 1 instance).
Nguồn: Control which Auto Scaling instances terminate during scale in
Scaling với Spot & Mixed Instances
Mixed Instances Policy
Kết hợp On-Demand và Spot instances để tối ưu chi phí:
Cooldown Period
Thời gian chờ giữa các scaling activities:
[!TIP] Với Target Tracking, AWS tự động quản lý cooldown tối ưu. Không cần configure thủ công.
Termination Policies
Khi scale IN, ASG quyết định terminate instance nào dựa trên policy:
| Policy | Mô tả |
|---|---|
| Default | AZ có nhiều instances nhất → Outdated configs (①Launch Config ②Different LT ③Oldest version current LT) → Closest to billing hour → Random |
| OldestInstance | Terminate instance cũ nhất |
| NewestInstance | Terminate instance mới nhất |
| OldestLaunchConfiguration | Terminate instance dùng Launch Config cũ nhất |
| OldestLaunchTemplate | Terminate instance dùng Launch Template cũ nhất |
| ClosestToNextInstanceHour | Terminate instance gần billing hour nhất |
| AllocationStrategy | Dựa trên allocation strategy (Spot/On-Demand) |
Default Termination Policy Flow
Monitoring & Metrics
CloudWatch Metrics cho ASG
| Metric | Ý nghĩa |
|---|---|
GroupMinSize | Minimum size của ASG |
GroupMaxSize | Maximum size của ASG |
GroupDesiredCapacity | Desired capacity hiện tại |
GroupInServiceInstances | Số instances đang InService |
GroupPendingInstances | Số instances đang Pending |
GroupTerminatingInstances | Số instances đang Terminating |
GroupTotalInstances | Tổng số instances |
Enable Group Metrics
Instance Protection
Bảo vệ instances khỏi bị terminate khi scale IN:
Use Cases:
- Master/Primary instances
- Instances đang xử lý long-running jobs
- Instances cần manual intervention trước khi terminate
Instance Refresh
Update instances trong ASG với zero/minimal downtime:
Warm Pools (Preview)
Pre-initialized instances để giảm thời gian scale OUT.
Khái niệm
Warm Pool là một nhóm các instances đã được pre-initialized (đã boot, đã cài đặt software) nhưng chưa phục vụ traffic. Khi cần scale OUT, ASG sẽ lấy instance từ Warm Pool thay vì launch mới từ đầu.
Kiến trúc
Scale OUT Flow
Warm Pool States
| State | Mô tả | Cost |
|---|---|---|
| Stopped | Instance đã boot xong, sau đó bị stop | Chỉ trả tiền EBS |
| Running | Instance running nhưng chưa serve traffic | Trả tiền EC2 + EBS |
| Hibernated | Instance hibernated (RAM saved to EBS) | Chỉ trả tiền EBS |
Benefits
- Faster scale out: Giảm từ 3-5 phút xuống còn 30-60 giây
- Pre-configured: Instances đã boot, cài software, pull config
- Cost effective: Dùng Stopped state để tiết kiệm chi phí
- Reliability: Instances đã được verify hoạt động trước khi serve traffic
Exam Tips (Cloud Practitioner / SAA)
Key Points to Remember
-
Auto Scaling = Horizontal Scaling
- Thêm/bớt instances (không phải tăng size của instance)
-
Free Service
- Auto Scaling miễn phí, chỉ trả tiền cho EC2 instances được launch
-
Scaling Policy Priority
- Target Tracking > Step Scaling > Simple Scaling
- Target Tracking là recommended cho hầu hết use cases
-
Health Check Types
- EC2 (default) - chỉ check instance status
- ELB - check application response (recommended khi dùng với ALB)
-
Cooldown Period
- Ngăn scaling quá nhanh
- Default 300 seconds
- Target Tracking tự quản lý cooldown
-
Launch Template vs Launch Configuration
- Launch Template là recommended (versioning, mới hơn)
- Launch Configuration là legacy (không thể modify)
-
Multi-AZ
- ASG tự động distribute instances across AZs
- AZ Rebalancing đảm bảo even distribution
-
Predictive Scaling
- Sử dụng ML để dự đoán traffic
- Scale TRƯỚC khi cần
Common Exam Scenarios
| Scenario | Solution |
|---|---|
| Scale based on CPU | Target Tracking với ASGAverageCPUUtilization |
| Scale at specific times | Scheduled Scaling |
| Scale for predictable patterns | Predictive Scaling |
| Handle sudden traffic spikes | Step Scaling hoặc Target Tracking |
| Update instances với new AMI | Instance Refresh |
| Scale faster | Warm Pools |
| Reduce costs | Mixed Instances (On-Demand + Spot) |