
負載均衡簡介:
負載均衡是由多臺服務器以對稱的方式組成一個服務器集合,每臺服務器都具有等價的地位,都可以單獨對外提供服務而無須其他服務器的輔助,其作業模式為將外部發送來的請求均勻分配到對稱結構中的某一臺服務器上,而接收到請求的服務器獨立地回應客戶的請求,均衡負載能夠平均分配客戶請求到服務器列陣,基于此提供快速獲取重要資料,解決大量并發訪問服務問題,
負載均衡作用:
1、轉發功能
按照一定的演算法【權重、輪詢】,將客戶端請求轉發到不同應用服務器上,減輕單個服務器壓力,提高系統并發量,
2、故障移除
通過心跳檢測的方式,判斷應用服務器當前是否可以正常作業,如果服務器期宕掉,自動將請求發送到其他應用服務器,
3、恢復添加
如檢測到發生故障的應用服務器恢復作業,自動將其添加到處理用戶請求隊伍中,
一、環境
server1,安裝nginx、tomcat
server2,安裝tomcat
二、nginx配置
upstream backend {
server 192.168.60.233 weight=1;
server 192.168.40.215 weight=2;
}
server {
listen 80;
listen [::]:80;
server_name 127.0.0.1;
root /usr/share/nginx/html;
location / {
proxy_pass http://backend;
proxy_redirect default;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
三、測驗


重繪頁面發現頁面會發生變化,證明負載配置成功,因為我配的權重第二個是第一個的兩倍,所以第二個出現的概率會是第一個的兩倍,
四、后續問題
如果關了60.233的tomcat,再多次重繪頁面,接下來出現的就會都是40.215tomcat的頁面,但是時而快時而慢,這其中原因是當如果nginx將請求轉發到40.215時,服務器會馬上跳轉成功,但是如果是轉到60.233,因為60.233的tomcat已經關閉了,所以會出現一段等待回應程序的程序,要等它失敗后才會轉到40.215的tomcat,
而這個等待回應的時間我們是可以配置的,
這個時間由以下3個引數控制:
proxy_connect_timeout:與服務器連接的超時時間,默認60s
fail_timeout:當該時間內服務器沒回應,則認為服務器失效,默認10s
max_fails:允許連接失敗次數,默認為1
等待時間 = proxy_connect_timeout + fail_timeout * max_fails
upstream backend {
server 192.168.60.233 weight=1 fail_timeout=2s max_fails=2;
server 192.168.40.215 weight=2 fail_timeout=2s max_fails=2;
}
server {
listen 80;
listen [::]:80;
server_name 127.0.0.1;
root /usr/share/nginx/html;
location / {
proxy_pass http://backend;
proxy_redirect default;
proxy_connect_timeout 2s;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
如圖,proxy_connect_timeout + fail_timeout * max_fails只需要等待6s,
五、負載均衡策略
1、輪詢
這種是默認的策略,把每個請求按順序逐一分配到不同的server,如果server掛掉,能自動剔除,
upstream backend {
server 192.168.60.233;
server 192.168.40.215;
}
2、最少連接
把請求分配到連接數最少的server
upstream fengzp.com {
least_conn;
server 192.168.60.233;
server 192.168.40.215;
}
3、權重
weight指定server訪問比率,weight默認是1,以下配置會是server2訪問的比例是server1的兩倍,
upstream backend {
server 192.168.60.233 weight=1;
server 192.168.40.215 weight=2;
}
4、ip_hash
每個請求會按照訪問ip的hash值分配,這樣同一客戶端連續的Web請求都會被分發到同一server進行處理,可以解決session的問題,如果server掛掉,能自動剔除,
upstream fengzp.com {
ip_hash;
server 192.168.60.233;
server 192.168.40.215;
}
ip_hash可以和weight結合使用
埠號我隱藏掉了,打架測驗的時候可以加上!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/304494.html
標籤:其他
上一篇:TCP/IP協議
下一篇:局域網傳輸檔案的幾種方法盤點
