1. 程式人生 > >nginx實現叢集伺服器的負載均衡

nginx實現叢集伺服器的負載均衡

nginx 是一個很強大的高效能Web和反向代理伺服器。這裡主要使用的就是nginx的反向代理功能。
反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。《nginx百度百科》

伺服器叢集:是指將很多伺服器集中起來一起進行同一種服務,在客戶端看來就是隻有一個伺服器。叢集可以利用多個計算機進行平行計算從而獲得很高的計算速度,也可以用多個計算機做備份,從而使得任何一個機器壞了整個系統還是能正常執行。

均衡負載:對於叢集來說,負載均衡意味著當方向代理服務nginx接受到使用者發起的請求之後,會把請求按照配置的分配方式讓各個伺服器攤分任務,以此來減少伺服器的壓力,提高效能。

下載安裝

百度nginx下載後解壓,啟動後訪問127.0.0.1如果出現如下頁面,就說明nginx啟動成功
這裡寫圖片描述

配置

進入nginx\conf目錄,編輯nginx.conf,在#gzip on;這一行下開始配置

upstream  xu {   
    server    127.0.0.1:8080; 
    server    127.0.0.1:8090;  
} 

server {
        listen       80
; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; proxy_pass http://xu; index index.html index.htm; } ... }

配置兩個地方,第一個是upstream,另一個是proxy_pass http:// xxx


注意upstream 後面的名字需要和server中的location下的proxy_paxx http:// 後的內容相同

訪問

因為配置的是listen 80; 所以在進行訪問的時候直接訪問的是80埠,如果你訪問時帶上了tomcat啟動時的埠將得不到你想要的效果

等待響應時間配置

在location中進行引數配置

proxy_connect_timeout:與伺服器連線的超時時間,預設60s
fail_timeout:當該時間內伺服器沒響應,則認為伺服器失效,預設10s
max_fails:允許連線失敗次數,預設為1

等待時間 = proxy_connect_timeout + fail_timeout * max_fails

負載均衡策略

1.輪詢
這種是預設的策略,把每個請求按順序逐一分配到不同的server

upstream  xu {   
    server    127.0.0.1:8080; 
    server    127.0.0.1:8090;  
} 

2.最少連線
把請求分配到連線數最少的server

upstream  xu {
    least_conn;
    server    127.0.0.1:8080; 
    server    127.0.0.1:8090;  
} 

3.權重
使用weight來指定server訪問比率,weight預設是1。

upstream  xu {   
    server    127.0.0.1:8080 weight=1; 
    server    127.0.0.1:8090 weight=2;  
}

4.ip_hash
每個請求會按照訪問ip的hash值分配,這樣同一客戶端連續的Web請求都會被分發到同一server進行處理,可以解決session的問題。

upstream  xu {
    ip_hash;
    server    127.0.0.1:8080; 
    server    127.0.0.1:8090;  
}

ip_hash可以和weight結合使用。

參考