Cách cấu hình Nginx để cân bằng tải (load balancing) trên nhiều máy chủ ứng dụng

Cân bằng tải (load balancing) là một kỹ thuật quan trọng trong việc phân phối công việc và tăng cường khả năng mở rộng cho ứng dụng web. Nginx cung cấp tính năng cân bằng tải tích hợp sẵn, cho phép chúng ta phân phối lưu lượng truy cập đến nhiều máy chủ ứng dụng để đảm bảo hiệu suất và sẵn sàng cao. Trong bài viết này, chúng ta sẽ tìm hiểu cách cấu hình Nginx để cân bằng tải trên nhiều máy chủ ứng dụng.

Cân bằng tải theo Round Robin

Phương pháp cân bằng tải Round Robin phân phối lưu lượng truy cập đến các máy chủ ứng dụng theo một cách tuần tự. Mỗi yêu cầu được gửi đến một máy chủ ứng dụng khác nhau theo thứ tự, đảm bảo rằng tất cả các máy chủ được cung cấp công bằng cơ hội để xử lý yêu cầu.

Để cấu hình Nginx để cân bằng tải theo Round Robin, chúng ta cần thêm các máy chủ ứng dụng vào tệp cấu hình và sử dụng từ khóa upstream:

http {
...
upstream app_servers {
server app1.example.com;
server app2.example.com;
server app3.example.com;
}

server {
...
location / {
proxy_pass http://app_servers;
}
...
}
...
}

 

Trong ví dụ trên, chúng ta đã tạo một nhóm máy chủ ứng dụng (app_servers) trong khối upstream. Các máy chủ ứng dụng được liệt kê dưới dạng danh sách, và Nginx sẽ phân phối yêu cầu đến các máy chủ theo thứ tự. Đối với mỗi yêu cầu, Nginx sẽ chọn máy chủ tiếp theo trong danh sách để xử lý.

How to setup NGINX fastcgi cache with WordPress - Velumi

Cân bằng tải dựa trên mức độ công suất (Least Connections)

Phương pháp cân bằng tải dựa trên mức độ công suất (Least Connections) chọn máy chủ ứng dụng có ít kết nối hoạt động nhất để xử lý yêu cầu mới. Điều này đảm bảo rằng các máy chủ đang nhận được tải lớn sẽ không bị quá tải, và công việc được phân phối đồng đều.

Để cấu hình Nginx để cân bằng tải dựa trên mức độ công suất, chúng ta có thể sử dụng chỉ thị least_conn trong khối upstream:

http {
...
upstream app_servers {
least_
conn;
server app1.example.com;
server app2.example.com;
server app3.example.com;
}

server {
...
location / {
proxy_pass http://app_servers;
}
...
}
...
}

 

Trong ví dụ trên, chúng ta đã thêm chỉ thị least_conn vào nhóm máy chủ ứng dụng (app_servers). Điều này cho phép Nginx chọn máy chủ có ít kết nối hoạt động nhất để xử lý yêu cầu mới.

Geoblocking with NGINX on CentOS

Cấu hình bổ sung

Ngoài cấu hình cơ bản, chúng ta cũng có thể cấu hình các tùy chọn khác để điều chỉnh cách cân bằng tải hoạt động trong Nginx. Một số tùy chọn phổ biến bao gồm:

  • ip_hash: Phân phối yêu cầu dựa trên địa chỉ IP nguồn. Điều này đảm bảo rằng một địa chỉ IP cụ thể sẽ luôn được gửi đến cùng một máy chủ ứng dụng.
  • weight: Gán trọng số cho mỗi máy chủ ứng dụng. Máy chủ với trọng số cao sẽ nhận được nhiều yêu cầu hơn.
  • backup: Xác định máy chủ ứng dụng dự phòng, chỉ nhận yêu cầu khi tất cả các máy chủ chính không khả dụng.

Đây chỉ là một số tùy chọn cấu hình cơ bản và bạn có thể tìm hiểu thêm về các tùy chọn khác trong tài liệu Nginx chính thức.

Approov Integration With NGINX Plus

Cấu hình Nginx để cân bằng tải trên nhiều máy chủ ứng dụng là một cách hiệu quả để phân phối công việc và tăng cường khả năng mở rộng cho ứng dụng web. Trong bài viết này, chúng ta đã tìm hiểu cách cấu hình Nginx để thực hiện cân bằng tải theo phương pháp Round Robin và dựa trên mức độ công suất. Bằng cách áp dụng các phương pháp này, chúng ta có thể tối ưu hóa việc phân phối lưu lượng truy cập và đảm bảo hiệu suất cao và sẵn sàng của ứng dụng web.