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.
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
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
Weighted Round Robin
Config:
Kiểm tra log:
Least Connections
Config:
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)
IP hash.
Config:
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)
Hash
Config:
Kiểm tra log:
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