Nginx 負載均衡4種模式


轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/80541464
本文出自【趙彥軍的博客】

4 種負載均衡算法

upstream 支持4種負載均衡調度算法:

A)輪詢(默認):每個請求按時間順序逐一分配到不同的后端服務器;

B)ip_hash:每個請求按訪問IP的hash結果分配,同一個IP客戶端固定訪問一個后端服務器。可以保證來自同一ip的請求被打到固定的機器上,可以解決session問題。

C)url_hash:按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器。后台服務器為緩存的時候效率。

D)fair:這是比上面兩個更加智能的負載均衡算法。此種算法可以依據頁面大小和加載時間長短智能地進行負載均衡,也就是根據后端服務器的響應時間來分配請求,響應時間短的優先分配。Nginx本身是不支持 fair的,如果需要使用這種調度算法,必須下載Nginx的 upstream_fair模塊。

1、默認輪訓

打開 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 

當訪問 http://192.168.131 的時候,會把這個請求負載到 192.168.1.1158080 端口、192.168.1.1158080 端口、192.168.1.1158080 端口。負載的權重由 weight 來決定,默認為 1 ,weight 越大,權重就越大。

2、基於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機器,因 此這台機器的壓力最輕。

注意:backup不能和ip_hash同時配置。因為ip_hash只能訪問同一台服務器,而backup是在只有所有參與 負載均衡的服務器出現故障時,才會請求備份機。當所有負載均衡的服務器出現故障了,ip_hash的將無法 請求了。

#設定負載均衡服務器列表
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;
        }
}

參考文檔

nginx四種調度算法、進階


個人微信號:zhaoyanjun125 , 歡迎關注


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM