0

TÌM HIỂU VỀ NGINX và CÁC THUẬT TOÁN (P2)

CẤU HÌNH NGINX LÀM LOAD BALANCING

I.Định nghĩa.

Load Balance (Cân bằng tải) là một thành phần quan trọng của cơ sở hạ tầng mạng, thường được sử dụng để cải thiện hiệu suất và độ tin cậy của các website, ứng dụng, cơ sở dữ liệu và các dịch vụ khác bằng phương pháp phân phối khối lượng công việc cho nhiều máy chủ cùng xử lí

  • Cân bằng tải là một kỹ thuật thường dùng để tối ưu hóa việc sử dụng tài nguyên , tối đa hóa thông lượng , giảm độ trễ về đảm bảo tính chịu lỗi.
  • Chúng ta có thể sử dụng nginx như là 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 mục đích cải thiện hiệu năng , khả năng mở rộng và độ tin cậy của các ứng dụng web với nginx.
  • Có rất nhiều thuật toán được xây dựng cho việc cân bằng tải, mỗi thuật toán đều có những ưu nhược điểm khác nhau, trong mỗi trường hợp sẽ có được tác dụng riêng, chúng ta cũng có thể kết hợp các thuật toán với nhau để giúp cho hệ thống của chúng ta hoạt động được tốt hơn. Tùy vào cơ sở hạ tầng và mục đích sử dụng thì chúng ta sẽ lựa chọn thuật toán phù hợp với hệ thống . Sau đây là một số thuật toán cân bằng tải.

II. Các thuật toán

  • Round Robin: Khi sử dụng thuật toán này, các request sẽ được phân phối tuần tự cho 1 nhóm server.
  • Hash: Được sử dụng trong cân bằng tải để phân phối các yêu cầu từ người dùng đến các máy chủ backend. Ý tưởng cơ bản của thuật toán hash là ánh xạ một giá trị đầu vào (ví dụ: địa chỉ IP của client) thành một giá trị hash, sau đó sử dụng giá trị hash này để xác định máy chủ backend nào sẽ xử lý yêu cầu.
  • Least Connections: Request sẽ được gửi tới server có ít kết nối nhất với client để xử lí.
  • Weighted Least Connections: Request sẽ được gửi tới server có tốc độ phản hồi response cao nhất và ít kết nối nhất.
  • IP Hash: Địa chỉ IP của client sẽ được sử dụng để nhận biết server nào sẽ nhận được request từ người dùng.

III. Mô hình và cấu hình.

image.png

1.Cài đặt các node trên Nginx

Cài đặt Nginx .

     yum install -y nginx

Khởi động Nginx và enable đồng thời cùng OS.

    systemctl start nginx
    systemctl enable nginx

Sửa file config của Nginx:

Tại khối http thêm cấu hình (Cấu hình mặc định là Round Robin)

    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

    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 2 server HTTP(Đó là 2 server WEB1,2 phía sau như mô hình).****

Cài đặt HTTP

    yum install httpd

Khởi động và enable đồng thời cùng OS.

    systemctl start httpd
	systemctl enable httpd

Cài đặt firewall cho mở port 80:

    firewall-cmd --permanent --zone=public --add-port=80/tcp 
    firewall-cmd –reload

Tạo file index.html trong thư mục** /var/www/html/ **

    <h1>Hello World! </h1>

Cấu hình file config trong /etc/httpd sau đó trỏ root vào /var/www/html/ để có thể đọc được index.html phần này là bài tập các bạn tự tìm hiểu nha!

Sau khi cấu hình thì có thể cho nginx vừa làm load balance vừa làm web server

image.png

image.png

image.png

Note: Nếu như khi bật Nginx mà bị lỗi 502(Bad Gateway) thì cần phải bật Selinux cho phép thiết lập cờ Boolean cho phép tiến trình Httpd thực hiện kết nối mạng.

    setsebool -P httpd_can_network_connect on

3. Check log để xem Load Balance theo các thuật toán.

Round Robin

image.png

Weighted Round Robin

Config:

image.png

Kiểm tra log:

image.png

Least Connections

Config:

image.png

Kiểm tra log (Vì ở đây các request được xử lý gần như ngay lập tức và các server backend xử lý như nhau nên sẽ theo thứ tự lần lượt)

image.png

IP hash.

Config:

image.png

Kiểm tra log ( vì chỉ có truy cập từ 1 ip nên chỉ vào ip 192.168.254.8 còn có 1 log 192.168.254.9 đó là mình curl từ localhost)

image.png

Hash

Config:

image.png

Kiểm tra log:

image.png

Cảm ơn các bạn đã theo dõi, chúc bạn ngày mới tốt lành và học được thật nhiều điều bổ ích! 🤩🤩😘😘


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí