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結合使用。