背景知識
內(nèi)容來源自:https://blog.csdn.net/crazymakercircle/article/details/124009218
Nginx的upstream目前支持以下幾種方式的分配:
1屿愚、輪詢(默認(rèn))
每個請求按時間順序逐一分配到不同的后端服務(wù)器妆距,如果后端服務(wù)器down掉函匕,能自動剔除。
2中剩、weight
指定輪詢幾率,weight和訪問比率成正比结啼,用于后端服務(wù)器性能不均的情況郊愧。
2、ip_hash
每個請求按訪問ip的hash結(jié)果分配属铁,這樣每個訪客固定訪問一個后端服務(wù)器焦蘑,可以解決session的問題。
3坟乾、fair(第三方)
按后端服務(wù)器的響應(yīng)時間來分配請求蝶防,響應(yīng)時間短的優(yōu)先分配。
4间学、url_hash(第三方)
按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器详羡,后端服務(wù)器為緩存時比較有效嘿悬。
舉例
http {
upstream www.test1.com {
ip_hash;
server 172.16.125.76:8066 weight=10;
server 172.16.125.76:8077 down;
server 172.16.0.18:8066 max_fails=3 fail_timeout=30s;
server 172.16.0.18:8077 backup;
}
}
案例分析
已知:
- 預(yù)計(jì)部署兩個ws服務(wù)器善涨,一個在192.168.0.10:8054,192.168.0.11:8054
- 對外使用wss://www.test.com訪問ws
- 使用Nginx做負(fù)載均衡蟹漓,用輪詢模式
nginx的配置方式:
http {
upstream test_com {
server 192.168.0.10:8054;
server 192.168.0.11:8054;
}
server {
listen 443;
server_name www.test.com;
location /{
proxy_pass http://test_com;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
keepalive_timeout 120s; #客戶端鏈接超時時間葡粒。為0的時候禁用長連接。
#在一個長連接上可以服務(wù)的最大請求數(shù)目伯铣。
keepalive_requests 10000; #當(dāng)達(dá)到最大請求數(shù)目且所有已有請求結(jié)束后轮纫,連接被關(guān)閉。默認(rèn)值為100
}
}
關(guān)于反向代理的配置:
https://blog.51cto.com/lookingdream/2487955