實現負載均衡
開啟兩個伺服器,nginx負責分發請求到兩個伺服器,以減輕單個伺服器負擔。
配置uwsgi伺服器
在a專案目錄下生成uwsgi.ini檔案,在b專案目錄下生成uwsgi.ini檔案,如何寫可以檢視上一篇文章 www.cnblogs.com/pyweb/p/120…
兩個專案不同點是埠不同。
後臺啟動uwsgi伺服器
nohup uwsgi --ini uwsgi_a.ini &
nohup uwsgi --ini uwsgi_b.ini &複製程式碼
配置nginx配置檔案
vim /etc/nginx/nginx.conf
http {
upstream flasktest {
server 127.0.0.1:82; # 配置多個伺服器
server 127.0.0.1:83;
}
server {
listen 0.0.0.0:81;
server_name www.flasktest.com;
charset UTF-8;
access_log /etc/nginx/FlaskTest_access.log;
error_log /etc/nginx/FlaskTest_error.log;
client_max_body_size 75M;
location / {
include uwsgi_params;
# uwsgi_pass 127.0.0.1:82;
uwsgi_pass flasktest; # 使用上面的flasktest進行匹配,表示81埠同時監聽82,83埠
uwsgi_read_timeout 2;
}
}複製程式碼
分發規則(輪詢,ip_hash, fair, url_hash)
# 輪詢,指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。如下所示,83的訪問比率要比82的訪問比率高一倍。
upstream linuxidc{
server 127.0.0.1:82 weight=5;
server 127.0.0.1:83 weight=10;
}# ip_hash, 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題。複製程式碼
upstream linuxidc{ ip_hash;
server 127.0.0.1:82;
server 127.0.0.1:83;
}# fair, 按後端伺服器的響應時間來分配請求,響應時間短的優先分配。與weight分配策略類似。複製程式碼
upstream linuxidc{
server 127.0.0.1:82;
server 127.0.0.1:83; fair;
}複製程式碼
# url_hash, 按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為快取時比較有效。# 注意:在upstream中加入hash語句,server語句中不能寫入weight等其他的引數,hash_method是使用的hash演算法。複製程式碼
複製程式碼
upstream linuxidc{
server 127.0.0.1:82;
server 127.0.0.1:83; hash $request_uri; hash_method crc32;
}複製程式碼
複製程式碼
其他
upstream還可以為每個裝置設定狀態值,這些狀態值的含義分別如下:
down: 表示單前的server暫時不參與負載.
weight: 預設為1.weight越大,負載的權重就越大。
max_fails:允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤.
fail_timeout :max_fails次失敗後,暫停的時間。
backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。
upstream bakend{ #定義負載均衡裝置的Ip及裝置狀態
ip_hash;
server 10.0.0.11:9090 down;
server 10.0.0.11:8080 weight=2 max_fails=1 fail_timeout=1s;
server 10.0.0.11:6060 max_fails=1 fail_timeout=1s;
server 10.0.0.11:7070 backup;
}複製程式碼