Cân bằng tải Website với Nginx
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
Request tỉ lệ 2:1 ( 2 IIS 1 Apache)
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