Nginx負載均衡配置

2021-10-22 16:01:27 字數 3008 閱讀 8516

nginx安裝請參考:《nginx原始碼安裝》

一、內建負載策略

nginx負載均衡是通過upstream模組來實現的,內建實現了三種負載策略,配置還是比較簡單的。官網負載均衡配置說明:

輪循(預設)

nginx根據請求次數,將每個請求均勻分配到每台伺服器

最少連線

將請求分配給連線數最少的伺服器。nginx會統計哪些伺服器的連線數最少。

ip hash

繫結處理請求的伺服器。第一次請求時,根據該客戶端的ip算出乙個hash值,將請求分配到集群中的某一台伺服器上。後面該客戶端的所有請求,都將通過hash演算法,找到之前處理這台客戶端請求的伺服器,然後將請求交給它來處理。

1> 輪循

}# ... 省略其它配置}1

2345

6789

1011

1213

1415

1617

1819

20proxy_pass http://tomcats:表示將所有請求**到tomcats伺服器組中配置的某一台伺服器上。

upstream模組:配置反向**伺服器組,nginx會根據配置,將請求分發給組裡的某一台伺服器。tomcats是伺服器組的名稱。

upstream模組下的server指令:配置處理請求的伺服器ip或網域名稱,埠可選,不配置預設使用80埠。通過上面的配置,nginx預設將請求依次分配給100,101,102來處理,可以通過修改下面這些引數來改變預設的分配策略:

weight

預設為1,將請求平均分配給每台server

upstream tomcats 12

345上例配置,表示6次請求中,100分配2次,101分配3次,102分配1次

max_fails

預設為1。某台server允許請求失敗的次數,超過最大次數後,在fail_timeout時間內,新的請求將不會分配給這台機器。如果設定為0,nginx會將這台server置為永久無效狀態,然後將請求發給定義了proxy_next_upstream, fastcgi_next_upstream, uwsgi_next_upstream, scgi_next_upstream, and memcached_next_upstream指令來處理這次錯誤的請求。

fail_timeout

預設為10秒。某台server達到max_fails次失敗請求後,在fail_timeout期間內,nginx會認為這台server暫時不可用,不會將請求分配給它

upstream tomcats 12

345192.168.0.100這台機器,如果有3次請求失敗,nginx在15秒內,不會將新的請求分配給它。

backup

備份機,所有伺服器掛了之後才會生效

upstream tomcats 12

3456

在100和101都掛了之前,102為不可用狀態,不會將請求分配給它。只有當100和101都掛了,102才會被啟用。

down

標識某一台server不可用。可能能通過某些引數動態的啟用它吧,要不真沒啥用。

upstream tomcats 12

3456

7表示101這台server為無效狀態,不會將請求分配給它。

max_conns

限制分配給某台server處理的最大連線數量,超過這個數量,將不會分配新的連線給它。預設為0,表示不限制。注意:1.5.9之後的版本才有這個配置

upstream tomcats 12

3表示最多給100這台server分配1000個請求,如果這台server正在處理1000個請求,nginx將不會分配新的請求給到它。假如有乙個請求處理完了,還剩下999個請求在處理,這時nginx也會將新的請求分配給它。

resolve

將server指令配置的網域名稱,指定網域名稱解析伺服器。需要在http模組下配置resolver指令,指定網域名稱解析服務

表示example.com網域名稱,由10.0.0.1伺服器來負責解析。

upstream模組server指令的其它引數和詳細配置說明,請參考官方文件。

二、第三方負載策略

1> fair

根據伺服器的響應時間來分配請求,響應時間短的優先分配,即負載壓力小的優先會分配。

由於fair模組是第三方提供的,所以在編譯nginx原始碼的時候,需要將fair新增到nginx模組中。

cd /opt

wget

unzip master.zip12

3解壓後的目錄名為:nginx-upstream-fair-master

2> 重新編譯nginx,將fair模組新增到編譯引數

我的nginx原始碼目錄在/opt/nginx-1.10.0

cd /opt/nginx-nginx-1.10.0

./configure --prefix=/opt/nginx --add-module=/opt/nginx-upstream-fair-master

make12

3注意:不要執行make install,這樣會覆蓋之前nginx的配置

3> 將新編譯的nginx可執行程式拷貝到/opt/nginx/sbin/目錄下,覆蓋之前安裝的nginx

編譯後的nginx執行程式,放在nginx原始碼的objs目錄下

ps -aux | grep nginx

kill -9 nginx程序id  # 停止nginx服務

cp /opt/nginx-1.10.0/objs/nginx /opt/nginx/sbin/  # 覆蓋舊的nginx

nginx # 啟動服務12

34配置使用fair負載策略模組:

upstream tomcats 12

3456

由於採用fair負載策略,配置weigth引數改變負載權重將無效。

2> url_hash

按請求url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,伺服器做快取時比較有效。

upstream tomcats

nginx負載均衡配置

curl nginx upstream fair.zip unzip nginx upstream fair.zip cd nginx 1.6.2 檢視當前nginx 編譯引數 nginx v 輸出 configure arguments prefix usr local nginx configu...

Nginx負載均衡配置

負載均衡是我們大流量 要做的乙個東西,下面我來給大家介紹在nginx伺服器上進行負載均衡配置方法,希望對有需要的同學有所幫助哦。負載均衡 先來簡單了解一下什麼是負載均衡,單從字面上的意思來理解就可以解釋n臺伺服器平均分擔負載,不會因為某台伺服器負載高宕機而某台伺服器閒置的情況。那麼負載均衡的前提就是...

Nginx負載均衡配置

nginx安裝請參考 nginx原始碼安裝 nginx負載均衡是通過upstream模組來實現的,內建實現了三種負載策略,配置還是比較簡單的。官網負載均衡配置說明 省略其它配置 根據伺服器的響應時間來分配請求,響應時間短的優先分配,即負載壓力小的優先會分配。由於fair模組是第三方提供的,所以在編譯...