成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入理解Nginx及使用Nginx實現負載均衡

開發 架構 服務器
正向代理是代理客戶端,也就是客戶端能真正接觸到的,比如訪問外網時需要使用VPN軟件,在這個軟件中用戶可以選擇連接哪里的服務器。

 [[312813]]

前言

最近在部署項目時要求實現負載均衡,有趣的是發現網上一搜全部都是以下類似的配置文件

  1. upstream localhost{ 
  2.  server 127.0.0.1:8080 weight=1; 
  3.  server 127.0.0.1:8081 weight=1; 
  4.  } 
  5.  server { 
  6.  listen 80; 
  7.  server_name localhost; 
  8.  location / { 
  9.  proxy_pass http://localhost; 
  10.  index index.html index.htm index.jsp; 
  11.   
  12.  } 
  13.  } 

所以打算來看看Nginx內部原理,這篇博客主要介紹Nginx如何實現反向代理以及在Nginx中負載均衡的參數使用

一、正向代理與反向代理

正向代理是代理客戶端,也就是客戶端能真正接觸到的,比如訪問外網時需要使用VPN軟件,在這個軟件中用戶可以選擇連接哪里的服務器。

反向代理則是代理服務端,用戶感知不到,只是客戶端把請求發到服務端的端口時,Nginx監聽到了便把該端口的請求轉發到不同的服務器上。就以上面配置文件來講解,當在網址中輸入http://localhost:80/時(不加80一樣時默認進入80端口,這里為了表示清楚),而后Nginx監聽到80端口的請求之后,就會查找對應的location來執行。由上面的配置文件我們可以看出是將請求轉發到了不同的端口。這是在服務器中執行的,用戶不可見。

而服務端中我們最常使用的反向代理的工具就是Nginx。

二、Nginx內部基本架構

nginx在啟動后以daemon的方式在后臺運行,會有一個master進程和多個worker進程。

master進程:主要用來管理worker進程,包含:接收來自外界的信號,向各worker進程發送信號,監控worker進程的運行狀態,當worker進程退出后(異常情況下),會自動重新啟動新的worker進程。

worker進程:處理基本的網絡事件了。多個worker進程之間是對等的,他們同等競爭來自客戶端的請求,各進程互相之間是獨立的。一個請求,只可能在一個worker進程中處理,一個worker進程,不可能處理其它進程的請求。worker進程的個數是可以設置的,一般我們會設置與機器cpu核數一致,或者直接設置參數worker_processes auto;

 

深入理解Nginx及使用Nginx實現負載均衡

 

所以Nginx基本的架構就如下:

 

深入理解Nginx及使用Nginx實現負載均衡

 

當我們輸入./nginx -s reload,就是來重啟nginx,./nginx -s stop,就是來停止nginx的運行,這里面是如何做到的?執行命令時,我們是啟動一個新的nginx進程,而新的nginx進程在解析到reload參數后,就知道我們的目的是控制nginx來重新加載配置文件了,它會向master進程發送信號。master進程在接到信號后,會先重新加載配置文件,然后再啟動新的worker進程,并向所有老的worker進程發送信號,告訴他們可以光榮退休了。新的worker在啟動后,就開始接收新的請求,而老的worker在收到來自master的信號后,就不再接收新的請求,并且在當前進程中的所有未處理完的請求處理完成后,再退出。所以使用上面命令重啟Nginx的時候服務是不中斷的。

三、Nginx如何處理客戶端請求

首先來解釋一下上面的架構圖:每個worker進程都是從master進程分支過來的,在master進程里面,先建立好需要監聽的socket之后,然后再分支出多個worker進程。所有worker進程的listenfd(socket中listenfd是指客戶端連接本機時的fd,是用來和客戶端通信用的)會在新連接到來時變得可讀,為保證只有一個進程處理該連接,所有worker進程在注冊listenfd讀事件前搶accept_mutex,搶到互斥鎖的那個進程注冊listenfd讀事件,在讀事件里調用accept接受該連接。

在Nginx中worker進程之間是平等的,每個進程,處理請求的機會也是一樣的。當Nginx監聽80端口時,一個客戶端的連接請求過來,每個進程都有可能處理這個連接,上面說到是每個worker進程都會去搶注listenfd讀事件。當一個worker進程在accept這個連接之后,就開始讀取請求,解析請求,處理請求,產生數據后,再返回給客戶端,最后才斷開連接,這樣一個完整的請求就是這樣的了。這里需要注意的是一個請求,完全由worker進程來處理,而且只在一個worker進程中處理。

下面兩幅流程圖能很好的幫我們理解

 

深入理解Nginx及使用Nginx實現負載均衡

 

 

深入理解Nginx及使用Nginx實現負載均衡

 

四、Nginx如何處理事件并且實現高并發

Nginx內部采用了異步非阻塞的方式來處理請求,也就是說,Nginx是可以同時處理成千上萬個請求的。

異步非阻塞:當一個網絡請求過來時,我們并不依賴于這個請求才能做后續操作,那么這個請求就是異步操作,也就是調用者在沒有得到結果之前同樣可以執行后續的操作。非阻塞就是當前進程/線程沒有得到請求調用的結果時也不會妨礙到進程/線程后續的操作。可以看出異步和非阻塞的對象是不同的。

五、Nginx負載均衡的算法及參數

round robin(默認):輪詢方式,依次將請求分配到后臺各個服務器中,適用于后臺機器性能一致的情況,若服務器掛掉,可以自動從服務列表中剔除

weight:根據權重來分發請求到不同服務器中,可以理解為比例分發,性能較高服務器分多點請求,較低的則分少點請求

IP_hash:根據請求者ip的hash值將請求發送到后臺服務器中,保證來自同一ip的請求被轉發到固定的服務器上,解決session問題

  1. upstream localhost {  
  2. ip_hash;  
  3. server 127.0.0.1:8080;  
  4. server 127.0.0.1:8080;  
  5. }  

上面是最基本的三種算法,我們還可以通過改變參數來自行配置負載均衡

  1. upstream localhost{  
  2. ip_hash;  
  3. server 127.0.0.1:9090 down;  
  4. server 127.0.0.1:8080 weight=2;  
  5. server 127.0.0.1:6060;  
  6. server 127.0.0.1:7070 backup;  

參數列表如下:

 

深入理解Nginx及使用Nginx實現負載均衡

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-11-27 12:31:39

負載均衡高可用架構

2024-11-01 08:57:07

2019-03-18 09:50:44

Nginx架構服務器

2011-01-07 11:14:17

Nginx負載均衡負載均衡

2012-07-31 09:25:42

nginx負載均衡反向代理

2013-04-22 11:29:14

Nginx

2021-10-10 13:31:14

Java負載均衡算法

2021-10-21 10:02:37

Java開發代碼

2013-08-27 13:48:12

Nginx stickNginx負載均衡

2019-11-12 13:56:15

NginxTomcat負載均衡

2020-04-20 20:27:59

Nginx動靜分離負載均衡

2015-04-13 09:44:14

Nginxkeepalived負載均衡

2018-02-01 10:31:12

Nginx負載均衡軟件

2012-02-14 10:10:35

NginxKeepalived負載均衡

2024-08-29 08:41:50

2025-01-13 09:07:12

2010-05-07 12:23:23

nginx負載均衡

2014-07-28 11:37:49

NginxTomcat

2013-02-20 09:59:49

負載均衡PuppetNginx

2019-03-13 12:04:41

Nginx負載均衡動靜分離
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.99热这里只有精品 | 亚欧性视频 | 国产精品久久久爽爽爽麻豆色哟哟 | 自拍亚洲 | 亚洲狠狠 | 国产日产欧产精品精品推荐蛮挑 | 欧美亚洲激情 | 国产综合av | 一区二区在线不卡 | 国产电影一区二区三区爱妃记 | 欧美日韩国产精品一区二区 | 亚洲欧美在线一区 | 福利一区在线观看 | caoporn国产精品免费公开 | 在线欧美一区 | 欧美三级在线 | 亚洲精品乱码久久久久久按摩观 | 99这里只有精品视频 | 极品销魂美女一区二区 | a毛片| 亚洲免费在线观看av | 色偷偷888欧美精品久久久 | 国产精品.xx视频.xxtv | 欧美另类视频 | 国产成人久久精品一区二区三区 | 国产精品美女www爽爽爽 | 欧美亚洲国产一区二区三区 | h片免费在线观看 | 91久久精品国产91久久性色tv | 欧美精品一区二区三区在线播放 | 91新视频| 99热免费在线 | 永久免费视频 | 久久国内精品 | 91精品国产91久久综合桃花 | 国产精品色 | 精品美女视频在线观看免费软件 | 日本久久www成人免 成人久久久久 | 久久久精品网 | 影音先锋中文字幕在线观看 | 欧美精品一区二区三区在线 |