Trong quá trình vận hành một hệ thống trên AWS, nhu cầu về khả năng mở rộng linh hoạt và tiết kiệm chi phí là điều rất quan trọng. Nếu như bạn phải tự tay thêm hoặc xoá máy chủ (EC2) mỗi khi lưu lượng thay đổi thì không chỉ tốn công sức mà còn dễ dẫn đến lỗi. Đây là lúc Auto Scaling Group (ASG) phát huy tác dụng. Bài viết này sẽ giúp bạn hiểu từ A-Z về Auto Scaling Group: từ khái niệm, cách hoạt động, các loại chính sách mở rộng cho tới cách triển khai thực tế, có ví dụ cụ thể để bạn làm theo.
Xem thêm:
Tìm hiểu Amazon EFS (Elastic File System) – Bài 9
1. Auto Scaling Group (ASG) là gì?
Auto Scaling Group là một dịch vụ cho phép bạn tự động thêm hoặc xoá EC2 instances tuỳ theo nhu cầu sử dụng thực tế. Khi lưu lượng cao, hệ thống sẽ tự động tạo thêm máy chủ. Khi lưu lượng thấp, nó sẽ giảm bớt để tiết kiệm chi phí.
Việc sử dụng ASG giúp đảm bảo khả năng sẵn sàng cao (High Availability) trong khi vẫn tối ưu chi phí bằng cách chỉ chạy các tài nguyên cần thiết.
Lợi ích:
- Đảm bảo hệ thống luôn sẵn sàng phục vụ người dùng.
- Tiết kiệm chi phí: chỉ dùng bao nhiêu, trả bấy nhiêu.
- Tự động khôi phục: Nếu 1 instance bị lỗi, ASG sẽ tự tạo mới để thay thế.

2. Cách ASG hoạt động
ASG giúp tự động điều chỉnh số lượng EC2 instances. Hệ thống sẽ tăng số lượng instances khi lưu lượng truy cập cao và giảm khi nhu cầu giảm thông qua các thiết lập. Bạn cần khai báo 3 thông số chính khi tạo ASG:
- Min Capacity: Số lượng tối thiểu luôn chạy.
- Desired Capacity: Số lượng mong muốn (hệ thống sẽ cố gắng giữ ở mức này).
- Max Capacity: Số lượng tối đa được phép chạy.

ASG hoạt động dựa trên các scaling policies (chính sách mở rộng), giúp điều chỉnh số lượng EC2 instance theo thời gian thực hoặc theo lịch cố định.
3. Các loại Scaling Policies ASG
3.1. Dynamic Scaling
Tăng hoặc giảm instance dựa vào các chỉ số từ CloudWatch, như CPU, network, request count…
Target Tracking Scaling
Phương pháp đơn giản nhất để thiết lập mở rộng động:
- Chọn một chỉ số giám sát (ví dụ: CPU Utilization).
- Định nghĩa một giá trị mục tiêu (ví dụ: CPU luôn ở mức 40%).
- ASG tự động thêm hoặc giảm instances để duy trì chỉ số này.
Ví dụ: Nếu CPU trung bình vượt 40%, ASG sẽ thêm instances; nếu giảm dưới 40%, ASG sẽ giảm instances.
Step Scaling
Phương pháp này dựa trên các CloudWatch Alarms:
- Nếu CPU > 70% → thêm 2 instances.
- Nếu CPU > 90% → thêm 3 instances.
- Nếu CPU < 30% → giảm 1 instance.
Ưu điểm: Kiểm soát chi tiết hơn so với Target Tracking Scaling.
Simple Scaling
Giống như Step Scaling nhưng chỉ thực hiện một hành động tại một thời điểm. Ví dụ: CPU > 70% thì thêm 1 instance.
3.2. Scheduled Scaling
Khi biết trước thời điểm cần mở rộng hoặc thu hẹp, bạn có thể lên lịch:
- Mở rộng: Tăng số lượng instances lên 10 vào 17h thứ Sáu.
- Thu hẹp: Sau nửa đêm, giảm số lượng instances xuống mức tối thiểu.
3.3. Predictive Scaling
Dựa trên machine learning của AWS để dự báo nhu cầu tài nguyên:
- Phân tích lịch sử sử dụng tài nguyên.
- Dự đoán lưu lượng truy cập tương lai.
- Lên lịch mở rộng hoặc thu hẹp từ trước.
Ưu điểm: Phù hợp cho hệ thống có mẫu hành vi lặp lại như trang TMĐT giờ cao điểm.
4. Lựa Chọn Chỉ Số Mở Rộng (Scaling Metrics)
Một số metric phổ biến:
- CPU Utilization: Phù hợp với app tính toán nhiều.
- Request Count Per Target: Dùng cho web server.
- Network In/Out: Dùng cho ứng dụng tải file, streaming.
- Custom Metrics: Bạn có thể tự tạo chỉ số riêng (ví dụ: response time > 200ms).
5. Scaling Cooldown
Sau mỗi lần scale, hệ thống sẽ đợi một khoảng thời gian trước khi thực hiện hành động tiếp theo (mặc định: 300 giây). Điều này giúp hệ thống ổn định và tránh bị scale liên tục.
- Mặc định: 5 phút (300 giây).
- Sau khi thêm/giảm instances, ASG đợi 5 phút trước khi hành động tiếp theo.
- Giúp chỉ số ổn định và tránh phản ứng quá mức.
Cách tối ưu:
- Sử dụng AMI sẵn sàng để EC2 khởi động nhanh.
- Bật giám sát chi tiết để CloudWatch cập nhật mỗi phút thay vì 5 phút.
6. Auto Scaling Group – HandOn
Mục tiêu:
- Tạo một Auto Scaling Group (ASG) sử dụng Launch Template.
- Kết nối ASG với một Application Load Balancer (ALB).
- Kiểm tra khả năng tự động tạo và huỷ EC2 instance.
Task 1: Tạo Auto Scaling Group
- Vào EC2 > Auto Scaling Groups > chọn Create Auto Scaling group.
- Điền:
- Auto Scaling group name: Demo-ASG
- Chọn Create a launch template
- Nhấn Next.


Task 2: Tạo Launch Template
- Điền thông tin:
- Name: my-demo-template
- Description: Template for ASG demo
- AMI: Amazon Linux 2 (x86) – Free tier eligible
- Instance Type: t2.micro
- Key pair: Chọn một key pair sẵn có (ví dụ: EC2-tutorial)
- Network settings: Chọn Security Group đã cho phép HTTP (ví dụ: launch-wizard-1)
- Storage: Mặc định 8GB gp2
- Advanced details: Dán đoạn User data để cài Apache và hiển thị “Hello World”.
- Nhấn Create launch template.
#!/bin/bash # Use this for your user data (script from top to bottom) # install httpd (Linux 2 version) yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<h1>Hello EC2 Instance 1</h1>"> /var/www/html/index.html




Task 3: Cấu hình Launch Template
Trong phần Launch Tamplate > chọn my-demo-template

Task 4: Cấu hình VPC và mạng
- VPC: Chọn VPC có sẵn.
- Availability Zones: Chọn ít nhất 2 AZs để tăng tính sẵn sàng.
- AZ Rebalancing: Giữ mặc định (Balanced – best effort).

Task 5: Cấu hình Auto Scaling Group






Task 6: Thử scale-out, scale-in
Làm tăng CPU lên quá 50%
sudo yum install stress -y sudo stress --cpu 4 --timeout 3000s


Cảm ơn bạn đã tham khảo AWS Certified Solutions Architect Associate trên ttnguyen.net.
Bài viết cùng chủ đề:
Hướng dẫn tạo EC2 Instance chạy Amazon Linux trên AWS – Bài 5
EC2 Placement Groups trong AWS – Bài 6
AWS IPv4 Public – Cách tính phí mới nhất – Bài 7
EBS Volumes – EBS Snapshot – Lưu trữ cho EC2 Instances – Bài 8
