解析nginx負載均衡知識點「nginx負載均衡的三種方式」

1.1、Nginx概念及作用

概念:Nginx是高性能的HTTP和反向代理的web服務器,特點是佔有內存少,由於它處理高並發能力非常強大,常用於高並發場景,能經受高負載的考驗。

Nginx 專為性能優化而開發,性能是其最重要的考量,實現上非常注重效率,能經受高負載的考驗,有報告表明能支持高達 50,000 個並發連接數。

1.2、正向代理

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

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

1.2、反向代理

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

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

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

1.3、負載均衡

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

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

1.4、動靜分離

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

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

2、Nginx常用命令

由於該文章是關於Nginx的操作筆記,所以這裡不會講解如何在Linux上安裝Nginx

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

常用命令:

  1. 查看Nginx版本號:./nginx -v
Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

2.啟動Nginx:./nginx

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

3.關閉Nginx:./nginx -s stop

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

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

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

3、Nginx配置文件

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

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

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

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

  1. 全局塊

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

比如:worker_processes 1

這是 Nginx 服務器並發處理服務的關鍵配置,worker_processes 值越大,可以支持的並發處理量也越多,但是會受到硬件、軟件等設備的制約

2.events塊

events 塊涉及的指令主要影響 Nginx 服務器與用戶的網絡連接

比如:worker_connections 1024

表示每個 work process 支持的最大連接數為 1024
這部分的配置對 Nginx 的性能影響較大,在實際中應該靈活配置。

3.http塊

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

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

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

4、Nginx配置實例

4.1、反向代理

4.1.1、反向代理準備工作

實現效果:

打開瀏覽器,輸入地址www.123.com,跳轉到Linux系統上的Tomcat主頁面

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

  1. 進入到tomcat的bin目錄中,輸入命令啟動服務器:./startup.sh
  2. 對外開放訪問的端口:firewall-cmd –add-port=8080/tcp –permanent
  3. 重啟防火牆:firewall-cmd –reload
  4. 在window系統中通過瀏覽器訪問tomcat服務器
Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

5.訪問過程分析:

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

4.1.2、反向代理實例(一)

  1. 在windows系統的host文件進行域名和ip對應關係的配置,訪問路徑為:C:WindowsSystem32driversetc
Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

2.在nginx中進行請求轉發配置(反向代理)

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

3.最終打開網址輸入:www.123.com,測試成功

4.1.3、反向代理實例(二)

實現效果

  1. 在/usr/src目錄下創建兩個文件夾分別是:tomcat8080,tomcat8081,將tomcat壓縮包分別拖入到兩個文件夾中,並解壓:tar -xvf apache-tomcat-7.0.70.tar.gz,解壓完成後啟動兩個tomcat
  2. 分別在兩個tomcat中的webapps目錄下存放edu文件和vod文件,文件夾下分別存放兩個html頁面,用於測試
  3. 找到nginx配置文件,進行方向代理配置
Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

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

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

5.進行測試

4.2、負載均衡

實現效果:瀏覽器輸入負載均衡效果,將請求輪詢形式轉發到8080,8081端口

  1. 準備兩台tomcat服務器,一台是8080,另一台是8081
  2. 在兩台tomcat的webapps目錄中,分別創建edu文件夾,在edu中放入a.html文件
  3. 在nginx配置文件中的http塊進行負載均衡的配置
Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

隨着互聯網信息的爆炸性增長,負載均衡(load balance) 已經不再是一個很陌生的話題,負載均衡即是將負載分攤到不同的服務單元,既保證服務的可用性,又保證響應足夠快,給用戶很好的體驗。

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

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

2.weight:weight 代表權,重默認為 1,權重越高被分配的客戶端越多指定輪詢幾率,weight 和訪問比率成正比,用於後端服務器性能不均的情況。

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

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

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

4.fair(第三方):按後端服務器的響應時間來分配請求,響應時間短的優先分配。

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

4.3、動靜分離

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

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

4.3.1、動靜分離準備工作

在Linux系統根目錄中創建data文件夾,文件夾中存放兩個文件夾分別為:

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

4.3.2、動靜分離實例

  1. nginx配置文件中進行配置
Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

2.將nginx服務器進行重新啟動

3.最終進行測試

在瀏覽器中輸入地址

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

因為配置文件 autoindex on

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

在瀏覽器中輸入地址:
http://192.168.50.128/www/a.html

5、Nginx工作原理解析

1.master & worker

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

2.worker如何進行工作

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

3.master-workers 的機制的好處

(1)可以使用 nginx –s reload 熱部署,利用 nginx 進行熱部署操作
(2)每個 woker是獨立的進程,如果有其中的一個 woker 出現問題,其他 woker 獨立的,繼續進行爭搶,實現請求過程,不會造成服務中斷

4.設置多少個 woker 合適?

worker 數和服務器的 cpu 數相等是最為適宜的

5.連接數 worker_connection

第一個:發送請求,佔用了 woker 的幾個連接數?
答案:2 或者 4 個

第二個:nginx 有一個 master,有四個 woker,每個 woker 支持最大的連接數 1024,支持的最大並發數是多少?
普通的靜態訪問最大並發數是: worker_connections * worker_processes / 2,

而如果是 HTTP 作 為反向代理來說,最大並發數量應該是 worker_connections * worker_processes/4

Nginx學習筆記詳解:反向代理,負載均衡,動靜分離

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/281353.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-21 13:17
下一篇 2024-12-21 13:17

相關推薦

發表回復

登錄後才能評論