nginx的負載均衡如何配置?
nginx負載均衡用于從“upstream”模塊定義的后端服務器列表中選取一臺服務器接受用戶的請求。一個最基本的upstream模塊是這樣的,模塊內的server是服務器列表:
#動態服務器組
upstream dynamic_zuoyu {
server localhost:8080; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083; #tomcat 9.0
}
upstream 支持4種負載均衡調度算法:
A):每個請求按時間順序逐一分配到不同的后端服務器;
B):每個請求按訪問IP的hash結果分配,同一個IP客戶端固定訪問一個后端服務器。可以保證來自同一ip的請求被打到固定的機器上,可以解決session問題。
C):按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器。后臺服務器為緩存的時候效率。
D):這是比上面兩個更加智能的負載均衡算法。此種算法可以依據頁面大小和加載時間長短智能地進行負載均衡,也就是根據后端服務器的響應時間來分配請求,響應時間短的優先分配。本身是不支持 的,如果需要使用這種調度算法,必須下載Nginx的 模塊。
輪詢:
打開 nginx 配置文件
[root@master ~]# vi /etc/nginx/conf.d/default.conf
寫輪訓配置
#設定負載均衡服務器列表upstream roundrobin { #后端服務器訪問規則 server 192.168.1.115:8080 weight=1; #server1 server 192.168.1.131:8081 weight=1; #server1 server 192.168.1.94:8090 weight=1; #server3}server { listen 80; server_name 192.168.1.131; location / { proxy_pass http://roundrobin; } }
配置完成后
//檢查 nginx 配置是否正確nginx -t //重新加載 nginx 配置service nginx reload
當訪問 的時候,會把這個請求負載到 的 端口、 的 端口、 的 端口。負載的權重由 weight 來決定,默認為 1 ,weight 越大,權重就越大。
IP_hash:
#設定負載均衡服務器列表upstream roundrobin { #后端服務器訪問規則 ip_hash; #添加參數支持哈希 server 192.168.1.115:8080 weight=1; #server1 server 192.168.1.131:8080 weight=1; #server1 server 192.168.1.94:8090 weight=1; #server3 } server { listen 80; server_name 192.168.1.131; location / { proxy_pass http://roundrobin; } }
down,表示當前的server暫時不參與負載均衡。backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因 此這臺機器的壓力最輕。#設定負載均衡服務器列表upstream roundrobin { #后端服務器訪問規則 server 192.168.1.115:8080 weight=1; #server1 server 192.168.1.131:8080 down; #server2 不參與負載 server 192.168.1.94:8090 backup; #server3 備份機 }server { listen 80; server_name 192.168.1.131; location / { proxy_pass http://roundrobin; } }