- vừa được xem lúc

High Availability trên AWS với Auto Scaling và Load Balancer

0 0 1

Người đăng: Nguyễn Ngọc Thiên

Theo Viblo Asia

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.

Bình luận

Bài viết tương tự

- vừa được xem lúc

PDF Export, cẩn thận với những input có thể truyền vào

Giới thiệu. Dạo gần đây mình tình cờ gặp rất nhiều lỗi XSS, tuy nhiên trang đó lại có sử dụng dữ liệu người dùng input vào để export ra PDF.

0 0 75

- vừa được xem lúc

Giới thiệu về AWS Batch

Khi sử dụng hệ thống cloud service, điều chúng ta thường phải quan tâm đến không chỉ là hiệu suất hoạt động (performance) mà còn phải chú ý đến cả chi phí bỏ ra để duy trì hoạt động của hệ thống. Chắn hẳn là hệ thống lớn hay nhỏ nào cũng đã từng phải dùng đến những instance chuyên để chạy batch thực

0 0 148

- vừa được xem lúc

Tìm hiểu về AWS KMS

1. AWS KMS là gì. Ở KMS bạn có thể lựa chọn tạo symetric key (khóa đối xứng) hoặc asymetric key (khóa bất đối xứng) để làm CMK (Customer Master Key). Sau khi tạo key thì có thể thiết đặt key policy để control quyền access và sử dụng key.

0 0 70

- vừa được xem lúc

AWS VPC cho người mới bắt đầu

Tuần này, tôi trình bày lại những gì tôi đã học được về Virtual Private Cloud (VPC) của Amazon. Nếu bạn muốn xem những gì tôi đã học được về AWS, hãy xem Tổng quan về DynamoDB và Tổng quan về S3. VPC là gì. Những điều cần lưu ý:.

0 0 91

- vừa được xem lúc

AWS Essentials (Phần 6): Guildline SNS Basic trên AWS

Tiếp tục với chuỗi bài viết về Basic AWS Setting, chúng ta tiếp tục tìm hiểu tiếp tới SNS (Simple Notification Service). Đây là một service của AWS cho phép người dùng setting thực hiện gửi email, text message hay push notification tự động tới mobile device dựa trên event người dùng setting phía AWS

0 0 153

- vừa được xem lúc

Sử dụng Amazon CloudFront Content Delivery Network với Private S3 Bucket — Signing URLs

Trong nhiều trường hợp, thì việc sử dụng CDN là bắt buộc. Mình đã trải nghiệm với một số CDN nhưng cuối cùng mình lựa chọn sử dụng AWS CloudFront.

0 0 125