使用Nginx實現網站負載均衡的配置方法介紹
1.準備工作
結合本文場景,需要安裝Nginx和PHP環境
1.1 Linux系統安裝Nginx
1.2 準備三臺服務器
服務器ip分別是:
http://20.20.24.10/ —主服務器
http://20.20.24.11:8080/ —從服務器
http://20.20.24.12:8080/ —從服務器
保證每臺服務器可以正常訪問,關閉防火牆和selinux
setenforce 0
service iptables stop
也可以開啓防火牆,設置ip互相訪問
配置不同的web頁面,用於區分是否實現負載均衡,如 :
http://20.20.24.11:8080/ —從服務器 顯示頁面如下:
http://20.20.24.12:8080/ —從服務器 顯示頁面如下:
1.3配置主服務器nginx訪問路徑
//在http節點下,加入upstream節點,配置代理多臺服務器
upstream slbserver {
server 20.20.24.11:8080;
server 20.20.24.12:8080;
}
server {
listen 80;
server_name localhost;
error_log /var/log/nginx/localhost-error.log;
rewrite_log on;
#access_log logs/host.access.log main;
root /usr/local/nginx/html;
//將server節點下的location節點中的proxy_pass配置爲:http:// + upstream名稱,如下:
location / {
proxy_pass http://slbserver;
}
location = /50x.html {
root html;
}
location ~ \.php$ {
root /usr/local/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param LOCAL_ENV "localhost";
include fastcgi_params;
}
配置完畢,保存,重啓nginx配置生效
service nginx reload
1.4訪問主服務器
打開網頁瀏覽:http://20.20.24.10/
第一次看到的是http://20.20.24.11:8080/ 從服務器的頁面
再次刷新看到的是http://20.20.24.12:8080/ 從服務器的頁面
快速刷新,可以看到頁面之間的轉換,至此實現nginx負載均衡
2.Nginx負載均衡的幾種不同方式介紹
2.1 輪詢
輪詢方式是Nginx負載默認的方式,顧名思義,所有請求都按照時間順序分配到不同的服務上,如果服務Down掉,可以自動剔除,如下配置後輪訓20.20.24.11服務和20.20.24.12服務
upstream slbserver {
server 20.20.24.11:8080;
server 20.20.24.12:8080;
}
2.2 權重
指定每個服務的權重比例,weight和訪問比率成正比,通常用於後端服務機器性能不統一,將性能好的分配權重高來發揮服務器最大性能,如下配置後20.20.24.12服務的訪問比率會是20.20.24.11服務的二倍。
upstream slbserver {
server 20.20.24.11:8080 weight=1;
server 20.20.24.12:8080 weight=2;
}
再次訪問主服務器,則會發現12的頻率要比11的高兩倍
2.3 iphash
每個請求都根據訪問ip的hash結果分配,經過這樣的處理,每個訪客固定訪問一個後端服務,如下配置(ip_hash可以和weight配合使用)
upstream slbserver {
ip_hash;
server 20.20.24.11:8080 weight=1;
server 20.20.24.12:8080 weight=2;
}
配置之後,在訪問主服務器時,發現當前IP地址固定訪問了12從服務器的頁面,不會再跳轉到11從服務器的頁面
2.4 最少連接
將請求分配到連接數最少的服務上
upstream slbserver {
least_conn;
server 20.20.24.11:8080 weight=1;
server 20.20.24.12:8080 weight=2;
}
2.5 fair服務器的響應時間來分配
按後端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream slbserver {
fair;
server 20.20.24.11:8080 weight=1;
server 20.20.24.12:8080 weight=2;
}
若是未安裝upstream-fair 插件,重啓nginx會報錯,需要先安裝之後再使用
3.Nginx配置
以輪循爲例,如下是nginx.conf完整代碼
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream slbserver {
server 20.20.24.11:8080;
server 20.20.24.12:8080;
}
server {
listen 10000;
server_name localhost;
location / {
proxy_pass http://slbserver ;
proxy_redirect default;
}
}
}
如果要修改負載均衡算法修改對應upstream模塊即可