chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內(nèi)不再提示

一文詳解Nginx負載均衡

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

掃碼添加小助手

加入工程師交流群

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

一、工作原理

nginx的高性能主要是因為

1、事件驅(qū)動架構(gòu)

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

2、事件循環(huán)

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

3、多進程

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

二、反向代理

server {
  listen 80; 
  server_name example.com; 
  root /root/build/;#靜態(tài)資源地址
  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
  }
}

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

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

三、負載均衡

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

例如一個簡單的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的均衡默認算法:直接基于事件循環(huán)。類似于排隊,一個一個來,例如第一個請求分發(fā)給第一個服務(wù),第二個就分發(fā)給第二個服務(wù),以此類推。缺點:沒有具體情況具體分析,某些情況下的請求會導(dǎo)致負載很高。

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地址,根據(jù)需要調(diào)整
  deny all;    # 禁止其他IP地址訪問
  }  
}

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

下面行的localhost塊b表示新的匹配規(guī)則,用于查看nginx當前的連接數(shù)和請求統(tǒng)計信息。

server accepts handled requests

Active connections: 1

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

server accepts handled requests

accepts: 表示Nginx已經(jīng)接受的連接總數(shù)。

handled: 表示Nginx已經(jīng)處理的連接總數(shù)。

requests: 表示Nginx已經(jīng)處理的請求總數(shù)。

Reading: 0 Writing: 1 Waiting: 0

Reading: 正在讀取客戶端請求的數(shù)量。

Writing: 正在向客戶端發(fā)送響應(yīng)的數(shù)量。

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

2、最少連接

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

upstream tornado_servers {
  least_conn; # 使用最少連接數(shù)算法
  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地址的哈希值分配給特定的服務(wù)器,如果下一次請求的IP哈希值與之前一樣,那么依然會請求到之前的服務(wù)器。如果不一樣那么為新的服務(wù)器創(chuàng)建新的哈希值。這樣避免了服務(wù)器的切換開銷,保持了會話的一致性。但是這樣的缺點是同一個客戶端的請求無法做到負載均衡。

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地址,根據(jù)需要調(diào)整
  deny all;    # 禁止其他IP地址訪問
  }
}

4、加權(quán)輪詢

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

第一次請求:服務(wù)器A處理請求

第二次請求:服務(wù)器B處理請求

第三次請求:服務(wù)器A處理請求

第四次請求:服務(wù)器A處理請求

第五次請求:服務(wù)器A處理請求

第六次請求:服務(wù)器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地址,根據(jù)需要調(diào)整
  deny all;    # 禁止其他IP地址訪問
  }
}

5、加權(quán)最小連接

在最小連接的算法基礎(chǔ)上,加上權(quán)重值。這時候需要根據(jù)連接數(shù)量和權(quán)重值來評估目標服務(wù)器。

例如服務(wù)器A、B、C。權(quán)重值分別為5、3、2。連接數(shù)分別為10、5、3.

計算加權(quán)連接數(shù):

服務(wù)器A:10/5=2

服務(wù)器B:5/3=1.67

服務(wù)器C:3/2=1.5

那么根據(jù)加權(quán)連接數(shù),最小加權(quán)連接數(shù)為1.5。那么會代理到服務(wù)器C

upstream tornado_servers {
  least_conn; # 使用最少連接數(shù)算法
  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地址,根據(jù)需要調(diào)整
  deny all;    # 禁止其他IP地址訪問
  }
}

四、總結(jié)

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

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

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

    關(guān)注

    13

    文章

    9795

    瀏覽量

    87980
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    171

    瀏覽量

    12601
  • 負載均衡器
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    2671

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    高性能負載均衡Tomcat集群的實現(xiàn)

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

    使用nginx實現(xiàn)tomcat負載均衡

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

    nginx實現(xiàn)的負載均衡

    nginx實現(xiàn)負載均衡
    發(fā)表于 05-04 13:42

    16nginx+keepalived +zuul如何實現(xiàn)高可用及負載均衡

    學習筆記微服務(wù)-16 nginx+keepalived +zuul 實現(xiàn)高可用及負載均衡
    發(fā)表于 05-22 10:16

    Nginx和Tomcat負載均衡實現(xiàn)session共享

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

    構(gòu)建實戰(zhàn):Nginx+IIS構(gòu)筑Web服務(wù)器集群負載均衡

    構(gòu)建實戰(zhàn):Nginx+IIS構(gòu)筑Web服務(wù)器集群負載均衡
    發(fā)表于 09-05 10:56 ?4次下載
    構(gòu)建實戰(zhàn):<b class='flag-5'>Nginx</b>+IIS構(gòu)筑Web服務(wù)器集群<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>

    f5負載均衡Nginx負載均衡有什么區(qū)別

    負載均衡是分攤到多個操作單元上進行執(zhí)行,建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,提供了種廉價有效透明的方法擴展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。市場上有很多的
    發(fā)表于 01-01 18:41 ?9375次閱讀
    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>有什么區(qū)別

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

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

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

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

    讀懂Nginx、Apache工作原理

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

    詳解Nginx負載均衡配置誤區(qū)

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

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

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

    如何使用Nginx作為應(yīng)用程序的負載均衡器?

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

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

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

    nginx負載均衡配置介紹

    代理 安裝Keepalived 配置Keepalived 編寫腳本監(jiān)控Keepalived和nginx的狀態(tài) 配置keepalived加入監(jiān)控腳本的配置 nginx負載均衡介紹
    的頭像 發(fā)表于 11-10 13:39 ?759次閱讀
    <b class='flag-5'>nginx</b><b class='flag-5'>負載</b><b class='flag-5'>均衡</b>配置介紹