在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文詳解Nginx負載均衡

馬哥Linux運維 ? 來源:博客園 ? 2025-06-25 14:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Nginx作為負載均衡器,通過將請求分發到多個后端服務器,以提高性能、可靠性和擴展性。支持多種負載均衡算法,如輪詢、最小連接數、IP哈希等,可以根據需求選擇適合的算法。

一、工作原理

nginx的高性能主要是因為

1、事件驅動架構

Nginx采用事件驅動的非阻塞方式處理請求,主要利用了操作系統提供的多路復用機制,通過異步非阻塞的方式處理大量并發請求,減少了線程切換和資源消耗,提高了并發處理能力和系統的穩定性。

2、事件循環

事件循環機制是核心的工作模式之一。它通過單線程的方式處理事件,包括等待事件、處理事件和繼續循環。在等待事件時,Nginx并不會像傳統多線程模型那樣阻塞等待,而是通過事件通知機制在有事件發生時再進行處理,這樣可以充分利用CPU資源,提升系統的效率和性能。

3、多進程

Nginx可以通過配置文件中的worker_processes選項來啟動多個進程來處理請求。每個進程都有自己獨立的事件循環和資源管理,進程之間沒有共享狀態,這種設計可以避免單點故障,提高系統的可靠性和穩定性。并且Nginx的多進程模型使得它能夠更好地利用多核CPU,通過并行處理請求來提高整體的處理能力。

二、反向代理

server {
  listen 80; 
  server_name example.com; 
  root /root/build/;#靜態資源地址
  index index.html;  

  location /api/server/ {
    proxy_pass http://localhost:8080;
    proxy_set_header Host$host;
    proxy_set_header X-Real-IP$remote_addr;
    proxy_set_header X-Forwarded-For
  }
}

例如在這個例子中,設置了index目錄和靜態資源目錄。并且設置了域名訪問。很大了保證了服務器的安全性。在下面的反向代理配置中,通過正則表達式將/api/server/開頭的映射到http://localhost:8080這個地址。

ec2666c8-4dba-11f0-b715-92fbcf53809c.pngwhiteboard_exported_image.png

三、負載均衡

負載均衡也就是通過反向代理到不同的服務,保證服務的可用性。多用于在分布式系統中。例如某個系統分布在100個服務器上,當某幾臺服務器崩潰時,會代理到其他服務器,不會影響系統的運行。更好的實現橫向擴展。

例如一個簡單的get請求代碼

importtornado.ioloop
importtornado.web

classMainHandler(tornado.web.RequestHandler):
 defget(self):
   self.write("Hello, Tornado!")

defmake_app():
 returntornado.web.Application([
    (r"/", MainHandler),
  ])

if__name__ =="__main__":
  app = make_app()
  app.listen(8888)
 print("Server running on http://localhost:8888")
  tornado.ioloop.IOLoop.current().start()

具體的負載均衡算法

1、輪詢

nginx的均衡默認算法:直接基于事件循環。類似于排隊,一個一個來,例如第一個請求分發給第一個服務,第二個就分發給第二個服務,以此類推。缺點:沒有具體情況具體分析,某些情況下的請求會導致負載很高。

upstream tornado_servers {
  server 192.168.31.158:8888;
  server localhost:8888;
}

server {
  listen 80;
  server_name 192.168.62.132;

  location / {
    proxy_pass http://tornado_servers;
    proxy_set_header Host$host;
    proxy_set_header X-Real-IP$remote_addr;
  }
  location /nginx_status {
  stub_status on;
  access_log off;
  allow 192.168.62.0/24; # 允許訪問的IP地址,根據需要調整
  deny all;    # 禁止其他IP地址訪問
  }  
}

將上述訪問運行在兩個不同的服務器上,默認的輪詢會每個服務器都請求一次,除非有一臺掉線,否則nginx會均分請求。

下面行的localhost塊b表示新的匹配規則,用于查看nginx當前的連接數和請求統計信息。

server accepts handled requests

Active connections: 1

表示當前活躍的連接數,即正在與Nginx服務器建立通信的客戶端連接數量。

server accepts handled requests

accepts: 表示Nginx已經接受的連接總數。

handled: 表示Nginx已經處理的連接總數。

requests: 表示Nginx已經處理的請求總數。

Reading: 0 Writing: 1 Waiting: 0

Reading: 正在讀取客戶端請求的數量。

Writing: 正在向客戶端發送響應的數量。

Waiting: 當前空閑的客戶端連接數,等待處理請求

2、最少連接

會將請求分配給連接最少的服務,保證系統的整體性能。缺點是沒有具體情況具體分析,沒有考慮負載情況,不是請求越多負載越大。

upstream tornado_servers {
  least_conn; # 使用最少連接數算法
  server192.168.31.158:8888;
  server localhost:8888;
}

server {
 listen80;
  server_name192.168.62.132; 

  location / {
    proxy_pass http://tornado_servers;
    proxy_set_header Host$host;
    proxy_set_header X-Real-IP$remote_addr;
  }
}

least_conn字段表示使用最少連接算法。

3、IP哈希

通過客戶端的IP地址的哈希值分配給特定的服務器,如果下一次請求的IP哈希值與之前一樣,那么依然會請求到之前的服務器。如果不一樣那么為新的服務器創建新的哈希值。這樣避免了服務器的切換開銷,保持了會話的一致性。但是這樣的缺點是同一個客戶端的請求無法做到負載均衡。

upstream tornado_servers {
  ip_hash; # 使用IP哈希算法
  server 192.168.31.158:8888;
  server localhost:8888;
}

server {
  listen 80;
  server_name 192.168.62.132; 

  location / {
    proxy_pass http://tornado_servers;
    proxy_set_header Host$host;
    proxy_set_header X-Real-IP$remote_addr;
  }
  location /nginx_status {
  stub_status on;
  access_log off;
  allow 192.168.62.0/24; # 允許訪問的IP地址,根據需要調整
  deny all;    # 禁止其他IP地址訪問
  }
}

4、加權輪詢

在輪詢的基礎上為每個服務器加上一個權重值,每個服務器的承受連接數量。在輪詢的情況下再次考慮權重值。例如兩臺服務器,服務器A、B的權重分別為5,3輪詢流程為:

第一次請求:服務器A處理請求

第二次請求:服務器B處理請求

第三次請求:服務器A處理請求

第四次請求:服務器A處理請求

第五次請求:服務器A處理請求

第六次請求:服務器B處理請求

upstream tornado_servers {
  server 192.168.31.158:8888 weight=5;
  server localhost:8888 weight=3;
}

server {
  listen 80;
  server_name 192.168.62.132;

  location / {
    proxy_pass http://tornado_servers;
    proxy_set_header Host$host;
    proxy_set_header X-Real-IP$remote_addr;
  }
  location /nginx_status {
  stub_status on;
  access_log off;
  allow 192.168.62.0/24; # 允許訪問的IP地址,根據需要調整
  deny all;    # 禁止其他IP地址訪問
  }
}

5、加權最小連接

在最小連接的算法基礎上,加上權重值。這時候需要根據連接數量和權重值來評估目標服務器。

例如服務器A、B、C。權重值分別為5、3、2。連接數分別為10、5、3.

計算加權連接數:

服務器A:10/5=2

服務器B:5/3=1.67

服務器C:3/2=1.5

那么根據加權連接數,最小加權連接數為1.5。那么會代理到服務器C

upstream tornado_servers {
  least_conn; # 使用最少連接數算法
  server 192.168.31.158:8888 weight=5;
  server localhost:8888 weight=3;
}

server {
  listen 80;
  server_name 192.168.62.132;

  location / {
    proxy_pass http://tornado_servers;
    proxy_set_header Host$host;
    proxy_set_header X-Real-IP$remote_addr;
  }
  location /nginx_status {
  stub_status on;
  access_log off;
  allow 192.168.62.0/24; # 允許訪問的IP地址,根據需要調整
  deny all;    # 禁止其他IP地址訪問
  }
}

四、總結

反向代理就像是位于用戶和真實服務器之間的一座橋梁,它接收用戶的請求并將其轉發到后端的多臺服務器上。這種配置不僅隱藏了真實服務器的信息,還能提供安全性和負載均衡功能。負載均衡通過智能地分發請求到不同的服務器,確保每臺服務器的負載相對平衡,從而提高整體性能和可靠性。這種結合能夠有效地處理高并發請求,保證系統在壓力下仍能保持穩定運行。

鏈接:https://www.cnblogs.com/changwan/p/18246095

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    13

    文章

    9748

    瀏覽量

    87536
  • nginx
    +關注

    關注

    0

    文章

    168

    瀏覽量

    12537
  • 負載均衡器
    +關注

    關注

    0

    文章

    20

    瀏覽量

    2666

原文標題:手把手教程:10分鐘快速搭建Nginx負載均衡環境

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    高性能負載均衡Tomcat集群的實現

    Nginx+Tomcat搭建高性能負載均衡集群
    發表于 08-21 14:31

    使用nginx實現tomcat負載均衡

    Nginx+tomcat+memcached實現負載均衡及session(交叉存儲)
    發表于 08-28 08:52

    nginx實現的負載均衡

    nginx實現負載均衡
    發表于 05-04 13:42

    16nginx+keepalived +zuul如何實現高可用及負載均衡

    學習筆記微服務-16 nginx+keepalived +zuul 實現高可用及負載均衡
    發表于 05-22 10:16

    Nginx和Tomcat負載均衡實現session共享

    Nginx和Tomcat負載均衡實現session共享
    發表于 09-05 10:40 ?9次下載
    <b class='flag-5'>Nginx</b>和Tomcat<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>實現session共享

    構建實戰:Nginx+IIS構筑Web服務器集群負載均衡

    構建實戰:Nginx+IIS構筑Web服務器集群負載均衡
    發表于 09-05 10:56 ?4次下載
    構建實戰:<b class='flag-5'>Nginx</b>+IIS構筑Web服務器集群<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>

    f5負載均衡Nginx負載均衡有什么區別

    負載均衡是分攤到多個操作單元上進行執行,建立在現有網絡結構之上,提供了種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。市場上有很多的
    發表于 01-01 18:41 ?9341次閱讀
    f5<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>和<b class='flag-5'>Nginx</b><b class='flag-5'>負載</b><b class='flag-5'>均衡</b>有什么區別

    路由器負載均衡如何設置_路由器負載均衡的模式詳解

    在路由器中加入負載均衡技術已經不是新鮮事。那么現在已經衍生出很多種路由負載模式,不同的模式狀態下,可以完成不同的任務。而且模式間也可以進行轉化和結合。下面詳細介紹路由器負載
    發表于 01-01 19:43 ?4w次閱讀
    路由器<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>如何設置_路由器<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>的模式<b class='flag-5'>詳解</b>

    超詳細!使用 LVS 實現負載均衡原理及安裝配置詳解

    負載均衡集群是 load balance 集群的簡寫,翻譯成中文就是負載均衡集群。常用的負載均衡
    發表于 01-21 14:01 ?1400次閱讀

    讀懂Nginx、Apache工作原理

    在高并發連接的情況下,Nginx是Apache服務器不錯的替代品。Nginx同時也可以作為7層負載均衡服務器來使用。根據我的測試結果,Nginx
    發表于 04-26 11:33 ?2603次閱讀

    詳解Nginx負載均衡配置誤區

    之前有很多朋友問關于Nginx的upstream模塊中max_fails及fail_timeout,這兩個指令,分別是配置關于負載均衡過程中,對于上游(后端)服務器的失敗嘗試次數和不可用時間,很多人
    的頭像 發表于 05-13 14:36 ?1990次閱讀
    <b class='flag-5'>詳解</b><b class='flag-5'>Nginx</b><b class='flag-5'>負載</b><b class='flag-5'>均衡</b>配置誤區

    聊聊Nginx作為負載均衡器它支持的算法都有哪些?

    Nginx作為款最流行WEB服務器軟件,同時也是款反向代理和負載均衡軟件。毫不夸張地說,Nginx
    的頭像 發表于 02-14 17:50 ?971次閱讀

    如何使用Nginx作為應用程序的負載均衡器?

    Nginx因其高性能和可擴展性而廣受歡迎。它是排名第的開源Web 服務器。在本教程中,我們將學習如何使用Nginx作為應用程序的負載均衡
    的頭像 發表于 03-23 14:52 ?1327次閱讀

    搭建Keepalived+Lvs+Nginx高可用集群負載均衡

    ? Nginx安裝 二、配置反向代理 三、配置負載均衡 四、upstream指令參數 五、配置ssl證書提供https訪問 六、配置ha ngi
    的頭像 發表于 06-25 15:39 ?3609次閱讀
    搭建Keepalived+Lvs+<b class='flag-5'>Nginx</b>高可用集群<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>

    nginx負載均衡配置介紹

    代理 安裝Keepalived 配置Keepalived 編寫腳本監控Keepalived和nginx的狀態 配置keepalived加入監控腳本的配置 nginx負載均衡介紹
    的頭像 發表于 11-10 13:39 ?688次閱讀
    <b class='flag-5'>nginx</b><b class='flag-5'>負載</b><b class='flag-5'>均衡</b>配置介紹
    主站蜘蛛池模板: 五月天婷婷在线视频 | 综合五月婷婷 | 狠狠色噜噜狠狠狠狠91 | 成人国产永久福利看片 | 99视频热 | 啪啪免费观看 | 99久久国产免费中文无字幕 | 免费欧美黄色片 | 乱子伦xxx欧美 | 天堂中文资源在线地址 | 在线看片成人 | 校园 春色 欧美 另类 小说 | 在线免费观看视频 | gav久久| 日本口工全彩无遮拦漫画大 | 天天看天天做 | 免费的三及片 | 国产黄色小视频在线观看 | 精品欧美激情在线看 | 特黄特级高清免费视频毛片 | 快色视频免费观看 | 四虎精品成在线播放 | 国产亚洲精品aa在线观看 | 色噜噜网站 | 一区在线视频 | 色99色| 美女黄色毛片 | 天天干天天干天天干天天干天天干 | 特一级黄色片 | 久久久久久久免费 | 中文字幕第一区 | 高清一级做a爱免费视 | 亚洲一区高清 | 成人a毛片在线看免费全部播放 | 日韩大尺度视频 | 亚洲六月丁香六月婷婷花 | 男人的天堂色偷偷之色偷偷 | 日本xxxxbbbb| 五月亭亭激情五月 | 91av免费| 精品伊人久久大香线蕉网站 |