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¤
- 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 |