nginx的負載均衡
Nginx的語法:
syntax:upstreamname{...}
default:—
context:http
Upstream對負載均衡的定義
Name標記爲備份服務器
Definesagroupofservers.Serverscanlistenondifferentports.Inaddition,serverslisteningonTCPandUNIX-domainsocketscanbemixed.
Example:
upstreambackend{
serverbackend1.example.comweight=5;
server127.0.0.1:8080max_fails=3fail_timeout=30s;
serverunix:/tmp/backend3;
}
ExampleConfiguration
upstreambackend{
serverbackend1.example.comweight=5;
serverbackend2.example.com:8080;
serverunix:/tmp/backend3;
serverbackup1.example.com:8080backup;
serverbackup2.example.com:8080backup;
}
server{
location/{
proxy_passhttp://backend;
}
}
weight=number
設定服務器的權重,默認是1。
max_fails=number
設定Nginx與服務器通信的嘗試失敗的次數。在fail_timeout參數定義的時間段內,如果失敗的次數達到此值,Nginx就認爲服務器不可用。在下一個fail_timeout時間段,服務器不會再被嘗試。失敗的嘗試次數默認是1。設爲0就會停止統計嘗試次數,認爲服務器是一直可用的。你可以通過指令proxy_next_upstream、fastcgi_next_upstream和memcached_next_upstream來配置什麼是失敗的嘗試。默認配置時,http_404狀態不被認爲是失敗的嘗試。
fail_timeout=time
設定
統計失敗嘗試次數的時間段。在這段時間中,服務器失敗次數達到指定的嘗試次數,服務器就被認爲不可用。
服務器被認爲不可用的時間段。
默認情況下,該超時時間是10秒。
backup
標記爲備用服務器。當主服務器不可用以後,請求會被傳給這些服務器。
舉例:
Nginx作爲代理服務器,爲後方的兩臺apache服務器負載均衡,它的的前端ip地址是192.168.20.200後端ip地址192.168.30.200,server1爲apache服務器ip地址爲192.168.30.100它的權重爲1,。Server2爲apache服務器它的ip地址爲192,.168.30.101,權重爲2.
upstreambackend{
server192.168.30.100weight=1;
server192.168.30.101weight=2;
}
server{
location/{
proxy_passhttp://backend;
}
}
如圖所示:
Server1的站點主目錄下的inndex.php的內容是myweight=1
Server2的站點主目錄下的inndex.php的內容是myweight=2
當訪問nginx的前端地址192.168.20.200,將會被代理到server1和server2,server的權重是1,所以當用戶第一次請求連接nginx時,顯示的頁面將是sever1站點主目錄下首頁的內容。Server2的權重是2,當用戶第二和第三次請求連接nginx時,顯示的頁面將是sever,2站點主目錄下首頁的內容。