Heartsuit's Simple Blog

A place to hold mainly reading notes, and some technical stuff occasionally. 这里主要是一些读书笔记、感悟;还有部分技术相关的内容。


Project maintained by heartsuit Hosted on GitHub Pages — Theme by mattgraham

入门Nginx之-负载均衡(SpringBoot)

目录[-]

简介

采用一个SpringBoot后端服务,在不同的端口启动,以模拟多个服务,这里以两个为例说明;

第一步 备好多项服务,启动

package com.nginx.loadbalance.controller;

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

/**
 * LoadBalanceController
 */
@RestController
public class LoadBalanceController {

    @Value("${server.port}")
    private String port;

    @GetMapping("/api/v1/serve")
    public String serve() {
        return "This is Server: " + port;
    }

}

先打包:mvn clean package;然后开启两个服务。

java -jar loadbalance-0.0.1-SNAPSHOT.jar --server.port=8000
java -jar loadbalance-0.0.1-SNAPSHOT.jar --server.port=9000

第二步 在 Nginx 中完成负载均衡配置

    upstream api-server {  
        server 127.0.0.1:8000;
        server 127.0.0.1:9000;
    }
    server {
        listen       80;
        server_name  localhost;

        location /  {
            proxy_pass   http://api-server;
            proxy_redirect default;
        }
    }

第三步 验证负载均衡

切记,验证之前先要使用nginx -s reload刷新 Nginx 配置。

访问http://localhost/api/v1/serve,观察页面显示的信息,将在两个服务之间按照默认的分发方式进行分发:

Notes:可能遇到的问题

配置负载均衡,浏览器请求时报错 “HTTP Status 400 – Bad Request”,以下是刚开始报错的配置信息
    upstream api_server {  
        server 127.0.0.1:8000;
        server 127.0.0.1:9000;
    }
    server {
        listen       80;
        server_name  localhost;

        location /  {
            proxy_pass   http://api_server;
            proxy_redirect default;
        }
    }

可是,nginx -t 测试结果竟然显示成功,而在后端服务日志报错:

2019-06-14-NginxSpringboot.png

至此,基于Nginx与SpringBoot,实现了负载均衡。


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!


「说点什么吧😊~~😊」: