Elastic Load Balancing & Auto Scaling Groups
1. Scalability vs High Availability — Phân biệt nhanh
Scalability (Khả năng mở rộng): Hệ thống có thể xử lý tải tăng lên bằng cách thích nghi với nhu cầu.
High Availability (Tính sẵn sàng cao): Hệ thống luôn hoạt động được, giảm thiểu downtime khi có sự cố.
Hai khái niệm này liên quan nhưng không phải một — bạn có thể scale mà không đảm bảo HA, và ngược lại.
2. Vertical vs Horizontal Scalability
| Vertical Scaling | Horizontal Scaling | |
|---|---|---|
| Cách làm | Nâng cấp instance (RAM, CPU) | Thêm nhiều instance |
| Còn gọi | Scale up / Scale down | Scale out / Scale in |
| Giới hạn | Bị giới hạn bởi phần cứng | Gần như không giới hạn |
| Dùng cho | Database, app đơn luồng | Web app, distributed system |
| Ví dụ AWS | t2.nano → u-12tb1.metal | Dùng ASG + ELB |
3. Ba khái niệm hay nhầm lẫn
- Scalability: Có khả năng mở rộng khi cần.
- Elasticity: Tự động co giãn theo thời gian thực dựa trên tải — tránh over/under provisioning. Đây là điểm mạnh của cloud.
- Agility: Tốc độ triển khai nhanh, linh hoạt phản ứng với thay đổi (không liên quan trực tiếp đến scaling).
Exam tip: Elasticity = tự động, real-time. Scalability = khả năng, không nhất thiết tự động.
4. Load Balancing là gì?
Phân phối traffic đến nhiều target (EC2, container, IP) để không resource nào bị quá tải.
Lợi ích chính:
- Fault tolerance: traffic tự động chuyển hướng khi có instance bị lỗi
- Health check: kiểm tra instance còn hoạt động không
- SSL termination: xử lý HTTPS tại load balancer, giảm tải cho backend
- High Availability khi deploy multi-AZ
Tại sao dùng ELB (Elastic Load Balancer)? ELB là managed service — AWS lo toàn bộ infrastructure, maintenance, HA. Bạn chỉ cần cấu hình.
5. Ba loại ELB — nhớ theo Layer
| Loại | Layer | Protocol | Dùng khi |
|---|---|---|---|
| ALB (Application LB) | Layer 7 | HTTP, HTTPS | Web app, routing theo path/host |
| NLB (Network LB) | Layer 4 | TCP, UDP | High performance, low latency |
| Classic LB | Layer 4 & 7 | Cả hai | Đang bị retire, không dùng mới |
Exam tip: Câu hỏi về HTTP/HTTPS → ALB. Cần hiệu năng cực cao → NLB.
6. Auto Scaling Group (ASG)
Đảm bảo luôn có đúng số lượng EC2 instance cần thiết.
ASG làm được gì:
- Scale out (thêm instance) khi tải tăng
- Scale in (bớt instance) khi tải giảm
- Giữ số instance trong khoảng min/max đã định
- Tự động register instance mới vào load balancer
- Tự thay thế instance unhealthy
- Tiết kiệm chi phí — chỉ chạy đúng mức cần thiết
7. Các Scaling Strategy của ASG
Manual Scaling: Tự điều chỉnh số instance thủ công — dùng khi bạn đã biết trước lịch sự kiện nhỏ.
Dynamic Scaling — có 2 loại:
- Simple/Step: CloudWatch alarm kích hoạt → thêm/bớt instance theo bước. Ví dụ: CPU > 70% → thêm 2 instance.
- Target Tracking: Giữ metric ở mức mục tiêu. Ví dụ: CPU trung bình ~40%. Đơn giản hơn Simple/Step.
Scheduled Scaling: Scale theo lịch cố định. Ví dụ: tăng capacity lên 10 vào 5h chiều thứ Sáu.
Predictive Scaling: Dùng ML để dự đoán traffic, scale trước khi tải đến — phù hợp với traffic có pattern rõ ràng.
8. Kết hợp ELB + ASG — Bức tranh hoàn chỉnh
Internet → ELB → ASG (nhiều EC2, nhiều AZ)- ELB phân phối traffic + health check
- ASG tự động thêm/bớt instance theo tải
- Multi-AZ → đảm bảo High Availability
- Kết hợp lại → vừa scalable, vừa elastic, vừa highly available
Tóm tắt một dòng để nhớ nhanh
| Khái niệm | Nhớ nhanh |
|---|---|
| Vertical Scaling | To hơn |
| Horizontal Scaling | Nhiều hơn |
| Elasticity | Tự động co giãn |
| ELB | Chia đều traffic |
| ASG | Đúng số instance |
| HA | Không downtime, multi-AZ |