最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx+SpringBoot實現(xiàn)負(fù)載均衡的示例

 更新時間:2020年10月19日 14:32:59   作者:極客網(wǎng)  
這篇文章主要介紹了Nginx優(yōu)雅的實現(xiàn)負(fù)載均衡,幫助大家更好的理解和使用nginx,感興趣的朋友可以了解下

負(fù)載均衡介紹

在介紹Nginx的負(fù)載均衡實現(xiàn)之前,先簡單的說下負(fù)載均衡的分類,主要分為硬件負(fù)載均衡和軟件負(fù)載均衡,硬件負(fù)載均衡是使用專門的軟件和硬件相結(jié)合的設(shè)備,設(shè)備商會提供完整成熟的解決方案,比如F5,在數(shù)據(jù)的穩(wěn)定性以及安全性來說非常可靠,但是相比軟件而言造價會更加昂貴;軟件的負(fù)載均衡以Nginx這類軟件為主,實現(xiàn)的一種消息隊列分發(fā)機制。

簡單來說所謂的負(fù)載均衡就是把很多請求進行分流,將他們分配到不同的服務(wù)器去處理。比如我有3個服務(wù)器,分別為A、B、C,然后使用Nginx進行負(fù)載均衡,使用輪詢策略,此時如果收到了9個請求,那么會均勻的將這9個請求分發(fā)給A、B、Cf服務(wù)器,每一個服務(wù)器處理3個請求,這樣的話我們可以利用多臺機器集群的特性減少單個服務(wù)器的壓力。

Nginx實現(xiàn)負(fù)載均衡的示例圖:

負(fù)載均衡策略

NGINX開源支持四種負(fù)載平衡方法,而NGINX Plus又增加了兩種方法。

1.Round Robin:

對所有的請求進行輪詢發(fā)送請求,默認(rèn)的分配方式。

nginx.conf 配置示例:

upstream xuwujing {
  server www.panchengming.com;
  server www.panchengming2.com;
}

注:上面的域名也可以用IP替代。

2.Least Connections:

以最少的活動連接數(shù)將請求發(fā)送到服務(wù)器,同樣要考慮服務(wù)器權(quán)重。

nginx.conf 配置示例:

upstream xuwujing {
  least_conn;
  server www.panchengming.com;
  server www.panchengming2.com;
}

3.IP Hash :

發(fā)送請求的服務(wù)器由客戶機IP地址決定。在這種情況下,使用IPv4地址的前三個字節(jié)或整個IPv6地址來計算散列值。該方法保證來自相同地址的請求到達相同的服務(wù)器,除非該服務(wù)器不可用。

upstream xuwujing {
   ip_hash;
   server www.panchengming.com;
   server www.panchengming2.com;
}

4.Generic Hash:

請求發(fā)送到的服務(wù)器由用戶定義的鍵決定,該鍵可以是文本字符串、變量或組合。

	upstream xuwujing {
	  hash $request_uri consistent;
	  server www.panchengming.com;
    server www.panchengming2.com;
	}

5.Least Time (NGINX Plus only)

對于每個請求,NGINX Plus選擇具有最低平均延遲和最低活動連接數(shù)的服務(wù)器,其中最低平均延遲是根據(jù)包含least_time指令的下列參數(shù)計算的:

  • header : 從服務(wù)器接收第一個字節(jié)的時間。
  • last_byte: 從服務(wù)器接收完整響應(yīng)的時間。
  • last_byte inflight:從服務(wù)器接收完整響應(yīng)的時間。
upstream xuwujing {
least_time header;
server www.panchengming.com;
server www.panchengming2.com;
}

6.Random:

每個請求將被傳遞到隨機選擇的服務(wù)器。如果指定了兩個參數(shù),首先,NGINX根據(jù)服務(wù)器權(quán)重隨機選擇兩個服務(wù)器,然后使用指定的方法選擇其中一個。

  • least_conn :活動連接的最少數(shù)量
  • least_time=header (NGINX Plus):從服務(wù)器接收響應(yīng)標(biāo)頭的最短平均時間 ($upstream_header_time)。
  • least_time=last_byte (NGINX Plus) :從服務(wù)器接收完整響應(yīng)的最短平均時間($upstream_response_time)。
upstream xuwujing {
random two least_time=last_byte;
server www.panchengming.com;
server www.panchengming2.com;
}

Nginx+SpringBoot實現(xiàn)負(fù)載均衡

環(huán)境準(zhǔn)備

  • 依賴JDK1.8以上的版本;
  • 依賴Nginx環(huán)境;

這里的項目就用本人之前的一個springboot項目,SpringBoot的項目地址: https://github.com/xuwujing/springBoot-study/tree/master/springboot-thymeleaf

首先我們下載這個項目,輸入:mvn clean package 將項目進行打包為jar文件,然后將application.properties和此jar項目放在一個文件夾中,然后復(fù)制該文件夾(這里為了清晰所以進行復(fù)制,實際不復(fù)制更改端口重啟也行),修改復(fù)制文件夾application.properties的端口,比如改為8086。

Nginx 配置

我們找到nginx的配置文件nginx.conf,該配置在nginx/conf/nginx.conf目錄下,然后我們來修改該配置,新增如下配置:

upstream pancm{
  server 127.0.0.1:8085;
  server 127.0.0.1:8086;
}
  • upstream pancm:定義一個名稱,隨意就行;
  • server + ip:端口 or 域名;

如果不想使用Round Robin策略,也可以換成其他的。

然后在server添加/修改如下配置:

 server {
    listen    80;
    server_name 127.0.0.1;


    location / {
      root  html;
      proxy_pass http://pancm;
      proxy_connect_timeout 3s;
      proxy_read_timeout 5s;
      proxy_send_timeout 3s;	
      index index.html index.htm;
    }

    error_page  500 502 503 504 /50x.html;
    location = /50x.html {
      root  html;
    }
  }

配置說明:

  • server: 虛擬主機的名稱,一個http中可以配置多個server;
  • listen:Nginx默認(rèn)的端口;
  • server_name:Nginx服務(wù)的地址,可以使用域名,多個用空格分隔。
  • proxy_pass:代理路徑,一般配置upstream后面的名稱用于實現(xiàn)負(fù)載均衡,可以直接配置ip進行跳轉(zhuǎn);

nginx.conf 完整的配置:

events {
  worker_connections 1024;
}

error_log nginx-error.log info;
http {
  include    mime.types;
  default_type application/octet-stream;
  sendfile    on;
  keepalive_timeout 65;

   upstream pancm{
    server 127.0.0.1:8085;
    server 127.0.0.1:8086;
  }
  
  server {
    listen    80;
    server_name 127.0.0.1;


    location / {
      root  html;
      proxy_pass http://pancm;
      proxy_connect_timeout 3s;
      proxy_read_timeout 5s;
      proxy_send_timeout 3s;	
      index index.html index.htm;
    }

    error_page  500 502 503 504 /50x.html;
    location = /50x.html {
      root  html;
    }
  }
}

負(fù)載均衡測試

在完成Nginx配置之后,我們啟動Nginx。
linux輸入/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf,如果已經(jīng)啟動可以使用/usr/local/nginx/sbin/nginx -s reload命令進行熱加載配置文件,Windows直接點擊Nginx目錄下的nginx.exe或者 cmd運行start nginx進行啟動,如果啟動了依舊可以使用nginx -s reload進行熱加載。

Nginx啟動完成之后,我們依次啟動剛剛下載的springboot和復(fù)制更改端口的項目,輸入:java -jar springboot-jsp-thymeleaf.jar啟動。

都啟動成功之后,我們在瀏覽器輸入服務(wù)的ip即可進行訪問。

示例圖:

注:這里我使用的是windows系統(tǒng)做測試,實際linux也是一樣的。

然后我們進行操作,并查看控制臺日志!

從上述示例圖中我們進行4次界面刷新請求,最終平均分配到兩個服務(wù)中去了,從上述的測試結(jié)果中我們實現(xiàn)了負(fù)載均衡。

這里我在說一下使用Nginx的注意事項,在進行學(xué)習(xí)和測試的時候,使用nginx默認(rèn)的端口實現(xiàn)負(fù)載均衡一般沒有什么問題,但是當(dāng)我們在項目中使用的時候,特別有登錄界面的并且端口不是80的時候,會出現(xiàn)登錄的界面無法跳轉(zhuǎn),進行調(diào)試的話會出現(xiàn) net::ERR_NAME_NOT_RESOLVED這樣的錯誤,出現(xiàn)這個原因的是因為nginx默認(rèn)的端口是80,那么默認(rèn)跳轉(zhuǎn)的也是這個,所以出現(xiàn)這種情況的時候,需要在location 下添加proxy_set_header Host $host:port 這個配置,port 和listen 的端口保持一致就可以了。

以上就是Nginx+SpringBoot實現(xiàn)負(fù)載均衡的示例的詳細(xì)內(nèi)容,更多關(guān)于Nginx實現(xiàn)負(fù)載均衡的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Nginx多個前端服務(wù)配置方式詳解

    Nginx多個前端服務(wù)配置方式詳解

    這篇文章主要介紹了Nginx多個前端服務(wù)配置方式,主要包括多個location配置,多個server配置,配置方式本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2022-03-03
  • Nginx支持websocket的配置詳解

    Nginx支持websocket的配置詳解

    本文主要介紹了Nginx支持websocket的配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 如何在centos7中安裝nginx

    如何在centos7中安裝nginx

    近期做項目用到了nginx,所以自己動手來在Centos7上安裝nginx,以下是安裝步驟。
    2018-09-09
  • CentOS7下非編譯安裝Nginx的圖文教程

    CentOS7下非編譯安裝Nginx的圖文教程

    這篇文章主要為大家詳細(xì)介紹了CentOS7下非編譯安裝Nginx的圖文教程,文中通過示例圖片進行了詳細(xì)講解,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • Nginx的c30k問題解決方法

    Nginx的c30k問題解決方法

    這篇文章主要介紹了Nginx的c30k問題解決方法,本文同時探討了Nginx AIO的使用問題,需要的朋友可以參考下
    2014-09-09
  • nginx lua集成kafka的實現(xiàn)方法

    nginx lua集成kafka的實現(xiàn)方法

    這篇文章主要介紹了nginx lua集成kafka的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • nginx設(shè)置攔截請求的幾種方法

    nginx設(shè)置攔截請求的幾種方法

    本文主要介紹了nginx設(shè)置攔截請求的幾種方法
    2024-05-05
  • Nginx 啟用 OCSP Stapling的配置

    Nginx 啟用 OCSP Stapling的配置

    本篇文章主要介紹了Nginx 啟用 OCSP Stapling的配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Nginx實現(xiàn)正向代理實例

    Nginx實現(xiàn)正向代理實例

    這篇文章主要介紹了Nginx實現(xiàn)正向代理實例,正向代理的作用在于正向代理隱藏了用戶,用戶的請求被代理服務(wù)器接收代替,到了服務(wù)器,服務(wù)器并不知道用戶是誰,需要的朋友可以參考下
    2023-08-08
  • Centos7 安裝Nginx整合Lua的示例代碼

    Centos7 安裝Nginx整合Lua的示例代碼

    這篇文章主要介紹了Centos7 安裝Nginx整合Lua的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論

清水河县| 自贡市| 洱源县| 凌海市| 延安市| 丹寨县| 昭苏县| 东源县| 东辽县| 建宁县| 芷江| 泰宁县| 郁南县| 彝良县| 个旧市| 平舆县| 大埔县| 平舆县| 高阳县| 山西省| 姚安县| 海晏县| 孟州市| 九江县| 浙江省| 永登县| 龙岩市| 乡城县| 河北省| 泸水县| 梁平县| 黄山市| 西昌市| 德庆县| 大名县| 安仁县| 渭源县| 分宜县| 华池县| 茶陵县| 绩溪县|