High Availability trên AWS với Auto Scaling và Load Balancer
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.
All Rights Reserved