1. Giới thiệu
Trong các hệ thống hiện đại, High Availability (HA) là yêu cầu bắt buộc để đảm bảo các server chịu tải và mở rộng tốt.
-
AWS cung cấp:
-
Auto Scaling để tự động điều chỉnh tài nguyên hệ thống.
-
Elastic Load Balancer (ELB) để phân phối lưu lượng vào hệ thống.
-
2. Hệ thống High Availability trên AWS: Tổng quan
HA đảm bảo ứng dụng duy trì hoạt động liên tục bằng cách:
-
Phân phối tài nguyên trên nhiều Availability Zones (AZs).
-
Tự động phục hồi khi có sự cố.
Các thành phần chính:
-
Auto Scaling: Điều chỉnh số lượng EC2 instances dựa theo dung lượng tải.
-
Elastic Load Balancer (ELB): Cân bằng tải và chuyển request tới các instance phù hợp.
-
Amazon Machine Image (AMI): Triển khai instance nhanh và đồng nhất.
3. Các loại Load Balancer trên AWS: Cơ chế và ứng dụng
AWS cung cấp 3 loại ELB, mỗi loại phù hợp với các tình huống khác nhau:
3.1 Application Load Balancer (ALB)
Cơ chế hoạt động:
-
Layer 7 (Application Layer): HTTP/HTTPS/WebSocket
-
Content-based routing (dựa vào path, hostname, header)
-
Tích hợp: SSL termination, sticky sessions, AWS WAF
-
Health check dựa trên HTTP status code
Ưu điểm:
-
Phù hợp cho web service, microservices, API
-
Routing linh hoạt
-
Bảo mật cao với WAF
Ứng dụng: Triển khai các ứng dụng web như Node.js, Django
Hạn chế: Chi phí cao hơn NLB
3.2 Network Load Balancer (NLB)
Cơ chế hoạt động:
-
Layer 4 (Transport Layer): TCP/UDP/TLS
-
Routing dựa trên IP & port
-
Hỗ trợ static IP hoặc Elastic IP
-
Health check dựa trên TCP handshake
Ưu điểm:
-
Độ trễ thấp, hiệu suất cao
-
Phù hợp ứng dụng realtime: streaming, gaming, IoT
Hạn chế: Không hỗ trợ content-based routing
3.3 Gateway Load Balancer (GWLB)
Cơ chế hoạt động:
-
Layer 3 (Network Layer): Packet-level
-
Tích hợp với thiết bị mạng ảo: Firewall, IDS/IPS
-
Giao thức GENEVE để truyền tải lưu lượng
-
Health check và phân phối thông minh
Ưu điểm:
-
Phù hợp cho các ứng dụng yêu cầu độ bảo mật cao
-
Không cần sửa đổi ứng dụng
Hạn chế: Ít phổ biến, chủ yếu dùng trong kiểm tra/bảo mật lưu lượng mạng
So sánh tổng quan
Loại LB | Layer | Giao thức | Tính năng nổi bật | Ứng dụng |
---|---|---|---|---|
ALB | Layer 7 | HTTP/HTTPS, WebSocket | Path-based routing, WAF | Ứng dụng web, microservices |
NLB | Layer 4 | TCP/UDP, TLS | Low latency, static IP | Streaming, gaming, IoT |
GWLB | Layer 3 | GENEVE | Network appliances | Firewall, IDS/IPS |
4. Vai trò của Auto Scaling trong HA
Auto Scaling đảm bảo số lượng instance phù hợp với tải hệ thống:
-
Dynamic Scaling: Dựa trên CPU, số request, CloudWatch metrics
-
Health Check Integration: Loại bỏ instance không phù hợp, ví dụ instance bị dead, disconnect
-
Multi-AZ Deployment: Tăng độ chịu lỗi
Ví dụ: ALB + Auto Scaling
-
ALB phân phối đều lưu lượng giữa các instance
-
Auto Scaling tạo mới instance khi AZ gặp sự cố hoặc tải tăng
5. Ví dụ thực tế: Triển khai ứng dụng web HA trên AWS
Mô tả bài toán
Một công ty triển khai ứng dụng web bán hàng trên AWS. Ứng dụng cần đảm bảo:
-
Hoạt động liên tục (24/7), kể cả khi có sự cố xảy ra tại một khu vực (AZ).
-
Có thể mở rộng khi số lượng người truy cập tăng đột biến (ví dụ mùa khuyến mãi).
-
Giữ chi phí tối ưu khi ít người truy cập.
Kiến trúc giải pháp
Công ty triển khai hệ thống như sau:
-
Amazon EC2 Auto Scaling Group (ASG):
-
Tự động khởi tạo các instance từ một AMI đã cấu hình sẵn (chứa ứng dụng web).
-
Sử dụng Launch Template để định nghĩa cấu hình.
-
Cấu hình tối thiểu 2 instance, tối đa 10, theo CPU sử dụng > 60%.
-
-
Application Load Balancer (ALB):
-
Phân phối lưu lượng đến các instance phía sau.
-
Routing dựa trên path, ví dụ
/admin
chuyển đến cụm admin service,/user
đến cụm frontend. -
Health check liên tục mỗi 30s, nếu instance lỗi sẽ bị loại.
-
-
Triển khai đa AZ (Multi-AZ):
-
Các instance được trải đều trên 2 Availability Zones (us-east-1a, us-east-1b).
-
Nếu một AZ bị lỗi, hệ thống vẫn hoạt động nhờ các instance AZ còn lại.
-
Lưu lượng hoạt động
-
Trong giờ cao điểm, Auto Scaling tăng từ 2 lên 8 instance để đảm bảo hiệu suất.
-
Khi lưu lượng giảm, hệ thống tự động scale-in, giảm xuống còn 2 instance.
-
ALB đảm bảo người dùng không cảm nhận được bất kỳ gián đoạn nào.
Lợi ích đạt được
-
Tính sẵn sàng cao: Không bị downtime kể cả khi một AZ gặp sự cố.
-
Tối ưu chi phí: Chỉ trả tiền cho số lượng instance thật sự cần.
-
Hiệu suất tốt: Ứng dụng phản hồi nhanh nhờ mở rộng linh hoạt theo nhu cầu.