1. 河豚號 > 生活百科 >

nginx負(fù)載均衡的三種方式( 解析nginx負(fù)載均衡知識點)

1.1、Nginx概念及作用

概念:Nginx是高性能的HTTP和反向代理的web服務(wù)器,特點是占有內(nèi)存少,由于它處理高并發(fā)能力非常強大,常用于高并發(fā)場景,能經(jīng)受高負(fù)載的考驗。

Nginx 專為性能優(yōu)化而開發(fā),性能是其最重要的考量,實現(xiàn)上非常注重效率,能經(jīng)受高負(fù)載的考驗,有報告表明能支持高達(dá) 50,000 個并發(fā)連接數(shù)。

1.2、正向代理

我們需要在客戶端配置代理服務(wù)器,此時將代理服務(wù)器和客戶端看成一個客戶端,這樣服務(wù)器就不知道是哪個客戶端發(fā)送的請求,通過代理服務(wù)器進行訪問,這就是正向代理

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

1.2、反向代理

反向代理:客戶端對反向代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端。

反向代理服務(wù)器和目標(biāo)服務(wù)器對外就是一個服務(wù)器,所以我們需要把它們看成一個服務(wù)端,暴露的是代理服務(wù)器 IP 地址,隱藏了真實服務(wù)器 IP 地址,這樣客戶端就不知道請求最后到底發(fā)送給哪臺服務(wù)器

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

1.3、負(fù)載均衡

單個服務(wù)器解決不了大量請求,所以我們增加服務(wù)器的數(shù)量,然后將請求分發(fā)到各個服務(wù)器上,將原先請求集中到單個服務(wù)器上的情況改為將請求分發(fā)到多個服務(wù)器上,這就是我們所說的負(fù)載均衡

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

1.4、動靜分離

為了加快網(wǎng)站的解析速度,可以把動態(tài)頁面和靜態(tài)頁面由不同的服務(wù)器來解析,加快解析速度。降低原來單個服務(wù)器的壓力。

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

2、Nginx常用命令

由于該文章是關(guān)于Nginx的操作筆記,所以這里不會講解如何在Linux上安裝Nginx

注意:使用Nginx操作命令前提,必須進入到Nginx目錄 /usr/local/nginx/sbin

常用命令:

查看Nginx版本號:./nginx -v

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

2.啟動Nginx:./nginx

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

3.關(guān)閉Nginx:./nginx -s stop

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

4.重新加載Nginx:./nginx -s reload

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

3、Nginx配置文件

首先我們需要知道Nginx配置文件的位置:

/usr/local/nginx/conf/nginx.conf

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

Nginx配置文件有3部分組成:

全局塊

從配置文件開始到 events 塊之間的內(nèi)容,主要會設(shè)置一些影響 nginx 服務(wù)器整體運行的配置指令

比如:worker_processes 1

這是 Nginx 服務(wù)器并發(fā)處理服務(wù)的關(guān)鍵配置,worker_processes 值越大,可以支持的并發(fā)處理量也越多,但是會受到硬件、軟件等設(shè)備的制約

2.events塊

events 塊涉及的指令主要影響 Nginx 服務(wù)器與用戶的網(wǎng)絡(luò)連接

比如:worker_connections 1024

表示每個 work process 支持的最大連接數(shù)為 1024

這部分的配置對 Nginx 的性能影響較大,在實際中應(yīng)該靈活配置。

3.http塊

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

這算是 Nginx 服務(wù)器配置中最頻繁的部分

需要注意的是:http 塊也可以包括 http 全局塊、server 塊。

4、Nginx配置實例

4.1、反向代理

4.1.1、反向代理準(zhǔn)備工作

實現(xiàn)效果:

打開瀏覽器,輸入地址www.123.com,跳轉(zhuǎn)到Linux系統(tǒng)上的Tomcat主頁面

注意:進行案例演示之前,請確保Linux上已經(jīng)安裝Nginx和Tomcat!

進入到tomcat的bin目錄中,輸入命令啟動服務(wù)器:./startup.sh

對外開放訪問的端口:firewall-cmd –add-port=8080/tcp –permanent

重啟防火墻:firewall-cmd –reload

在window系統(tǒng)中通過瀏覽器訪問tomcat服務(wù)器

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

5.訪問過程分析:

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

4.1.2、反向代理實例(一)

在windows系統(tǒng)的host文件進行域名和ip對應(yīng)關(guān)系的配置,訪問路徑為:C:WindowsSystem32driversetc

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

2.在nginx中進行請求轉(zhuǎn)發(fā)配置(反向代理)

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

3.最終打開網(wǎng)址輸入:www.123.com,測試成功

4.1.3、反向代理實例(二)

實現(xiàn)效果

在/usr/src目錄下創(chuàng)建兩個文件夾分別是:tomcat8080,tomcat8081,將tomcat壓縮包分別拖入到兩個文件夾中,并解壓:tar -xvf apache-tomcat-7.0.70.tar.gz,解壓完成后啟動兩個tomcat

分別在兩個tomcat中的webapps目錄下存放edu文件和vod文件,文件夾下分別存放兩個html頁面,用于測試

找到nginx配置文件,進行方向代理配置

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

4.開放對外訪問的端口號,語法如下:

firewall-cmd --add-port=端口號/tcp --permanent

5.進行測試

4.2、負(fù)載均衡

實現(xiàn)效果:瀏覽器輸入負(fù)載均衡效果,將請求輪詢形式轉(zhuǎn)發(fā)到8080,8081端口

準(zhǔn)備兩臺tomcat服務(wù)器,一臺是8080,另一臺是8081

在兩臺tomcat的webapps目錄中,分別創(chuàng)建edu文件夾,在edu中放入a.html文件

在nginx配置文件中的http塊進行負(fù)載均衡的配置

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

隨著互聯(lián)網(wǎng)信息的爆炸性增長,負(fù)載均衡(load balance) 已經(jīng)不再是一個很陌生的話題,負(fù)載均衡即是將負(fù)載分?jǐn)偟讲煌姆?wù)單元,既保證服務(wù)的可用性,又保證響應(yīng)足夠快,給用戶很好的體驗。

Nginx 提供了幾種分配方式(策略):

1.輪詢(默認(rèn)):每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器 down 掉,能自動剔除。

2.weight:weight 代表權(quán),重默認(rèn)為 1,權(quán)重越高被分配的客戶端越多指定輪詢幾率,weight 和訪問比率成正比,用于后端服務(wù)器性能不均的情況。

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

3.ip_hash:每個請求按訪問 ip 的 hash 結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決 session 的問題。

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

4.fair(第三方):按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

4.3、動靜分離

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

通過 location 指定不同的后綴名實現(xiàn)不同的請求轉(zhuǎn)發(fā)。通過 expires 參數(shù)設(shè)置,可以使瀏覽器緩存過期時間,減少與服務(wù)器之前的請求和流量。具體 Expires 定義:是給一個資源設(shè)定一個過期時間,也就是說無需去服務(wù)端驗證,直接通過瀏覽器自身確認(rèn)是否過期即可,所以不會產(chǎn)生額外的流量。此種方法非常適合不經(jīng)常變動的資源。(如果經(jīng)常更新的文件,不建議使用 Expires 來緩存),我這里設(shè)置 3d,表示在這 3 天之內(nèi)訪問這個 URL,發(fā)送一個請求,比對服務(wù)器該文件最后更新時間沒有變化,則不會從服務(wù)器抓取,返回狀態(tài)碼 304,如果有修改,則直接從服務(wù)器重新下載,返回狀態(tài)碼 200。

4.3.1、動靜分離準(zhǔn)備工作

在Linux系統(tǒng)根目錄中創(chuàng)建data文件夾,文件夾中存放兩個文件夾分別為:

www

image

在www中放入a.html文件,在image文件夾中放入01.jpg圖片

4.3.2、動靜分離實例

nginx配置文件中進行配置

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

2.將nginx服務(wù)器進行重新啟動

3.最終進行測試

在瀏覽器中輸入地址

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

因為配置文件 autoindex on

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

在瀏覽器中輸入地址:

http://192.168.50.128/www/a.html

5、Nginx工作原理解析

1.master & worker

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

2.worker如何進行工作

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

3.master-workers 的機制的好處

(1)可以使用 nginx –s reload 熱部署,利用 nginx 進行熱部署操作

(2)每個 woker是獨立的進程,如果有其中的一個 woker 出現(xiàn)問題,其他 woker 獨立的,繼續(xù)進行爭搶,實現(xiàn)請求過程,不會造成服務(wù)中斷

4.設(shè)置多少個 woker 合適?

worker 數(shù)和服務(wù)器的 cpu 數(shù)相等是最為適宜的

5.連接數(shù) worker_connection

第一個:發(fā)送請求,占用了 woker 的幾個連接數(shù)?

答案:2 或者 4 個

第二個:nginx 有一個 master,有四個 woker,每個 woker 支持最大的連接數(shù) 1024,支持的最大并發(fā)數(shù)是多少?

普通的靜態(tài)訪問最大并發(fā)數(shù)是: worker_connections * worker_processes / 2,

而如果是 HTTP 作 為反向代理來說,最大并發(fā)數(shù)量應(yīng)該是 worker_connections * worker_processes/4

 

Nginx學(xué)習(xí)筆記詳解:反向代理,負(fù)載均衡,動靜分離

 

本文由網(wǎng)上采集發(fā)布,不代表我們立場,轉(zhuǎn)載聯(lián)系作者并注明出處:http://m.zltfw.cn/shbk/40690.html

聯(lián)系我們

在線咨詢:點擊這里給我發(fā)消息

微信號:15705946153

工作日:9:30-18:30,節(jié)假日休息