Trang chủ/Chương 05

Chương 05: ELB & Auto Scaling

Tổng Quan

Elastic Load Balancing (ELB) phân phối traffic đến nhiều targets. Auto Scaling tự động tăng/giảm số lượng EC2 instances theo nhu cầu. Hai dịch vụ này kết hợp tạo nên kiến trúc High Availability + Scalable.


1. Elastic Load Balancer (ELB)

1.1 Tại sao cần Load Balancer?

  • Phân phối traffic đều đến nhiều servers.
  • Phát hiện instance lỗi → ngừng gửi traffic đến instance đó.
  • Cung cấp 1 DNS endpoint duy nhất cho ứng dụng.
  • Terminate SSL/TLS tại LB (giảm tải cho backend).

1.2 Các loại Load Balancer

LoạiLayerProtocolUse case
ALB (Application LB)Layer 7HTTP, HTTPS, WebSocketWeb apps, microservices, container-based
NLB (Network LB)Layer 4TCP, UDP, TLSUltra-low latency, gaming, IoT, millions req/s
GLB (Gateway LB)Layer 3IP Protocol3rd-party virtual appliances (firewall, IDS)

Classic Load Balancer (CLB) là thế hệ cũ → không dùng nữa, nhưng có thể xuất hiện trong đề thi.

1.3 ALB (Application Load Balancer) - Chi tiết

Tính năng chính:

  • Routing dựa trên: URL path (/users vs /orders), hostname (api.example.com), query string, HTTP headers.
  • Hỗ trợ Target Groups: EC2 instances, ECS tasks, Lambda functions, private IP addresses.
  • Fixed ResponseRedirect rules.
  • Cung cấp IP không cố định → dùng DNS name.
                    ┌─ Target Group 1 (EC2 instances)
Client → ALB ──────┤  Rule: path = /api/*
                    │
                    └─ Target Group 2 (Lambda)
                       Rule: path = /webhook

1.4 NLB (Network Load Balancer) - Chi tiết

  • Xử lý hàng triệu requests/giây với latency cực thấp (~100ms vs ~400ms ALB).
  • 1 static IP per AZ (hoặc gán Elastic IP).
  • Dùng khi cần: static IP, extreme performance, TCP/UDP protocol.

1.5 Các Khái Niệm Quan Trọng

Sticky Sessions (Session Affinity):

  • Đảm bảo user luôn được gửi đến cùng 1 instance.
  • Dùng cookie (Application-based hoặc Duration-based).
  • Nhược điểm: Có thể gây mất cân bằng tải.

Cross-Zone Load Balancing:

  • Bật: Traffic được phân phối đều cho tất cả instances ở mọi AZ.
  • Tắt: Traffic chỉ phân phối trong AZ mà LB node nằm.
  • ALB: Bật mặc định (miễn phí). NLB: Tắt mặc định (tính phí nếu bật).

Connection Draining (Deregistration Delay):

  • Khi 1 instance bị đánh dấu unhealthy → LB chờ hoàn thành requests đang xử lý (mặc định 300 giây) trước khi ngừng gửi traffic.

SSL/TLS Termination:

  • LB có thể terminate SSL → backend nhận traffic HTTP (giảm tải CPU).
  • Dùng AWS Certificate Manager (ACM) để quản lý SSL certificates.
  • SNI (Server Name Indication): Cho phép 1 LB sử dụng nhiều SSL certificates cho nhiều domains.

2. Auto Scaling Group (ASG)

2.1 ASG là gì?

  • Tự động tăng (scale out) hoặc giảm (scale in) số lượng EC2 instances.
  • Đảm bảo luôn có minimum instances chạy.
  • Tích hợp với ELB: tự đăng ký/gỡ instances khỏi Target Group.

2.2 Cấu hình ASG

Tham sốÝ nghĩa
Minimum CapacitySố instances tối thiểu phải chạy
Desired CapacitySố instances mong muốn hiện tại
Maximum CapacitySố instances tối đa được phép

2.3 Launch Template

  • Định nghĩa cấu hình EC2 cho ASG: AMI, instance type, key pair, security groups, user data, IAM role.
  • Thay thế Launch Configuration (cũ, không khuyến khích).

2.4 Scaling Policies

PolicyCách hoạt độngVí dụ
Target TrackingGiữ metric ở mức mục tiêuCPU trung bình = 50%
Step ScalingThêm/bớt instances theo mức alarmCPU >70%: +2 instances, CPU >90%: +4
Simple ScalingThêm/bớt 1 lượng cố địnhCPU >70%: +1 instance, đợi cooldown
ScheduledScale theo lịch trình8AM: min=10, 10PM: min=2
PredictiveML dự đoán traffic tương laiDựa trên lịch sử traffic

💡 Best Practice: Dùng Target Tracking là lựa chọn đầu tiên (đơn giản, hiệu quả).

2.5 Scaling Cooldown

  • Sau mỗi scaling activity, ASG chờ (mặc định 300 giây) trước khi scale tiếp.
  • Tránh tình trạng thêm/bớt instances liên tục.

2.6 Health Checks

  • EC2 Health Check: Kiểm tra trạng thái EC2 (running/stopped).
  • ELB Health Check: Kiểm tra response HTTP từ ứng dụng (khuyến khích dùng).
  • Instance unhealthy → ASG sẽ terminatethay thế bằng instance mới.

3. Kiến Trúc High Availability Điển Hình

                    Internet
                       │
                 ┌─────┴─────┐
                 │    ALB    │ (Multi-AZ)
                 └─────┬─────┘
            ┌──────────┼──────────┐
            ▼          ▼          ▼
    ┌──────────┐ ┌──────────┐ ┌──────────┐
    │   EC2    │ │   EC2    │ │   EC2    │
    │  (AZ-a) │ │  (AZ-b) │ │  (AZ-c) │
    └──────────┘ └──────────┘ └──────────┘
         │              │           │
         └──────────────┼───────────┘
                        ▼
                 ┌──────────┐
                 │ RDS (AZ-a)│──Multi-AZ──▶ Standby (AZ-b)
                 └──────────┘

Exam Tips 💡

  1. ALB = HTTP/HTTPS (Layer 7). NLB = TCP/UDP (Layer 4). Câu hỏi nói "routing based on URL path" → ALB.
  2. Cần static IP → NLB (ALB không có static IP).
  3. Target Tracking là scaling policy được khuyến khích nhất.
  4. Cross-Zone LB đảm bảo traffic đều giữa các AZ.
  5. SNI cho phép multiple SSL certs trên 1 ALB/NLB.
  6. ASG + ALB = combo HA + Scalability chuẩn mực.

Câu Hỏi Ôn Tập 📝

Câu 1: Ứng dụng web cần routing: /api/* đến App servers, /static/* đến S3 qua Lambda. Dùng LB nào?

Xem đáp án

ALB — Hỗ trợ path-based routing (Layer 7) và target groups cho cả EC2 lẫn Lambda.

Câu 2: Ứng dụng gaming cần latency cực thấp, xử lý triệu kết nối TCP. Cần static IP cho whitelist firewall. Dùng LB nào?

Xem đáp án

NLB — Layer 4, ultra-low latency, hỗ trợ static IP per AZ.

Câu 3: Bạn muốn ASG giữ CPU trung bình ở mức 60%. Dùng scaling policy nào?

Xem đáp án

Target Tracking Scaling Policy với target value = 60% cho metric CPUUtilization.


⬅️ Chương 04: EC2 & Compute | Chương 06: S3 & Storage ➡️