本文我們繼續來介紹nginx的實際操作,本文來介紹下Nginx的負載均衡的實作。
負載均衡

大家看看上面這個負載均衡的結構圖,大家會發現其實和我們上節課講的反向代理很像是不是?真實伺服器如果有多個是不是就是我們上面的結構圖了呀?是以什麼事負載均衡呢?其實就是在反向代理的基礎上通過各種負載政策将使用者的請求轉發到對應的真實服務上。
網絡負載均衡的大緻原理是利用一定的配置設定政策将網絡負載平衡地分攤到網絡叢集的各個操作單元上,使得單個重負載任務能夠分擔到多個單元上并行處理,使得大量并發通路或資料流量分擔到多個單元上分别處理,進而減少使用者的等待響應時間
upstream是Nginx的HTTP Upstream子產品,這個子產品通過一個簡單的排程算法來實作用戶端IP到後端伺服器的負載均衡
Nginx負載均衡實戰
1.建立三個web服務
在上篇文章的基礎上我們再建立兩個服務,三個服務的端口分别是 8081 8082 8083.
2.Nginx配置
upstream塊
upstream name{…}
upstream gupao{
server 192.168.12.1:8081;
server 192.168.12.1:8082;
server 192.168.12.1:8083;
}
server {
location / {
proxy_pass http://gupao;
}
}
server塊
文法:
server address [parameters]
組成 | 說明 |
server | 必選 |
address | 必選 可以是主機名、域名、ip,也可以指定端口号 |
parameters | 可選 down:表示目前server已停用 backup:表示目前server是備用伺服器,隻有其它非backup後端伺服器都挂掉了或者很忙才會配置設定到請求 weight:表示目前server負載權重,權重越大被請求幾率越大。預設是1 max_fails和fail_timeout一般會關聯使用,如果某台server在fail_timeout時間内出現了max_fails次連接配接失敗,那麼Nginx會認為其已經挂掉了,進而在fail_timeout時間内不再去請求它,fail_timeout預設是10s,max_fails預設是1,即預設情況是隻要發生錯誤就認為伺服器挂掉了,如果将max_fails設定為0,則表示取消這項檢查。 |
Upstream子產品排程算法
1.輪詢(預設): 每個請求按時間順序逐一配置設定到不同的後端伺服器,如果後端伺服器down掉,能自動剔除
2.Ip_hash: 每個請求按通路ip的hash結果配置設定,這樣每個訪客固定通路一個後端伺服器,可以解決session的問題
3.權重:即可以指定輪詢比率,weight和通路幾率成正比,主要應用于後端伺服器異質的場景下
4.響應時間:公平地按照伺服器的響應時間來配置設定請求,意味着後端響應時間最短的優先配置設定
檢查配置檔案提示無法識别 fair 這是因為 fair屬于第三方子產品,官方安裝包中并沒有。
https://github.com/gnosek/nginx-upstream-fair 官方下載下傳
然後解壓縮
unzip nginx-upstream-fair-master.zip
未安裝Nginx
切換到Nginx目錄執行一下操作
配置:
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --add-module=/home/nginx-upstream-fair-master
編譯安裝
make && make intstall
安裝過Nginx
切換到Nginx目錄執行一下操作
配置
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --add-module=/home/nginx-upstream-fair-master
編譯
make
複制Nginx
cp objs/nginx /usr/local/nginx/nginx