溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Springboot+Nginx怎么做負(fù)載均衡

發(fā)布時(shí)間:2021-07-22 15:23:03 來(lái)源:億速云 閱讀:408 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Springboot+Nginx怎么做負(fù)載均衡”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Springboot+Nginx怎么做負(fù)載均衡”吧!

負(fù)載均衡介紹

wiki

百度百科

簡(jiǎn)單來(lái)說(shuō)就是提升吞吐量、避免服務(wù)器過(guò)載。分為(如 F5),(如 apache、nginx 的反向代理,還有其他模式)

Nginx 負(fù)載均衡網(wǎng)絡(luò)圖

Springboot+Nginx怎么做負(fù)載均衡

Nginx 負(fù)載均衡策略

nginx 負(fù)載均衡使用 upstream 配置. 包括內(nèi)置策略,還有通過(guò)第三方插件方式的策略。有興趣的可以深入學(xué)習(xí)。

輪循(默認(rèn))[Round Robin]

每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果服務(wù)器shutdown 了,將不在分發(fā)請(qǐng)求到該服務(wù)器。

  • servername 自定義名稱

  • server 配置支持 ip/域名 + 有端口/無(wú)端口(80) 。內(nèi)容根據(jù)實(shí)際配置

  • 可配置 n 個(gè) server

upstream servername {
    server 192.168.0.1:8080;
    server 192.168.0.2:8080; 
}
指定權(quán)重 [Least Connections]

通過(guò)權(quán)重,指定輪循的幾率。weight和訪問(wèn)比率成正比,多用于服務(wù)器性能有差異的情況。

  • servername 自定義名稱

  • server 配置支持 ip/域名 + 有端口/無(wú)端口(80) 。內(nèi)容根據(jù)實(shí)際配置

  • weight 與訪問(wèn)量成正比,數(shù)字越大輪循幾率越大

  • 可配置 n 個(gè) server

upstream servername { 
    server 192.168.0.1:8080 weight=8; 
    server 192.168.0.2:8080 weight=10; 
}
IP 綁定[IP Hash]

每個(gè)請(qǐng)求按根據(jù)客戶端ip的hash結(jié)果分配服務(wù)器。這樣可以客戶端在一定時(shí)間內(nèi)可以固定訪問(wèn)一臺(tái)服務(wù)器,可以保持 Session 。 默認(rèn)執(zhí)行 20(忘記了)hash 算法查找服務(wù)器,如果沒(méi)有則進(jìn)行輪循(算是一種高級(jí)的輪循)。

  • servername 自定義名稱

  • server 配置支持 ip/域名 + 有端口/無(wú)端口(80) 。內(nèi)容根據(jù)實(shí)際配置

  • 可配置 n 個(gè) server

upstream servername { 
    ip_hash; 
    server 192.168.0.1:8080; 
    server 192.168.0.2:8080; 
}
Server 參數(shù)
  • down 表示當(dāng)前server 不參與負(fù)載

  • weight 默認(rèn)為1 數(shù)字越大 負(fù)載權(quán)重越大

  • max_fails 允許請(qǐng)求失敗的次數(shù) 當(dāng)超過(guò)最大次數(shù) 返回proxy_next_upstream模塊定義的錯(cuò)誤

  • fail_timeout:max_fails次失敗后,服務(wù)端暫停的時(shí)間

  • backup: 其他所有的非backup機(jī)器down或者忙的時(shí)候 請(qǐng)求這臺(tái)機(jī)器,這臺(tái)機(jī)器的壓力最小

upstream servername { 
    server 192.168.0.1:8080 down; 
    server 192.168.0.2:8080 weight=10 max_fails=30 fail_timeout=12; 
    server 192.168.0.3:8080 weight=8; 
    server 192.168.0.4:8080 backup; 
}

Nginx+Springboot 實(shí)現(xiàn)負(fù)載均衡

環(huán)境
  • JDK1.8 以以上

  • Nginx 1.15 以上

測(cè)試包: https://github.com/liuqi0725/springboot-useful/tree/master/springboot-soft-balance-nginx

測(cè)試包使用
  • 下載測(cè)試包 建議使用GitZip for github 插件下載獨(dú)立目錄

  • 執(zhí)行 cleanpackage 操作,將打包的 jar 和 application.yaml 放在一起

  • 修改 application.yaml 端口地址.

  • 啟動(dòng)多個(gè)服務(wù)

  • 啟動(dòng)后在不同的客戶端機(jī)器上訪問(wèn) http://localhost/hello/username username 自定義 。測(cè)試負(fù)載均衡

nginx Session 共享

使用反向代理負(fù)載均衡,不可避免會(huì)面對(duì) Session 共享。一般的方式是 cookie、memcache、redis 來(lái)管理共享數(shù)據(jù). 后面的 Springboot-security 專題,會(huì)專門講解。

nginx 配置

配置采用的 ip_hash 。可以替換成其他的策略測(cè)試。

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream springbootnginx{
       ip_hash;
       # 其實(shí) 2 個(gè)可以都在放本地,修改端口即可
       # 本地放一個(gè)
       server 192.168.1.130:8080;
       # 其他機(jī)器放一個(gè)
       server 192.168.1.120:8080;
    }

    server {
        listen       80;
        server_name  192.168.1.130;

        location / {
            root   html;
            # 指向反向代理
            proxy_pass http://springbootnginx;
            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;
        }
    }

}

到此,相信大家對(duì)“Springboot+Nginx怎么做負(fù)載均衡”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI