Nginx對SpringBoot實現負載均衡

負載均衡(Load Balance)是集羣技術(Cluster)的一種應用。負載均衡可以將工作任務分攤到多個處理單元,從而提高併發處理能力。目前最常見的負載均衡應用是Web負載均衡。根據實現的原理不同,常見的web負載均衡技術包括:DNS輪詢IP負載均衡和CDN。其中IP負載均衡可以使用硬件設備或軟件方式來實現。

在這裏插入圖片描述

開始搭建

  1. 創建 SpringBoot 項目
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    等待創建完成, 第一次可能有點慢 !
  2. 創建 HelloController.java
package com.nginx.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 使用SpringBoot 項目 測試 Nginx 的負載均衡
 * Created by YongXin Xue on 2020/05/31 19:16
 */
@RestController
public class HelloController {
    /**
     * 使用 Spring EL 讀取配置文件的的參數
     * 獲取當前運行項目的端口
     */
    @Value("${server.port}")
    private Integer port;

    @RequestMapping("/hello")
    public String hello(){
        return "當前項目運行的端口是 : " + port;
    }
}

  1. application.properties配置文件中加人
application.properties
  1. 配置項目的多實例啓動
    在這裏插入圖片描述

修改Nginx的配置文件,添加負載均衡的模塊

  1. 使用 vim 打開nginx.conf配置文件編輯負載均衡的模塊

vim /usr/local/nginx/conf/nginx.conf

  1. 添加內容如下:
 33     #gzip  on;
 34     #負載均衡模塊
 35     upstream myservers{
 36        server 192.168.230.1:8082;
 37        server 192.168.230.1:8083;
 38        server 192.168.230.1:8084;
 39     }
 40     
 41     server {
 42         listen       80;
 43         server_name  localhost;
 44         
 45         #charset koi8-r;
 46         
 47         #access_log  logs/host.access.log  main;
 48         
 49         location / {
 50             #root   html;
 51             #index  index.html index.htm;
 52              proxy_pass http://myservers;
 53              proxy_connect_timeout 30;
 54         }

  1. 如圖:
    在這裏插入圖片描述
  2. 修改完後保存退出 !
  3. 然後重新加載 nginx 的配置文件

nginx -s reload

  1. 默認是輪詢的方式分配請求
  2. 如圖
    在這裏插入圖片描述
    在這裏插入圖片描述

負載均衡的策略

  1. 輪詢(默認): 每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。
  2. 加權輪詢: 給負載均衡模塊的服務器指定權限,按照權重輪詢
#聲明負載均衡的模塊    
upstream  myservers{
    # 每6個請求8081處理1個,8082處理2個,8083處理3個
    server 192.168.230.1:8082 weight=1;
    server 192.168.230.1:8083 weight=2;
    server 192.168.230.1:8084 weight=3;
}
  1. 備機策略:如果主機正常運行,備機不會處理請求,當主機宕機,備機上位
#聲明負載均衡的模塊    
upstream  myservers{
    #backup 指定備機
    server 192.168.230.1:8082 backup;
    server 192.168.230.1:8083 weight=2;
    server 192.168.230.1:8084 weight=3;
}
  1. hash : ip_hash: 根據客戶端的ip進行計算,決定由負載均衡模塊的哪個服務器處理請求
    192.168.230.102 客戶端訪問nginx, 102%負載均衡模塊服務器數量 : 102%3

優點:

  • 同一個客戶端訪問時,始終由固定的服務器處理請求,解決多服務器啓動導致的session失效問題

缺點

  • 如果固定服務器宕機,會導致session失效
  1. fair: 只有安裝第三模塊後纔可以使用, 客戶端請求時,nginx會ping負載均衡模塊的所有服務器,先響應的先處理請求

感謝閱讀, 如有什麼更好的建議或方法 ,可以留言或進羣交流. 各種疑難雜症QQ交流羣:1101584918,歡迎大家加入。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章