1. Network Load Balancers (NLBs) là gì?
Network Load Balancers (NLBs) là một dịch vụ của AWS cho phép tải cân bằng lưu lượng mạng (Layer 4), cho phép điều phối lưu lượng mạng TCP và UDP đến các instance của bạn.
So với Application Load Balancer (ALB) là tải cân bằng lưu lượng HTTP (Layer 7), NLB có thể xử lý hàng triệu yêu cầu mỗi giây với độ trễ thấp (khoảng 100 ms) so với ALB (khoảng 400 ms). NLB được sử dụng cho các ứng dụng đòi hỏi hiệu suất tối đa, đặc biệt là cho các ứng dụng sử dụng lưu lượng mạng TCP hoặc UDP.
Một điểm khác biệt quan trọng khác giữa NLB và ALB là NLB được cấp một địa chỉ IP tĩnh duy nhất cho mỗi khu vực (Availability Zone), và hỗ trợ gán Elastic IP, cho phép bạn whitelist IP cụ thể.
Tóm lại, Network Load Balancers là một giải pháp tuyệt vời cho các ứng dụng đòi hỏi hiệu suất tối đa với lưu lượng TCP hoặc UDP, trong khi Application Load Balancers phù hợp hơn cho các ứng dụng sử dụng lưu lượng HTTP.
Khi sử dụng Amazon Elastic Compute Cloud (EC2) instances, các địa chỉ IP của các instance đó phải là các địa chỉ IP riêng tư (private IP), có thể được quản lý bằng Auto Scaling Group để giúp tăng tính sẵn sàng và khả năng mở rộng của hệ thống.
Với Application Load Balancer, chức năng kiểm tra tình trạng sức khỏe (health checks) hỗ trợ các giao thức TCP, HTTP và HTTPS, cho phép theo dõi trạng thái hoạt động của các máy chủ ứng dụng để đảm bảo rằng lưu lượng truy cập được định tuyến đến các instance khỏe mạnh.
2. Thực hành tạo 1 Network Load Balancers (NLBs).
Cũng như thiết lập Application Load Balancer, tôi chỉ thay đổi tên của Load balancer name (xem lại Application Load Balancer).
Khác với Application Load Balancer thì Network Load Balancers chúng ta có thêm tuỳ chọn Use an Elastic IP address tại phần IPv4 address để có thể linh hoạt gắn 1 IP cho riêng bạn. Trong trường hợp của mình thì mình vẫn dùng tuỳ chọn Assigned by AWS.
Như bạn có thể thấy, tại Protocol bạn sẽ không thấy các tuỳ chọn như HTTP hay HTTPs vì nó thuộc Application Load Balancer. Giờ chúng ta hay tạo 1 target group bằng cách bấm vào Create target group.
Phần target type mình vẫn chọn là Instance.
Đặt tên cho target group.
Tùy chọn “Traffic port” và “Override” đều liên quan đến cổng mà Load Balancer sử dụng để gửi lưu lượng truy cập đến các máy chủ đích. Tuy nhiên, chúng có mục đích và cách sử dụng khác nhau:
- Tùy chọn “Traffic port” cho phép người dùng cấu hình cổng mà Load Balancer sử dụng để gửi lưu lượng truy cập đến các máy chủ đích. Cổng này thường được sử dụng để phân phối lưu lượng truy cập theo giao thức tương ứng, chẳng hạn như HTTP (cổng 80) hoặc HTTPS (cổng 443).
- Tùy chọn “Override” cho phép người dùng cấu hình một cổng khác mà Load Balancer sẽ sử dụng để gửi lưu lượng truy cập đến các máy chủ đích trong quá trình kiểm tra tình trạng sức khỏe (health check). Cổng này thường khác với cổng mà Load Balancer sử dụng để phân phối lưu lượng truy cập theo giao thức tương ứng. Ví dụ, nếu các máy chủ đích chạy trên cổng 8080 nhưng Load Balancer được cấu hình để sử dụng cổng 80 để phân phối lưu lượng truy cập, người dùng có thể sử dụng tùy chọn “Override” để chỉ định cổng 8080 cho quá trình kiểm tra tình trạng sức khỏe.
Chỗ đăng ký target mình sẽ chọn 3 Instance.
Nếu không có gì thay đổi hãy bấm Create target group để tạo target group nhé.
Quay lại Default action Forward to chọn my-target-group-nib-demo vừa tạo xong.
Bạn sẽ được review lại trước khi bấm Create load balancer
Load balancer DemoNLB đã được tạo và nó đang có State là provisioning, bạn cần phải chờ 1 lúc để trạng thái chuyển qua Active.
Và đây là kết quả, hãy copy domain DemoNLB-d524659522973033.elb.us-east-2.amazonaws.com và dán vào trình duyệt.
Kết quả bạn vẫn chưa thể truy cập vào nội dung của web.
Để mình hướng dẫn cho bạn sử dụng nó ở các bước tiếp theo. Đầu tiên hãy xem mình đang có 2 Load Balancer của Application Load Balancer và Network Load Balancers.
Ở my-first-target-group của Application Load Balancer mình đang có 3 Instance với trạng thái healthy mà mình đã tạo ở bài Application Load Balancer.
Còn my-target-group-nlb-demo của Network Load Balancers đang ở trạng thái unhealthy, dẫn đến bạn chưa thể truy cập được dịch vụ. Lý do là Security Groups tên launch-wizard-1 đang chứ 1 rule HTTP và chỉ cho phép duy nhất Security Groups có ID là sg013df17086f8c3779 kết nối vào.
Để giải quyết điều này chúng ta quay lại Security Groups tên launch-wizard-1.
Chúng ta thấy Inbound rules giao thức HTTP chỉ cho phép my-first-load balancer-sg truy cập vào Application Load Balancer.
Giờ chúng ta sẽ thêm 1 rule mới bằng cách nhấp vào Edit inbound rules và thêm 1 rule như dưới để cho phép tất cả các nguồn truy cập vào nó.
Và đây là rule mới sau khi thêm vào.
Quay lại Network Load Balancers và đợi 1 lát, trạng thái của Network Load Balancers sẽ chuyển sang healthy.
Hay lại trình duyệt và F5 lại nhé.