ELB (Elastic Load Balancing)

4 phút đọcSeries: NoteBook: AWS Certified Solutions Architect Associate SAA-C031 lượt xem

New words

  • seamlessly/ˈsiːm.ləs.li/: Liền mạch

Tổng quan

  • Load Balancer là các server có nhiệm vụ chuyển tiếp traffic đến nhiều server phía sau (ví dụ: các EC2 instance).
  • Là một Managed Load Balancer, nghĩa là:
    • AWS đảm bảo tính sẵn sàng và uptime.
    • AWS chịu trách nhiệm về update, maintenance và đảm bảo HA (high availability).
    • Cấu hình đơn giản — chỉ cung cấp một số option để tinh chỉnh, không quá phức tạp như tự host.
  • Chi phí thấp hơn nếu bạn tự triển khai, nhưng:
    • Sẽ tốn nhiều effort vận hành hơn (setup HA, health check, monitor, scale…).
  • Tích hợp sâu với hệ sinh thái AWS:
    • EC2, Auto Scaling Group, ECS
    • Certificate Manager (ACM), CloudWatch
    • Route 53, AWS WAF, AWS Global Accelerator
  • ELB phải nằm cùng VPC với các instance trong target group.
    • ELB là một resource nằm trong VPC, và nó chỉ có thể định tuyến đến các target (EC2, ECS, IP, Lambda) nằm trong cùng VPC hoặc VPC được peering hoặc kết nối thông qua PrivateLink/VPC Endpoint (trong trường hợp đặc biệt).
  • Khi bạn tạo một ELB:
    • Bạn chọn VPC → Đây là nơi ELB tồn tại logic.
    • Sau đó bạn chọn các Availability Zones → AWS sẽ:
      • Deploy 1 node của ELB trong mỗi AZ bạn chọn.
      • Gắn node đó vào một subnet cụ thể trong AZ đó.
        -> ⚠️ Mỗi AZ sẽ có một ELB node riêng biệt 
  • Phân phối tải đến nhiều instance ở tầng downstream (ví dụ: các EC2 instance).
  • Cung cấp 1 điểm truy cập duy nhất (thông qua DNS) cho toàn bộ ứng dụng — tiện cho việc quản lý và scale.
  • Xử lý tự động các lỗi/failure của downstream instance (load balancer tự loại các instance unhealthy).
  • Thực hiện health check định kỳ để đảm bảo các instance vẫn hoạt động bình thường.
  • Xử lý SSL termination (HTTPS) – giải mã TLS tại LB thay vì tại instance giúp giảm tải cho app backend.
  • Hỗ trợ sticky session thông qua cookie (giữ session của user đi đúng 1 backend nhất định).
  • Đảm bảo high availability qua nhiều availability zones.
  • Tách biệt lưu lượng public với lưu lượng private, tăng tính bảo mật.

Health Checks

  • Health Check là thành phần cực kỳ quan trọng đối với Load Balancer.
  • Chúng cho phép Load Balancer biết được các instance mà nó định forward traffic tới có đang sẵn sàng phản hồi request hay không.
  • Health check sẽ thực hiện trên một port và một route cụ thể (thường là /health).
    • Nếu response trả về không phải là HTTP 200 (OK) → instance đó được đánh dấu là unhealthy.

Các loại Load Balancer trên AWS

1. Classic Load Balancer (CLB)

  • v1 - thế hệ cũ (ra mắt năm 2009)
  • Hỗ trợ các giao thức: HTTP, HTTPS, TCP, SSL (secure TCP)
  • Đã lỗi thời, ít tính năng, không còn được khuyến nghị sử dụng cho hệ thống mới

2. Application Load Balancer (ALB)

  • v2 - thế hệ mới, ra mắt năm 2016
  • Hoạt động ở tầng 7 (Application Layer)
  • Hỗ trợ: HTTP, HTTPS, WebSocket
  • Cho phép routing theo Host-based, Path-based, hỗ trợ advanced routing logic → phù hợp microservice / container-based architecture

3. Network Load Balancer (NLB)

  • v2 - thế hệ mới, ra mắt năm 2017
  • Hoạt động ở tầng 4 (Transport Layer)
  • Hỗ trợ: TCP, TLS (secure TCP), UDP
  • Rất phù hợp các use case yêu cầu low latency & high throughput, ví dụ như game server, VoIP, hoặc các giao thức custom

4. Gateway Load Balancer (GWLB)

  • Ra mắt năm 2020
  • Hoạt động ở tầng 3 (Network Layer - IP level)
  • Dùng để deploy third-party virtual appliances như firewall, IDS/IPS, traffic inspection...
Tổng kết
  • Nên dùng các loại load balancer thế hệ mới (v2) → nhiều tính năng hơn, dễ mở rộng.
  • Có thể cấu hình load balancer dưới dạng:
    • Internal (private) → dùng trong nội bộ VPC
    • External (public) → nhận traffic từ internet
Gợi ý thực chiến
Use CaseNên dùng
Web App đơn giảnALB
Microservices / EKSALB
Game server / TCP-basedNLB
Deep packet inspection / FirewallGWLB
Tạm thời / cũ kỹ (legacy)CLB (hạn chế dùng mới)

Bảo vệ Load Balancer

Load Balancer Security Group

Cho phép LB nhận request HTTP/HTTPS từ Internet:

TypeProtocolPortSourceDescription
HTTPTCP800.0.0.0/0Allow HTTP from anywhere
HTTPSTCP4430.0.0.0/0Allow HTTPS from anywhere

📝 Giải thích:

  • Cho phép user gửi HTTP/HTTPS từ bất kỳ đâu đến LB.
  • 0.0.0.0/0 = cho phép từ toàn bộ internet.

Application (EC2) Security Group

Chỉ cho phép EC2 nhận traffic từ SG của Load Balancer:

TypeProtocolPortSourceDescription
HTTPTCP80sg-05...2b6e (SG của Load Balancer)Allow traffic only from LB

Giải thích:

  • EC2 backend chỉ mở port 80 (HTTP), không mở public.
  • Source = SG của LB: có nghĩa chỉ những request đi qua LB mới được phép tới EC2 → đảm bảo an toàn, ngăn tấn công trực tiếp.
Bạn thấy bài này thế nào?