0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Khám Phá NGINX và Các Thuật Toán Cân Bằng Tải (Phần 2)

Đăng vào 1 tháng trước

• 3 phút đọc

Tìm Hiểu Về Cấu Hình NGINX Làm Cân Bằng Tải

I. Định Nghĩa Cân Bằng Tải

Cân bằng tải (Load Balance) là một thành phần thiết yếu trong hạ tầng mạng, giúp cải thiện hiệu suất và độ tin cậy của trang web, ứng dụng, cơ sở dữ liệu và các dịch vụ khác bằng cách phân phối khối lượng công việc giữa nhiều máy chủ xử lý.

  • Cân bằng tải là kỹ thuật tối ưu hóa việc sử dụng tài nguyên, tối đa hóa băng thông, giảm độ trễ và đảm bảo tính chịu lỗi.
  • NGINX có thể được sử dụng như một bộ cân bằng tải để phân phối lưu lượng truy cập đến các máy chủ nhằm nâng cao hiệu suất, khả năng mở rộng và độ tin cậy của các ứng dụng web.
  • Nhiều thuật toán cân bằng tải đã được phát triển, mỗi thuật toán có những ưu, nhược điểm riêng. Việc lựa chọn thuật toán phụ thuộc vào cơ sở hạ tầng và mục đích sử dụng của hệ thống. Dưới đây là một số thuật toán phổ biến trong cân bằng tải.

II. Các Thuật Toán Cân Bằng Tải

  1. Round Robin: Phân phối các yêu cầu theo thứ tự cho một nhóm máy chủ.
  2. Hash: Phân phối yêu cầu từ người dùng đến máy chủ backend dựa trên giá trị băm của địa chỉ IP của client.
  3. Least Connections: Gửi yêu cầu tới máy chủ có ít kết nối nhất với client.
  4. Weighted Least Connections: Gửi yêu cầu tới máy chủ có tốc độ phản hồi nhanh nhất và ít kết nối nhất.
  5. IP Hash: Sử dụng địa chỉ IP của client để xác định máy chủ nhận yêu cầu.

III. Mô Hình Và Cấu Hình NGINX

1. Cài Đặt Các Node Trên NGINX

  • Cài đặt NGINX:
    Copy
    yum install -y nginx
  • Khởi động NGINX và tự động khởi động cùng hệ điều hành:
    Copy
    systemctl start nginx
    systemctl enable nginx
  • Chỉnh sửa file cấu hình NGINX:
    Tại khối http, thêm cấu hình (nghĩa là thuật toán mặc định là Round Robin):
    Copy
    upstream backends {
        server 192.168.254.9:80;
        server 192.168.254.10:80;
    }
  • Tại khối Server, thêm đoạn cấu hình sau:
    Copy
    server {
        listen 80;
        server_name _;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        location / {
            proxy_pass http://backends;
        }
    }

2. Cài Đặt Các Gói Trên Hai Máy Chủ HTTP (WEB1, WEB2)

  • Cài đặt HTTP:
    Copy
    yum install httpd
  • Khởi động HTTP và tự động khởi động cùng hệ điều hành:
    Copy
    systemctl start httpd
    systemctl enable httpd
  • Mở cổng 80 trong firewall:
    Copy
    firewall-cmd --permanent --zone=public --add-port=80/tcp 
    firewall-cmd --reload
  • Tạo file index.html trong thư mục /var/www/html/:
    Copy
    <h1>Hello World!</h1>
  • Cấu hình file trong /etc/httpd, trỏ root vào /var/www/html/ để có thể đọc được index.html. Cách thực hiện này là bài tập cho bạn tự khám phá!

Nếu gặp lỗi 502 (Bad Gateway) khi khởi động NGINX, bạn cần bật Selinux bằng cách thiết lập cờ Boolean cho phép tiến trình HTTPd thực hiện kết nối mạng:

bash Copy
setsebool -P httpd_can_network_connect on

3. Kiểm Tra Log Để Theo Dõi Cân Bằng Tải Theo Các Thuật Toán

  • Round Robin: Theo dõi log để xác nhận thao tác của thuật toán này.
  • Weighted Round Robin: Kiểm tra log yêu cầu tương tự.
  • Least Connections: Do các yêu cầu được xử lý ngay lập tức, log sẽ có dạng theo thứ tự lần lượt.
  • IP Hash: Log cho thấy yêu cầu từ một IP cụ thể.
  • Hash: Xem xét log để kiểm tra thao tác của thuật toán này.

Kết Luận

Cảm ơn bạn đã theo dõi bài viết. Chúc bạn một ngày mới tốt lành và học được nhiều điều bổ ích!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào