Nginx負載均衡使用心得

2020-12-13 51CTO

Nginx負載均衡使用心得

前一段時間在負責實施一個項目,利用nginx的七層負載均衡的良好性能做調度器,後端兩臺PHP應用伺服器,實現靜動態分離處理,在整個系統環境全部部署完後,把應用程式放上去測試時,發現一個問題,現把問題和解決辦法寫出來,與大家一起分享和討論。

作者:paul_he 的BLOG來源:51CTO博客|2011-01-07 11:14

前一段時間在負責實施一個項目,利用nginx的七層負載均衡的良好性能做調度器,後端兩臺PHP應用伺服器,實現靜動態分離處理,在整個系統環境全部部署完後,把應用程式放上去測試時,發現一個問題,現把問題和解決辦法寫出來,與大家一起分享和討論。

一、系統環境:

1、nginx負載均衡/反向代理伺服器(1臺)

環境:CentOS 5.5 nginx-0.7.65

IP:192.168.0.10

2、後端PHP應用伺服器(2臺)

環境:CentOS 5.***pache + PHP

Webserver1 IP:192.168.0.20

Webserver1 IP:192.168.0.21

二、安裝配置

1、安裝nginx負載均衡/反向代理伺服器

安裝過程就不詳說了,可以參考我另一篇文章《nginx+tomcat負載均衡集群安裝配置》,nginx負載均衡/反向代理配置如下:


upstream phpserver {
   server 192.168.0.20:80 weight=5;
   server 192.168.0.21:80 weight=5;
}

server {
   listen 80;
   server_name localhost;
   root /webroot;
   index index.php index.html index.htm;
     
   location ~ .*\.(php|php5)?$ {
      proxy_pass http://phpserver;
      include proxy.conf;
    }
 
   location ~ /\..+ {
      deny all;
  }
   access_log /var/log/nginx/access.log;
}

2、後端PHP應用伺服器的詳細安裝配置遲些再寫出來;

三、測試發現的問題及解決辦法

1、當後端兩臺PHP應用伺服器都正常時,訪問速度非常快,查看日誌,原來一個請求,是後端兩臺伺服器同時響應的;

2、為了模仿故障測試,停掉一臺PHP應用伺服器,這時再訪問,請求打開一頁面時,發現有一半響應比較快,另一半響應很慢,***頁面是可以打開,但速度不理想,很慢,查看error日誌,發現nginx還是把請求的一半發往已停掉的那臺伺服器,難怪會這麼慢;但當很快(10秒內)再打開一個請求頁面時,速度又非常快了,查看日誌,發現nginx不會把請求的一半發往已停掉的那臺伺服器;過一會再發起一個請求時,又出現有一半響應比較快另一半響應很慢的現象了,查看日誌,nginx又把請求的一半發往已停掉的那臺伺服器;

3、到這裡,我明白了nginx檢查後端應用伺服器的健康時是有一個時間間隔的,應該怎樣處理這個問題呢,當後端有一臺伺服器down機時,用戶訪問感覺不出有慢的現象?原來在nginx負載均衡配置裡加上下面兩個參數時可以有效的解決這個問題:

upstream phpserver {
   server 192.168.0.20:80 weight=5 max_fails=2 fail_timeout=600s;
   server 192.168.0.21:80 weight=5 max_fails=2 fail_timeout=600s;
}

3.1)max_fails = NUMBER ---- 在一定時間內(這個時間在fail_timeout參數中設置)檢查這個伺服器是否可用時產生的最多失敗請求數,默認為1,將其設置為0可以關閉檢查,這些錯誤在proxy_next_upstream或fastcgi_next_upstream(404錯誤不會使max_fails增加)中定義;

3.2)fail_timeout = TIME ---- 在這個時間內產生了max_fails所設置大小的失敗嘗試連接請求後這個伺服器可能不可用,同樣它指定了伺服器不可用的時間(在下一次嘗試連接請求發起之前),默認為10秒,fail_timeout與前端響應時間沒有直接關係,不過可以使用proxy_connect_timeout和 proxy_read_timeout來控制。

我設置當有2個請求失敗,就表示後端的伺服器不可用,在以後的600S時間內nginx不會再把請求發往已檢查出標記為不可用的伺服器,再次測試時,把後端一臺PHP應用服務務器停掉,只是有一個請求打開頁面時出現上面的現象,以後10分鐘內都不會出現了,請求頁面打開速度正常,fail_timeout的值可以根據你的實際情況而定。

原文地址:http://xianghehexiang.blog.51cto.com/2555793/462673

【責任編輯:

佟媛微

TEL:(010)68476606】

點讚 0

相關焦點

  • Nginx+SpringBoot實現負載均衡
    前言本篇文章主要介紹的是Nginx如何實現負載均衡。負載均衡介紹介紹在介紹Nginx的負載均衡實現之前,先簡單的說下負載均衡的分類,主要分為硬體負載均衡和軟體負載均衡,硬體負載均衡是使用專門的軟體和硬體相結合的設備,設備商會提供完整成熟的解決方案,比如F5,在數據的穩定性以及安全性來說非常可靠,但是相比軟體而言造價會更加昂貴;軟體的負載均衡以Nginx這類軟體為主
  • 負載均衡之LVS與Nginx對比
    LVS負載均衡IP隧道模式原理介紹以及配置實戰LVS負載均衡之DR模式原理介紹以及LVS概要文章:LVS負載均衡理論以及算法概要首先要清楚的一點是,LVS是一個四層的負載均衡器,雖然是四層,但並沒有TCP握手以及分手,只是偷窺了IP等信息,而Nginx是一個七層的負載均衡器,所以效率勢必比四層的LVS低很多,但是可操作性比LVS高
  • Nginx 反向代理、負載均衡圖文教程 !
    當然很多都是隨便一說的玩笑話,聽過一笑便可,不必當真,也不必抱怨了好了,今天就直接來說一下主題吧,前端要了解一些運維的Nginx用法,內容不多,簡單看看就好,這兩個功能在工作當中就夠用了,那麼首先來看個問題,什麼是反向代理與負載均衡什麼是反向代理與負載均衡什麼是反向代理當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問
  • 誰說前端不需要懂-Nginx反向代理與負載均衡
    今天就直接來說一下主題吧,前端要了解一些運維的Nginx用法,內容不多,簡單看看就好,這兩個功能在工作當中就夠用了,那麼首先來看個問題,什麼是反向代理與負載均衡什麼是反向代理與負載均衡什麼是反向代理當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問
  • 從0開始,在Linux中配置Nginx反向代理、負載均衡、session共享、動靜分離
    當請求到來時,由負載均衡伺服器負責將請求按照事先設定好的比例向 Web 應用伺服器進行分發,從而增加系統的整體吞吐量。負載均衡可以通過負載均衡軟體實現,也可通過硬體負載均衡器實現。(1)硬體負載均衡硬體負載均衡器的性能穩定,且有生產廠商作為專業的服務團隊。但其成本很高,一臺硬體負載均衡器的價格一般都在十幾萬到幾十萬,甚至上百萬。知名的負載均衡器有 F5、Array、深信服、梭子魚等。
  • 分布式系統的負載均衡
    什麼是負載均衡?記得第一次接觸 Nginx 是在實驗室,那時候在伺服器部署網站需要用 Nginx 。Nginx 是一個服務組件,用來反向代理、負載平衡和 HTTP 緩存等。那麼這裡的 負載均衡 是什麼?負載均衡(LB,Load Balance),是一種技術解決方案。用來在多個資源(一般是伺服器)中分配負載,達到最優化資源使用,避免過載。
  • 大型網站架構系列:負載均衡詳解
    因此軟體負載均衡在網際網路領域大量使用。常用的軟體負載均衡軟體有Nginx,Lvs,HaProxy等。本文參考大量文檔,部分為直接拷貝,參考出處文末。二、Nginx負載均衡Nginx是一款輕量級的Web伺服器/反向代理伺服器,工作在七層Http協議的負載均衡系統。具有高性能、高並發、低內存使用等特點。
  • welcome to nginx|nginx是什麼
    ,現在更多的網站建設人員都開始使用 LINUX 伺服器,那麼 LINUX 伺服器更好的會使用到 nginx,那麼什麼是 nginx,nginx 有什麼用,那麼下面 welcome to nginx 的世界,下面小編將帶大家介紹 nginxnginx 是什麼,nginx 有什麼用。
  • [Python3網絡爬蟲開發實戰] 7.3-Splash負載均衡配置
    訪問其中任何一個服務時,都可以使用Splash服務。2. 配置負載均衡接下來,可以選用任意一臺帶有公網IP的主機來配置負載均衡。首先,在這臺主機上裝好Nginx,然後修改Nginx的配置文件nginx.conf,添加如下內容:這樣我們通過upstream欄位定義了一個名字叫作splash的服務集群配置。
  • 【行業資訊】nginxWebUI 1.9.2 發布,nginx 圖形化管理工具
    功能說明 本項目可以使用WebUI配置nginx的各項功能, 包括http協議轉發, tcp協議轉發, 反向代理, 負載均衡, 日誌管理和解析, ssl證書自動申請、續籤、配置等, 最終生成nginx.conf文件並覆蓋nginx的默認配置文件, 完成nginx的最終功能配置.
  • 寫給前端快速入門的《Nginx 入門指南》
    除此之外,反向代理也是實現負載均衡的基礎,很多大公司的架構都應用到了反向代理。負載均衡負載均衡是什麼?隨著業務的不斷增長和用戶的不斷增多,一臺服務已經滿足不了系統要求了。這個時候就出現了伺服器 集群。這個就叫做負載均衡。負載均衡的示意圖如下:
  • Centos上搭建Nginx方法詳解
    Nginx就是性能非常好的反向代理伺服器,用來做負載均衡。 兩者的區別在於代理的對象不一樣:正向代理是為客戶端代理,反向代理是為服務端代理。nginx能實現負載均衡,什麼是負載均衡呢?就是我的項目部署在不同的伺服器上,但是通過統一的域名進入,nginx則對請求進行分發,減輕了伺服器的壓力。
  • spring cloud中RestTemplate網絡請求框架和Ribbon負載均衡器
    本片主要是介紹spring cloud構建微服務系統的RIbbon負載均衡器和網絡請求框架RestTemplate的介紹。下一篇文章將會通過實例帶領大家如何通過Ribbon和RestTemplate相結合實現負載均衡。
  • Nginx 極簡教程(快速入門)
    Https 反向代理一些對安全性要求比較高的站點,可能會使用 HTTPS(一種使用 ssl 通信標準的安全 HTTP 協議)。這裡不科普 HTTP 協議和 SSL 標準。但是,使用 nginx 配置 https 需要知道幾點:其他和 http 反向代理基本一樣,只是在 Server 部分配置有些不同。
  • nginxWebUI 1.0.5 發布,nginx 可視化網頁配置工具
    功能說明本項目可以使用WebUI配置nginx的各項功能, 包括http協議轉發, tcp協議轉發, 反向代理
  • Nginx---高性能的HTTP和反向代理web伺服器
    #這是因為nginx調度時分配請求到進程並不是那麼的均衡,所以假如填寫10240,總並發量達到3-4萬時就有進程可能超過10240了,這時會返回502錯誤。nginx默認會用client_header_buffer_size這個buffer來讀取header值,如果header過大,它會使用large_client_header_buffers來讀取。
  • 雲上構建高可用實例——應用負載均衡
    2 概念摘要  京東雲中應用負載均衡的具體概念和描述參見其產品文檔,這裡羅列一些筆者學習時重要的點:3 負載均衡架構圖  這裡並不畫已經存在於京東雲文檔中的架構圖,這裡描述的是本文所搭建的應用負載均衡的具體樣例架構圖,之後的部署、性能測試均已此圖為準。
  • 【實戰】基於Nginx、Node.js和Redis的Docker工作流
    讓我們來看看如何使用Nginx來做負載均衡。NGINX容器Nginx的核心是它的配置:一個conf文件。我使用一個簡單的Nginx配置文件定義3個upstream server:我已經註冊一個 node-app upstream server,它會負載均衡3個服務:node1、node2、node3。
  • Nginx主配置文件nginx.conf史上超細中文詳解
    .. 1第2章 nginx配置解釋圖解... 1第3章 Nginx核心配置文件nginx.conf史上最細中文詳解... 23.1 定義Nginx運行的用戶和用戶組... 23.2 nginxworker進程數,即處理請求的進程(熟稱負責接客的服務員)... 23.3 cpu親和力配置,讓不同的進程使用不同的cpu. 2
  • 使用Nginx提升網站訪問速度
    最近幾個月使用 Nginx 和 lighttpd 的網站數比較 >Nginx 本身只是一個 HTTP 和反向代理伺服器,它無法像 Apache 一樣通過安裝各種模塊來支持不同的頁面腳本,例如 PHP、CGI 等;Nginx 支持簡單的負載均衡和容錯;支持作為基本 HTTP 伺服器的功能,例如日誌、壓縮、Byte ranges、Chunked responses、SSL、虛擬主機等等,應有盡有。