轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/80541464 本文出自 "【趙彥軍的博客】" 4 種負載均衡演算法 upstream 支持4種負載均衡調度演算法: A) :每個請求按時間順序逐一分配到不同的後端伺服器; B) :每個請 ...
轉載請標明出處: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.115
的 8080
埠、192.168.1.115
的 8080
埠、192.168.1.115
的 8080
埠。負載的權重由 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;
}
}
參考文檔
個人微信號:zhaoyanjun125 , 歡迎關註