0

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:

  1. 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%.

  2. 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.

  3. 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

Viblo
Let's register a Viblo Account to get more interesting posts.