Cân bằng tải Website với Nginx

Tác giả: 03/01/2023

Giới thiệu

Đối với một trang web mà hàng ngày có lưu lượng truy cập lớn chúng ta cần tính đến giải pháp chịu tải cho máy chủ.

Có rất nhiều phương pháp cân bằng tải ( tính trong phạm vi hệ thống trung bình)

  • LoadBalancing Network nhiều đường mạng
  • LoadBalancing máy chủ.

Cân bằng tải sử dụng máy chủ ngày càng phổ biến do chi phí rẻ, mã nguồn mở không mất licence chi trả hàng năm.

Nhân Hòa sẽ giới thiệu cho các bạn mô hình cân bằng tải website sử dụng Nginx như một reverse proxy  server kèm chức năng cân bằng tải.

Demo triển khai

Với mô hình này toàn bộ các máy chủ chạy webserver sẽ được ẩn đằng sau proxy server, giảm tải được các nguy cơ lỗ hổng bảo mật.

Proxy  frontend server sẽ nhận toàn bộ request, tùy vào chia tải mà phân phối request đến 2 backend server.Mục đích của bài viết là tính năng cân bằng tải, nên với 2 server chạy web trên window và linux mình sẽ chỉ cài web tĩnh.

  • Tên miền tudv.xyz trỏ về proxy server 45.117.82.131 + 10.10.10.11
  • Máy chủ 1 chạy iis với website tudv.xyz có IP 10.10.10.10 , chạy web tĩnh chỉ 1 file index.html
  • Máy chủ 2 chạy apache với website tudv.xyz có IP 10.10.10.14 chạy web tĩnh chỉ 1 file index.html

 

Cấu hình

1-Cấu hình máy chủ Apache có 10.10.10.14 với site  tĩnh index.html  

Update Os + cài httpd

yum update -y
yum install httpd -y 

Tạo 1 file index.html trong /var/www/html

vi /var/www/html/index.html

Tạo file config website tudv.xyz

vi /etc/httpd/conf.d/tudv.xyz.conf

Thêm vào file cấu hình

<VirtualHost *:80>
     DocumentRoot /var/www/html/
     ServerName www.tudv.xyz
     ServerAlias tudv.xyz
     ErrorLog /var/www/html/error.log
     CustomLog /var/www/html/requests.log common
</VirtualHost>

Khởi động httpd cùng hệ thống và restart httpd

systemctl enable httpd

service httpd restart

Kiểm tra

2- Cấu hình website trên 10.10.10.10 chạy IIS với 1 file index.html 

Stop default website và thêm site tudv.xyz

 

3-Cấu hình Nginx

Update thư viện và cài nginx

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

yum --enablerepo=epel  install nginx -y

Sửa file cấu hình nginx

vi /etc/nginx/nginx.conf

 

Biến backend là biến cho 2 máy chủ, ở đây mình cũng set trọng số 1:1, cứ 2 request thì 1 request đẩy vào 10.10.10.10 và 1 request đẩy vào 10.10.10.14

upstream backends {
server 10.10.10.10:80;
server 10.10.10.14:80;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.tudv.xyz;

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;
}
}
}

Restart nginx và khởi động cùng hệ thống

service nginx restart
systemctl enable nginx

Kiểm tra

Ping

Request tỉ lệ 1:1

via GIPHY


Request tỉ lệ 2:1 ( 2 IIS 1 Apache)

 

via GIPHY

Tổng Kết
Như vậy Nhân Hòa đã giới thiệu với các bạn mô hình cân bằng tải đơn giản là sử dụng máy chủ.

Chúc các bạn thực hiện thành công và hẹn gặp lại các bạn tại các bài viết sau tại wiki.nhanhoa.com

Trả lời