天天看點

Nginx實戰應用-負載均衡

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

負載均衡

Nginx實戰應用-負載均衡

  大家看看上面這個負載均衡的結構圖,大家會發現其實和我們上節課講的反向代理很像是不是?真實伺服器如果有多個是不是就是我們上面的結構圖了呀?是以什麼事負載均衡呢?其實就是在反向代理的基礎上通過各種負載政策将使用者的請求轉發到對應的真實服務上。

網絡負載均衡的大緻原理是利用一定的配置設定政策将網絡負載平衡地分攤到網絡叢集的各個操作單元上,使得單個重負載任務能夠分擔到多個單元上并行處理,使得大量并發通路或資料流量分擔到多個單元上分别處理,進而減少使用者的等待響應時間

upstream是Nginx的HTTP Upstream子產品,這個子產品通過一個簡單的排程算法來實作用戶端IP到後端伺服器的負載均衡

Nginx負載均衡實戰

1.建立三個web服務

  在上篇文章的基礎上我們再建立兩個服務,三個服務的端口分别是 8081 8082 8083.

Nginx實戰應用-負載均衡

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,則表示取消這項檢查。

Nginx實戰應用-負載均衡

Upstream子產品排程算法

1.輪詢(預設): 每個請求按時間順序逐一配置設定到不同的後端伺服器,如果後端伺服器down掉,能自動剔除

Nginx實戰應用-負載均衡

2.Ip_hash: 每個請求按通路ip的hash結果配置設定,這樣每個訪客固定通路一個後端伺服器,可以解決session的問題

Nginx實戰應用-負載均衡

3.權重:即可以指定輪詢比率,weight和通路幾率成正比,主要應用于後端伺服器異質的場景下

Nginx實戰應用-負載均衡

4.響應時間:公平地按照伺服器的響應時間來配置設定請求,意味着後端響應時間最短的優先配置設定

Nginx實戰應用-負載均衡
Nginx實戰應用-負載均衡

檢查配置檔案提示無法識别 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      
Nginx實戰應用-負載均衡

繼續閱讀