Application Load Balancer (ALB) trong AWS – Bài 10

Trong bài viết này chúng ta hãy cùng tìm hiểu Application Load Balancer (ALB) giúp phân phối lưu lượng giữa các backed.

Xem thêm:

AWS IPv4 Public – Cách tính phí mới nhất – Bài 7

EBS Volumes – EBS Snapshot – Lưu trữ cho EC2 Instances – Bài 8

Tìm hiểu Amazon EFS (Elastic File System) – Bài 9

1. Application Load Balancer (ALB) là gì?

Application Load Balancer (ALB) là một dịch vụ do AWS cung cấp, giúp phân phối lưu lượng truy cập web đến nhiều server (backend).

ALB hoạt động ở tầng 7 (tầng ứng dụng), có nghĩa là nó hoạt động trên giao thức HTTP/HTTPS. ALB cho phép:

  • Phân phối lưu lượng đến nhiều ứng dụng HTTP trên nhiều máy chủ.
  • Định tuyến dựa trên đường dẫn URL, HTTP header, tham số truy vấn và tên miền.
  • Tích hợp với các công nghệ container như Docker và Amazon ECS.
  • Hỗ trợ giao thức HTTP/2 và WebSockets để tối ưu hiệu suất.
  • Tự động chuyển hướng HTTP sang HTTPS để tăng cường bảo mật.

Application Load Balancer (ALB)

2. ALB hoạt động như thế nào?

2.1. Target group

Đây là nơi bạn gom các server backend lại.

  • Ví dụ: 2 EC2 instance đang chạy web server → Cho vào 1 target group.
  • Các container ECS hoặc hàm Lambda cũng có thể được thêm vào target group.

2.2. Health Checks

ALB sẽ tự động kiểm tra các server trong target group có hoạt động bình thường hay không. Nếu một server không phản hồi đúng → ALB sẽ tạm ngưng gửi request tới đó.

Kiểm tra sức khỏe thường dùng:

  • Giao thức: HTTP hoặc HTTPS
  • Port: 80 hoặc 443
  • Đường dẫn: /health

2.3. Routing

Các phương thức định tuyến trong ALB:

  • Định tuyến theo đường dẫn (Path-Based Routing): Ví dụ: example.com/users → Target Group 1.
  • Định tuyến theo tên miền (Host-Based Routing): Ví dụ: one.example.com → Target Group 1.
  • Định tuyến theo tham số truy vấn và tiêu đề HTTP: Ví dụ: example.com/orders?id=123&status=pending → Target Group 1.

3. So sánh ALB với NLB (Network Load Balancer)

Tiêu chí Network Load Balancer (NLB) Application Load Balancer (ALB)
Tầng (Layer) Layer 4 (Transport – TCP/UDP) Layer 7 (Application – HTTP/HTTPS/WebSocket)
Giao thức hỗ trợ TCP, UDP, TLS (TLS offloading hỗ trợ) HTTP, HTTPS, WebSocket, gRPC
Tính năng định tuyến Dựa trên IP, cổng (Port) Dựa trên URL, Host header, HTTP headers, Method, Query param
Địa chỉ IP Có thể gán Elastic IP Không hỗ trợ Elastic IP – IP thay đổi nếu bị xóa
Hiệu suất Xử lý hàng triệu request/giây với độ trễ thấp Hiệu suất tốt nhưng thấp hơn NLB trong các use case tầng 4
Health check TCP, HTTP, HTTPS HTTP, HTTPS
TLS termination Có (TLS listener)
Target types EC2 Instance, IP address, Lambda (limited) EC2 Instance, IP, Lambda, ECS (Fargate or EC2)
Hỗ trợ PrivateLink Không hỗ trợ
WebSocket/gRPC Không hỗ trợ Hỗ trợ WebSocket và gRPC
Use Case phổ biến Game server, IoT, VPN, hệ thống cần IP cố định Web app, microservices, container apps, HTTP routing logic
Chi phí Tính theo số LCU và data Tính theo số LCU và data

4. Triển khai ALB để cân bằng tải giữa 2 EC2 – HandOn

Các task thực hiện:

  • Task 1: Tạo 2 EC2 Instance để làm target
  • Task 2: Tạo Application Load Balancer (ALB)
  • Task 3: Tạo Target Group và gắn EC2
  • Task 4: Gắn Target Group vào Load Balancer
  • Task 5: Kiểm tra cân bằng tải

4.1 Tạo 2 EC2 Instance để làm target

  • Truy cập: AWS Console > EC2 > Launch Instances
  • Cấu hình:
    • Tên: WebServer01
    • AMI: Amazon Linux 2
    • Instance type: t2.micro
    • Key pair: Proceed without a key pair
    • Network: Tạo security group alb-sg (cho phép HTTP và SSH)
    • Storage: Mặc định
    • User data:
#!/bin/bash 
# Use this for your user data (script from top to bottom) 
# install httpd (Linux 2 version) 
yum update -y 
yum install -y httpd 
systemctl start httpd 
systemctl enable httpd 
echo "<h1>Hello EC2 Instance 1</h1>"> /var/www/html/index.html

Tạo 2 EC2 Instance để làm target

Tạo 2 EC2 Instance để làm target

Tạo 2 EC2 Instance để làm target

Tạo 2 EC2 Instance để làm target

Tạo 2 EC2 Instance để làm target

Tạo 2 EC2 Instance để làm target

Tạo 2 EC2 Instance để làm target

4.2. Tạo Application Load Balancer (ALB)

  • Truy cập: EC2 Dashboard > Load Balancers > Create Load Balancer
  • Chọn loại: Application Load Balancer
  • Cấu hình:
    • Tên: DemoALB
    • Scheme: Internet-facing
    • Address type: IPv4
    • Availability Zones: chọn tất cả các AZ có EC2
    • Tạo Security Group mới:
      • Tên: demo-sg-load-balancer
      • Mô tả: Allow HTTP into ALB
      • Inbound rule: cho phép HTTP (port 80) từ Anywhere
      • Outbound: để mặc định

Tạo Application Load Balancer

Tạo Application Load Balancer (ALB)

Tạo Application Load Balancer

Tạo Application Load Balancer

5.3. Tạo Target Group và gắn EC2

  • Trong phần Listener and Routing → Chọn Create target group
  • Cấu hình:
    • Target type: Instances
    • Tên: demo-tg-alb
    • Protocol: HTTP
    • Port: 80
    • Health check: mặc định
  • Đăng ký cả hai EC2 instance vào target group.

Tạo Application Load Balancer

Tạo Target Group và gắn EC2

Tạo Target Group và gắn EC2

Tạo Target Group và gắn EC2

Tạo Target Group và gắn EC2

Gắn Target Group vào Load Balancer và tạo

5.4. Gắn Target Group vào Load Balancer và tạo

  • Chọn lại demo-tg-alb làm đích đến cho listener port 80.
  • Nhấn Create Load Balancer.
  • Sau khi ALB được tạo, copy DNS name và truy cập từ trình duyệt.

Gắn Target Group vào Load Balancer và tạo

Gắn Target Group vào Load Balancer và tạo

Gắn Target Group vào Load Balancer và tạo

Gắn Target Group vào Load Balancer và tạo

5.5. Kiểm tra cân bằng tải

  • Truy cập DNS của ALB nhiều lần (refresh liên tục).
  • Quan sát nội dung “Hello World” thay đổi qua lại giữa các EC2 instance → xác nhận Load Balancer hoạt động.

Gắn Target Group vào Load Balancer và tạo

5.7. Kiểm tra tính năng Health Check

  • Stop 1 EC2 instance từ EC2 Console.
  • Vào Target Group > Targets để xem trạng thái unhealthy.
  • Truy cập lại DNS ALB → chỉ còn phản hồi từ instance còn lại.
  • Start lại EC2 bị stop → Target sẽ quay lại trạng thái healthy.

Application Load Balancer là giải pháp lý tưởng cho các ứng dụng web, microservices, và container trên AWS. Nó cung cấp định tuyến thông minh, tích hợp ECS, hỗ trợ WebSockets, HTTPS redirect và cấu hình linh hoạt qua listener rules.

Cảm ơn bạn đã tham khảo AWS Certified Solutions Architect Associate trên ttnguyen.net.

Bài viết cùng chủ đề:

Amazon EC2 là gì? Các loại EC2 Instance phổ biến – Bài 4

Hướng dẫn tạo EC2 Instance chạy Amazon Linux trên AWS – Bài 5

EC2 Placement Groups trong AWS – Bài 6

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em