Chuyển tới nội dung chính

Elastic Load Balancing (ELB) Deep Dive

1. Load Balancer Types

AWS cung cấp 3 loại Load Balancer chính, mỗi loại được tối ưu cho các use case khác nhau. Việc chọn đúng loại Load Balancer sẽ ảnh hưởng trực tiếp đến hiệu năng, chi phí và khả năng mở rộng của hệ thống.

FeatureApplication Load Balancer (ALB)Network Load Balancer (NLB)Gateway Load Balancer (GWLB)
LayerLayer 7 (HTTP/HTTPS)Layer 4 (TCP/UDP)Layer 3 (IP)
TargetIP, Instance, LambdaIP, Instance, ALBIP
LatencyLow (ms)Ultra-low (µs)Low
Trường hợp sử dụngWeb Apps, MicroservicesGaming, Finance, IoTFirewalls, IDS/IPS

📚 Tài liệu tham khảo

2. ALB Request Routing

Application Load Balancer (ALB) cung cấp các chức năng định tuyến request thông minh dựa trên nội dung HTTP/HTTPS:

  • Content-based Routing: Định tuyến traffic dựa trên URL path, hostname, HTTP headers, query strings
  • Multiple Target Groups: Hỗ trợ route tới nhiều nhóm targets khác nhau (EC2, containers, Lambda, IP addresses)
  • SSL/TLS Termination: Xử lý mã hóa/giải mã SSL/TLS tại load balancer, giảm tải cho backend servers
  • Health Monitoring: Tự động kiểm tra health của targets và chỉ route traffic tới healthy targets
  • Advanced Routing Rules: Hỗ trợ weighted routing, sticky sessions, và redirect rules

2.1. Listener Rules và Priority

ALB sử dụng Listener Rules để quyết định cách route traffic. Rules được đánh giá theo priority order (số thứ tự từ thấp đến cao):

Ví dụ cấu hình Rules theo Priority:

PriorityRule TypeConditionActionTarget Group
1Path pattern/api/*ForwardAPI Production TG
10Host headeradmin.example.comForwardAdmin Target Group
50Path pattern/api/*Redirecthttps://newapi.example.com
Default-Match allForwardDefault Target Group

Cách ALB đánh giá Rules:

  1. Priority thấp được xét trước: Rule với priority 1 được kiểm tra trước rule priority 50
  2. First match wins: Khi tìm thấy rule đầu tiên match, ALB sẽ áp dụng action của rule đó và dừng việc kiểm tra các rules còn lại
  3. Default rule: Nếu không có rule nào match, request sẽ được route theo Default Rule (được đánh giá sau cùng và không có priority số như các rule khác)

Ví dụ minh họa Priority với cùng Condition:

Trong bảng trên, cả Rule Priority 1Rule Priority 50 đều match với condition /api/*, nhưng có actions khác nhau:

Request: https://example.com/api/users

Bước đánh giá:
1. Kiểm tra Rule Priority 1: Path = /api/* ✅ MATCH
→ Action: Forward to API Production TG
→ ÁP DỤNG rule này và DỪNG

2. Rule Priority 50: Không được kiểm tra nữa
(Mặc dù condition cũng match /api/*)

Kết quả: Request được forward tới API Production TG

Nếu xóa Rule Priority 1, điều gì sẽ xảy ra?

Request: https://example.com/api/users

Bước đánh giá:
1. Kiểm tra Rule Priority 10: Host ≠ admin.example.com ❌
2. Kiểm tra Rule Priority 50: Path = /api/* ✅ MATCH
→ Action: Redirect to https://newapi.example.com
→ ÁP DỤNG rule này

Kết quả: Request được redirect sang https://newapi.example.com/api/users

2.2. Routing Conditions (Điều kiện định tuyến)

ALB hỗ trợ nhiều loại conditions để routing:

🌐 Host-based Routing

api.example.com → API microservices
admin.example.com → Admin dashboard
mobile.example.com → Mobile API

📁 Path-based Routing

/api/users/* → User service
/api/orders/* → Order service
/api/payments/* → Payment service

🔍 Query String Routing

?version=v1 → Legacy API
?version=v2 → New API
?feature=beta → Beta features

📋 HTTP Header Routing

User-Agent: Mobile → Mobile-optimized backend
X-Api-Version: v2 → New API version
Custom-Header: internal → Internal services

2.3. Redirect từ HTTP sang HTTPS

ALB thường được cấu hình để redirect tất cả HTTP traffic sang HTTPS để đảm bảo bảo mật:

  • Listener 80: Chỉ làm redirect (301/302) sang HTTPS
  • Listener 443: Xử lý actual business logic và routing
Sticky Sessions (Session Affinity)

Mặc định ALB route request theo Round Robin. Nếu App của bạn lưu session trên RAM (stateful), hãy bật Sticky Sessions để user luôn được route về đúng instance cũ.

  • Duration-based: ALB tạo cookie riêng (AWSALB).

  • Application-based: App tự tạo cookie, ALB dựa vào đó.

2.4. Advanced Routing Features

Các tính năng định tuyến nâng cao cho phép kiểm soát luồng traffic một cách linh hoạt và thông minh.

⚖️ Health Check Integration

  • Unhealthy targets tự động bị remove khỏi load balancing

  • Health check customizable: path, interval, timeout, healthy threshold

🎯 Weighted Target Groups: Thích hợp dùng cho Canary deployment

90% traffic → Production version
10% traffic → Canary version (A/B testing)

🔄 Blue/Green deployment: Chiến lược triển khai cho phép chuyển traffic an toàn giữa hai version Blue và Green

Blue environment: 100% traffic (current)
Green environment: 0% traffic (new version)
Flip traffic when ready: Blue 0% → Green 100%

📚 Tài liệu tham khảo

3. Cross-Zone Load Balancing

Cross-Zone Load Balancing là tính năng cho phép Load Balancer phân phối traffic đều cho tất cả các instances registered trong Target Group, bất kể chúng nằm ở Availability Zone nào. Điều này giúp tối ưu hóa việc sử dụng tài nguyên và cân bằng tải hiệu quả hơn giữa các AZ.

3.1. Cross-Zone Load Balancing ENABLED

Khi tính năng Cross-Zone Load Balancing được ENABLED, traffic được phân phối đều cho tất cả instances qua các AZ.

👉 Kết quả: Mỗi instance nhận 20% traffic (phân phối đều)

3.2. Cross-Zone Load Balancing DISABLED

Khi tính năng Cross-Zone Load Balancing bị DISABLED, mỗi ALB node chỉ gửi traffic đến các targets trong cùng AZ của nó

👉 Kết quả:

  • AZ-A mỗi instance nhận 25% tổng traffic (50% / 2 instances)

  • AZ-B mỗi instance nhận ~16.67% tổng traffic (50% / 3 instances)

Data Transfer Cost

Với NLB, Cross-Zone Load Balancing mặc định là Disabled. Nếu bật lên, bạn sẽ bị tính phí băng thông truyền giữa các AZ.

Với ALB, Cross-Zone Load Balancing được bật mặc định, bạn có thể tắt nếu cần và không bị tính phí khi bật.


📚 Tài liệu tham khảo

4. SSL/TLS Termination

SSL/TLS Termination là tính năng cho phép ALB xử lý việc mã hóa/giải mã SSL/TLS, giảm tải xử lý cho backend instances và tối ưu hiệu năng tổng thể của hệ thống.

Phân tích Diagram:

  1. Client → ALB (HTTPS Port 443): Client gửi request được mã hóa SSL/TLS qua Internet, đảm bảo dữ liệu an toàn trong quá trình truyền tải
  2. ALB thực hiện SSL Termination: ALB decrypt (giải mã) HTTPS request bằng SSL certificate đã cài đặt sẵn
  3. ALB → Backend (HTTP Port 80): ALB forward request đã được giải mã dưới dạng HTTP thuần túy tới các EC2 instances trong private subnet

4.1. Lợi ích của SSL/TLS Termination

🔐 SSL Offloading (Giảm tải SSL)

  • ALB đảm nhận toàn bộ quá trình mã hóa/giải mã SSL/TLS

  • Backend instances chỉ cần xử lý HTTP thông thường, tiết kiệm CPU và RAM

  • Giảm độ trễ (latency) do không cần thực hiện handshake SSL tại backend

Hiệu năng cao

  • ALB được tối ưu hóa phần cứng cho việc xử lý SSL/TLS

  • Hỗ trợ session re-use và session tickets để tăng tốc kết nối

  • Hỗ trợ Connection pooling giúp tái sử dụng kết nối TCP

🔧 Quản lý tập trung

  • Chỉ cần cập nhật SSL certificate tại ALB, không cần xử lý ở từng instance

  • Dễ dàng triển khai security policies một cách nhất quán

  • Logging và Metrics tập trung, phục vụ debug và troubleshooting

💰 Tiết kiệm chi phí

  • Không cần mua SSL certificates cho từng instance

  • Instance types nhỏ hơn do không cần công suất xử lý SSL

  • Giảm chi phí vận hành

4.2. Certificate Management Options

ALB hỗ trợ nhiều nguồn certificate khác nhau, mỗi loại có ưu nhược điểm riêng:

AWS Certificate Manager (ACM) - Khuyến nghị ⭐

  • Miễn phí: Không tốn phí cho public SSL certificates
  • Tự động gia hạn: ACM tự động renew certificates trước khi hết hạn
  • Tích hợp sâu: Native integration với ALB, CloudFront, API Gateway
  • Wildcard support: Hỗ trợ wildcard certificates (*.example.com)
  • Domain validation: Validation qua DNS hoặc email

IAM Certificate Store

  • Imported certificates: Upload certificates từ external CA (Certificate Authority)
  • Legacy support: Dành cho certificates đã có sẵn
  • Manual management: Cần manual renew và update
  • Global / cross-region: Import certificate một lần vào IAM (global) và có thể gắn cho resources ở nhiều region

Third-party Certificate Authorities

  • Extended Validation (EV): Chứng chỉ với mức độ xác thực danh tính cao nhất, quy trình cấp phát nghiêm ngặt (kiểm tra pháp lý, thực thể và quyền sở hữu domain). Các trình duyệt hiện đại không còn hiển thị nổi bật tên tổ chức trên thanh địa chỉ như trước. EV chủ yếu phục vụ mục đích tuân thủ và yêu cầu nghiệp vụ hơn là tạo khác biệt rõ ràng về UI so với DV/OV.
  • Organization Validation (OV): Chứng chỉ xác thực thông tin tổ chức/công ty
  • Các loại server SSL/TLS: Bao gồm DV/OV/EV, wildcard certificates (*.example.com) và SAN/multi-domain certificates (chứa nhiều FQDN trong cùng một certificate) dùng cho HTTPS listener của ALB
  • Compliance requirements: Một số ngành nghề yêu cầu sử dụng CA cụ thể để tuân thủ quy định
Certificate Renewal

Với ACM certificates, AWS sẽ tự động renew.

Với imported certificates, bạn cần manual renew trước khi expire để tránh downtime.

4.3. SNI Multi-Domain (Server Name Indication)

SNI cho phép ALB host nhiều SSL certificates trên cùng một IP address, serving multiple domains với certificates riêng biệt.

Cách SNI hoạt động:

  1. TLS Handshake: Client gửi domain name trong TLS handshake
  2. Certificate Selection: ALB chọn certificate phù hợp dựa trên SNI
  3. Host-based Routing: Sau khi establish SSL, ALB routing dựa trên Host header
  4. Multiple Apps: Một ALB có thể serve nhiều applications với domains khác nhau

Giới hạn của SNI:

  • Client Support: Hầu hết browsers và clients hiện đại đều support SNI. Chỉ một số browsers/OS rất cũ (ví dụ IE 6, Android 2.x) không support SNI, nhưng những phiên bản này hiện nay hầu như không còn được sử dụng.
  • Certificate Limit: Tối đa 25 certificates / ALB listener (có thể request tăng)
  • Default Certificate: Cần có default certificate cho clients không support SNI
SSL Best Practices
  • ACM Certificates: Sử dụng AWS Certificate Manager để tự động gia hạn SSL
  • Security Policy: Chọn policy mới nhất để hỗ trợ TLS 1.2+ và loại bỏ cipher yếu
  • HTTP to HTTPS Redirect: Luôn redirect HTTP traffic sang HTTPS
  • Security Groups: Chỉ allow port 443 từ internet, port 80 cho redirect

📚 Tài liệu tham khảo