上一篇文章中我們通過反向署理了后端一臺處事器,但跟著網站會見的人越來越多一臺處事器實在是頂不住,于是我們加了多臺處事器,那么多臺處事器又怎么設置署理呢?
upstream test.com{
# ip_hash;
server 192.168.10.13:80;
server 192.168.10.14:80 down;
server 192.168.10.15:8009 max_fails=3 fail_timeout=20s;
server 192.168.10.16:8080;
}
server {
location / {
proxy_pass http://test.com;
}
}
實際上負載平衡也是通過反向署理的方法,可是proxy_pass只能寫一個地點,所以我們把某些地點通過upstream作為一個薈萃來做反向署理就實現了負載平衡;
upstream 負載平衡模塊說明upstream是Nginx的HTTP Upstream模塊,這個模塊通過一個簡樸的調治算法來實現客戶端IP到后端處事器的負載平衡。在上面的設定中,通過upstream指令指定了一個負載平衡器的名稱test.com。這個名稱可以任意指定,在后頭需要用到的處所直接挪用即可。
支持的負載平衡算法Nginx的負載平衡模塊今朝支持4種調治算法,下面舉辦別離先容,個中后兩項屬于第三方調治算法。
輪詢(默認)。每個請求定時間順序逐一分派到差異的后端處事器,假如后端某臺處事器宕機,妨礙系統被自動剔除,利用戶會見不受影響。Weight 指定輪詢權值,Weight值越大,分派到的會識趣率越高,主要用于后端每個處事器機能不均的環境下。
ip_hash。每個請求按會見IP的hash功效分派,這樣來自同一個IP的訪客牢靠會見一個后端處事器,有效辦理了動態網頁存在的session共享問題。
fair。這是比上面兩個越發智能的負載平衡算法。此種算法可以依據頁面巨細和加載時間是非智能地舉辦負載平衡,也就是按照后端處事器的響應時間來分派請求,響應時間短的優先分派。Nginx自己是不支持fair的,九江服務器 東莞服務器,假如需要利用這種調治算法,必需下載Nginx的upstream_fair模塊。
url_hash。此要領按會見url的hash功效來分派請求,使每個url定向到同一個后端處事器,可以進一步提高后端緩存處事器的效率。Nginx自己是不支持url_hash的,假如需要利用這種調治算法,必需安裝Nginx的hash軟件包
支持的狀態參數在HTTP Upstream模塊中,可以通過server指令指定后端處事器的IP地點和端口,同時還可以設定每個后端處事器在負載平衡調治中的狀態。常用的狀態有:
down,暗示當前的server臨時不參加負載平衡。
backup,預留的備份呆板。當其他所有的非backup呆板呈現妨礙可能忙的時候,才會請求backup呆板,因此這臺呆板的壓力最輕。
max_fails,答允請求失敗的次數,默認為1。當高出最大次數時,返回proxy_next_upstream 模塊界說的錯誤。
fail_timeout,在經驗了max_fails次失敗后,暫停處事的時間。max_fails可以和fail_timeout一起利用。
注,當負載調治算法為ip_hash時,后端處事器在負載平衡調治中的狀態不能是weight和backup。
設置負載平衡
upstream webservers {
server 192.168.18.201 weight=1;
server 192.168.18.202 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://webservers;
proxy_set_header X-Real-IP $remote_addr;
}
}
注,upstream是界說在server{ }之外的,不能界說在server{
}內部。界說好upstream之后,用proxy_pass引用一下即可。
假如界說在server內部就會報錯:
"upstream" directive is not allowed here in xxxxxx
重啟今后不絕刷新208就會發明,是201和202的內容瓜代呈現,然后別離查察其日志,到達了負載平衡輪詢的結果;