nginx配置實現負載均衡

来源:https://www.cnblogs.com/wzs110/archive/2019/06/25/11082660.html
-Advertisement-
Play Games

一、負載均衡的作用 1、轉發功能 按照一定的演算法【權重、輪詢】,將客戶端請求轉發到不同應用伺服器上,減輕單個伺服器壓力,提高系統併發量。 2、故障移除 通過心跳檢測的方式,判斷應用伺服器當前是否可以正常工作,如果伺服器期宕掉,自動將請求發送到其他應用伺服器。 3、恢復添加 如檢測到發生故障的應用服務 ...


 一、負載均衡的作用

1、轉發功能

按照一定的演算法【權重、輪詢】,將客戶端請求轉發到不同應用伺服器上,減輕單個伺服器壓力,提高系統併發量。

2、故障移除

通過心跳檢測的方式,判斷應用伺服器當前是否可以正常工作,如果伺服器期宕掉,自動將請求發送到其他應用伺服器。

3、恢復添加

如檢測到發生故障的應用伺服器恢復工作,自動將其添加到處理用戶請求隊伍中。

二、Nginx實現負載均衡
同樣使用兩個tomcat模擬兩台應用伺服器,埠號分別為8080 和8081

1、Nginx的負載分發策略

      Nginx 的 upstream目前支持的分配演算法: 
1)、輪詢 ——1:1 輪流處理請求(預設)

      每個請求按時間順序逐一分配到不同的應用伺服器,如果應用伺服器down掉,自動剔除,剩下的繼續輪詢。 
2)、權重 ——you can you up
      通過配置權重,指定輪詢幾率,權重和訪問比率成正比,用於應用伺服器性能不均的情況。 
3)、ip_哈希演算法
      每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個應用伺服器,可以解決session共用的問題。 

2、配置Nginx的負載均衡與分發策略

      通過在upstream參數中添加的應用伺服器IP後添加指定參數即可實現,如:

 

複製代碼
upstream tomcatserver1 {  
    server 192.168.72.49:8080 weight=3;  
    server 192.168.72.49:8081;  
    }   
  
 server {  
        listen       80;  
        server_name  8080.max.com;  
        #charset koi8-r;  
        #access_log  logs/host.access.log  main;  
        location / {  
            proxy_pass   http://tomcatserver1;  
            index  index.html index.htm;  
        }  
     } 
複製代碼

 

   

      通過以上配置,便可以實現,在訪問8080.max.com這個網站時,由於配置了proxy_pass地址,所有請求都會先通過nginx反向代理伺服器,在伺服器將請求轉發給目的主機時,讀取upstream為 tomcatsever1的地址,讀取分發策略,配置tomcat1權重為3,所以nginx會將大部分請求發送給49伺服器上的tomcat1,也就是8080埠;較少部分給tomcat2來實現有條件的負載均衡,當然這個條件就是伺服器1、2的硬體指數處理請求能力。 

3、nginx其他配置

 

複製代碼
upstream myServer {    
  
    server 192.168.72.49:9090 down;   
    server 192.168.72.49:8080 weight=2;   
    server 192.168.72.49:6060;   
    server 192.168.72.49:7070 backup;   
}  
複製代碼

 

1)down

    表示單前的server暫時不參與負載

2)Weight

    預設為1.weight越大,負載的權重就越大。

3)max_fails

    允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤

4)fail_timeout

    max_fails 次失敗後,暫停的時間。

5)Backup

    其它所有的非backup機器down或者忙的時候,請求backup機器。所以這台機器壓力會最輕。

三、使用Nginx的高可用 

      除了要實現網站的高可用,也就是提供n多台伺服器用於發佈相同的服務,添加負載均衡伺服器分發請求以保證在高併發下各台伺服器能相對飽和的處理請求。同樣,負載均衡伺服器也需要高可用,以防如果負載均衡伺服器掛掉了,後面的應用伺服器也紊亂無法工作。

     實現高可用的方案:添加冗餘。添加n台nginx伺服器以避免發生上述單點故障。具體方案詳見下文:keepalive+nginx實現負載均衡高可用

四、總結

    總結一點,負載均衡不論是各種軟體或硬體上的解決方案,主要還是將大量的併發請求按照一定的規律分發給不同的伺服器處理,從而減少某台伺服器的瞬時壓力,提高網站的抗併發能力。nginx在負載均衡的應用之所以廣泛,筆者認為這歸功於它的靈活配置,一個nginx.conf文件解決大部分問題,不論是nignx創建虛擬伺服器、nginx的反向代理伺服器,還是本文介紹的nginx的負載均衡,幾乎都在這個配置文件中進行。伺服器上只負責把nginx搭好,跑起來即可。而且它本身輕量級,不需要占用伺服器太多資源就可以達到較好的效果,膩害。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Windows 服務允許用戶創建可在其自身的 Windows 會話中長時間運行的可執行應用程式。 這些服務可在電腦啟動時自動啟動,可以暫停和重啟,並且不顯示任何用戶界面。 這些功能使服務非常適合在伺服器上使用,或者需要長時間運行的功能(不會影響在同一臺電腦上工作的其他用戶)。 服務的生存期 首先 ...
  • SSH埠轉發 SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網路數據。但是,SSH 還能夠將其他 TCP 埠的網路數據通過 SSH 鏈接來轉發,並且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道”(tunneling),這是因為SSH 為其他 TCP 鏈接提供了一個安全的通道 ...
  • 一、LNMP搭建,基於nginx伺服器搭建wordpress個人博客 準備環境:centos7.6環境下web伺服器(nginx+php):主機名:web01,ip:192.168.248.172mysql伺服器(mariadb):主機名:db01,ip:192.168.248.177 關閉seli ...
  • 1、下載mysql rpm包 2、安裝下載的rpm包 3、查看yum存儲庫中的mysql版本,預設最新的enabled,需要改成需要的版本 4、修改為需要的版本,機禁用yum存儲庫中mysql不需要的版本和開啟需要的版本 5、安裝mysql 6、5.7版本mysql第一次啟動自動生成臨時密碼,可通過 ...
  • 寫這篇博客整理一下使用虛擬機安裝Ubuntu系統,一般常用的虛擬機有VMware以及VirtualBox。鑒於方便,博主用的是virtualbox,雖然不是很美觀,但簡潔,且完全免費,且不需要在自己配置網路。 virtualbox下載地址 https://www.virtualbox.org/ 這個 ...
  • 回到目錄 1. 名稱由來 BJT的全稱是雙極性結型晶體管(Bipolar Junction Transistor),國內俗稱三極體。其實,在英語中,三極體(triode)特指以前的真空電子管形式的三極體,而不是我們現在普遍使用的半導體三極體。“tri-”的意思是“三”,“ode”的意思是“極”,當年 ...
  • 因為目前環境Python3.x與Python2.x版本並存,所以導致以上問題。 解決方法: 第一步,vim /usr/bin/firewall-cmd, 將#!/usr/bin/python -Es 改為 #!/usr/bin/python2 -Es 第二步,vim /usr/sbin/firewa ...
  • Win10激活 註意:以管理員身份運行,需要電腦有網(親測激活企業版沒問題) 然後一條一條複製執行 slmgr /ipk NPPR9-FWDCX-D2C8J-H872K-2YT43 slmgr /skms kms.03k.org slmgr /ato ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...