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
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.

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) | Có |
| Target types | EC2 Instance, IP address, Lambda (limited) | EC2 Instance, IP, Lambda, ECS (Fargate or EC2) |
| Hỗ trợ PrivateLink | Có | 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







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




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.






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.




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.

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