Network Load Balancer (NLB) trong AWS – Bài 11

Trong bài này, mình sẽ hướng dẫn chi tiết cách tạo và cấu hình một Network Load Balancer (NLB) trên AWS. Bạn sẽ hiểu được từ khái niệm cơ bản đến cách kiểm tra hoạt động và xử lý lỗi liên quan đến health check.

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. Network Load Balancer (NLB) là gì?

Network Load Balancer (NLB) là bộ cân bằng tải tầng 4 (Layer 4) trong mô hình OSI, giúp xử lý lưu lượng TCPUDP. Điều này khác với Application Load Balancer (ALB), vốn hoạt động ở tầng 7 và chỉ hỗ trợ HTTP/HTTPS.

Điểm mạnh của NLB:

  • Xử lý được hàng triệu request mỗi giây.
  • Độ trễ cực thấp, phù hợp với ứng dụng cần phản hồi nhanh.
  • Có thể cấp IP tĩnh hoặc sử dụng Elastic IP.
  • Hỗ trợ PrivateLink để kết nối riêng tư trong VPC.
  • Có thể đặt NLB trước ALB để kết hợp tính năng.

Lưu ý: Không nằm trong Free Tier của AWS

Network Load Balancer

2. Khi nào nên dùng NLB?

Bạn nên chọn NLB nếu ứng dụng của bạn:

  • Ứng dụng yêu cầu hiệu suất cực cao (hàng triệu kết nối đồng thời, độ trễ dưới 1ms).
  • Cần sử dụng giao thức tầng 4 như TCP, UDP (ví dụ DNS, VoIP, gaming, streaming).
  • Muốn có địa chỉ IP cố định để quản lý firewall.
  • Muốn kết hợp với ALB để có IP cố định và routing HTTP/HTTPS thông minh.

3. Cách NLB hoạt động

  1. Client gửi request (TCP hoặc UDP) đến DNS của NLB.
  2. NLB sẽ xem Target Group để biết instance nào đang hoạt động.
  3. NLB chuyển tiếp request đến backend EC2 mà không thay đổi nội dung gốc.
  4. EC2 xử lý và trả lại kết quả.

4. Các loại Target Group mà NLB hỗ trợ

Target Type Mô tả
EC2 Instance Gửi lưu lượng TCP/UDP đến EC2
IP Addresses Định tuyến tới IP riêng trong hoặc ngoài AWS
ALB Gửi lưu lượng TCP đến ALB khác
AWS PrivateLink Kết nối đến dịch vụ riêng trong VPC

Network Load Balancer Target Group

5. Connection Draining / Deregistration Delay

Connection Draining (CLB) hoặc Deregistration Delay (ALB, NLB) cho phép instance được gỡ khỏi Load Balancer một cách êm ái, tức là:

  • Không nhận request mới
  • Tiếp tục xử lý các request hiện tại

Cách hoạt động:

Instance được đánh dấu gỡ bỏ sẽ tiếp tục xử lý kết nối hiện tại, sau đó mới được ngắt hoàn toàn khỏi Load Balancer.

Cấu hình:

  • Thời gian từ 1 đến 3600 giây
  • Mặc định: 300 giây
  • Nếu không muốn dùng: đặt về 0

6. Network Load Balancer – HandOn

Mục tiêu: Tạo Network Load Balancer (NLB) để phân phối lưu lượng TCP tới các EC2 Instance

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

6.2. Tạo Network 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: DemoNLB
    • 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 NLB
      • Inbound rule: cho phép HTTP (port 80) từ Anywhere
      • Outbound: để mặc định

Tạo Application Load Balancer

Cấu hình Network LoadBalancer

Tạo Application Load Balancer

Tạo Application Load Balancer

6.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-nlb
    • 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

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

  • Chọn lại demo-tg-nlb 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

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

  • Truy cập DNS của NLB 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

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

Network Load Balancer là lựa chọn hoàn hảo cho những hệ thống yêu cầu hiệu suất cực cao và xử lý giao thức tầng 4 như TCP/UDP. Qua hướng dẫn trên, bạn đã biết cách tự tay tạo một NLB và xử lý các lỗi thường gặp.

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

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

AWS Budget – Thiết lập ngân sách và cảnh báo chi phí – Bài 3

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