Auto Scaling Group (ASG)
Trong môi trường Cloud, lưu lượng truy cập có thể thay đổi rất nhanh - có thể tăng đột biến vào giờ cao điểm và giảm mạnh vào ban đêm. Để hệ thống có thể linh hoạt mở rộng hoặc thu hẹp tài nguyên theo nhu cầu thực tế, AWS cung cấp dịch vụ Auto Scaling Group (ASG).
Auto Scaling là gì?
Auto Scaling là cơ chế tự động:
- Thêm (scale out) instance khi tải tăng cao
- Giảm (scale in) instance khi tải giảm xuống
Điều này giúp hệ thống:
- Luôn đáp ứng tốt hiệu suất
- Tiết kiệm chi phí khi không cần chạy máy chủ dư thừa
AWS Auto Scaling Group là gì?
Auto Scaling Group (ASG) là một tập hợp các EC2 instance được quản lý tự động theo một số quy tắc được định nghĩa.
Thành phần chính của ASG:
| Thành phần | Mô tả |
|---|---|
| Launch Template | Cấu hình mẫu để tạo EC2 (AMIs, instance type, security group…) |
| Min/Max/Desired Capacity | Số lượng instance tối thiểu, tối đa và mong muốn |
| Scaling Policies | Quy tắc để scale in/out tự động dựa trên metric |
| Health Check | Xác định instance có đang hoạt động tốt hay không |
| Target Group | Kết nối với Load Balancer để nhận traffic |
Cách Auto Scaling hoạt động
Auto Scaling theo dõi CloudWatch Metrics như:
- CPU Utilization: Tỷ lệ sử dụng CPU
- Network Traffic: Lưu lượng mạng vào/ra
- Request Count: Số lượng request đến Load Balancer Nếu các metric vượt ngưỡng đã định, ASG sẽ tự động scale out (thêm instance). Ngược lại, nếu metric giảm xuống dưới ngưỡng, ASG sẽ scale in (giảm instance).
Scaling Policy - Khi nào thì scale in/out?
Có 3 loại policy phổ biến:
Dynamic Scaling Policies
- Target Tracking Scaling:
- Dựa trên một metric cụ thể (ví dụ: CPU Utilization).
- Tự động điều chỉnh số lượng instance để duy trì metric ở mức mục tiêu.
- Simple / Step Scaling:
- Scale in/out theo từng bước dựa trên ngưỡng metric.
- Ví dụ: Nếu CPU > 80%, thêm 1 instance; nếu CPU > 90%, thêm 2 instance, nếu CPU < 50%, giảm 1 instance.
- -> Linh hoạt hơn Target Tracking.
- Scheduled Scaling:
- Scale in/out theo lịch trình đã định.
- Ví dụ: Tăng số lượng instance vào giờ cao điểm, giảm vào ban đêm.
Predictive Scaling Policies
- Dựa trên dự đoán lưu lượng truy cập trong tương lai.
- Sử dụng machine learning để dự đoán và tự động scale in/out trước khi lưu lượng thực tế thay đổi.
- Giúp hệ thống luôn sẵn sàng đáp ứng nhu cầu mà không bị trễ.
Health Check - Kiểm tra tình trạng instance
ASG sẽ tự động kiểm tra tình trạng của các instance trong nhóm. Nếu một instance không hoạt động tốt (ví dụ: không phản hồi hoặc gặp lỗi), ASG sẽ:
- Loại bỏ instance không khỏe mạnh khỏi nhóm.
- Tự động khởi tạo một instance mới để thay thế.
Auto Scaling Group và Load Balancer
Khi sử dụng ASG, bạn thường kết hợp với Elastic Load Balancer (ELB) để phân phối lưu lượng đến các instance trong ASG.
Lợi ích khi kết hợp ASG với ELB:
- Tự động cân bằng tải: ELB sẽ tự động phân phối lưu lượng
- Tự động cập nhật: Khi ASG scale out/in, ELB sẽ tự động thêm hoặc loại bỏ instance khỏi target group.
- Tăng tính sẵn sàng: Nếu một instance gặp sự cố, ELB sẽ chuyển lưu lượng sang các instance khác trong ASG.
Scaling Cooldowns là gì?
Scaling Cooldowns là khoảng thời gian chờ sau khi thực hiện một hành động scale in/out. Trong thời gian này, ASG sẽ không thực hiện thêm bất kỳ hành động scale nào nữa, để tránh việc scale quá nhanh hoặc quá chậm.
Ví dụ:
- Bạn có một ASG với 2 instance.
- Khi CPU > 80%, ASG sẽ scale out thêm 1 instance (tổng cộng 3).
- Sau khi thêm instance, ASG sẽ vào trạng thái cooldown (ví dụ 300 giây).
- Trong 300 giây này, dù CPU vẫn > 80%, ASG sẽ không thêm instance nữa.
- Sau khi cooldown kết thúc, nếu CPU vẫn > 80%, ASG mới thực hiện thêm instance tiếp theo.
Tại sao cần Cooldowns?
- Tránh quá tải: Nếu scale quá nhanh, có thể dẫn đến quá tải hệ thống.
- Đảm bảo ổn định: Cho phép hệ thống ổn định sau khi scale.
- Tối ưu chi phí: Giúp tránh việc scale in/out quá nhiều lần trong thời gian ngắn, tiết kiệm chi phí.