Nginx+Springboot 实现负载均衡
Demo 说明
提供完整 Demo 下载学习使用。
环境
- JDK1.8 以以上
- Springboot 2.3.3
- Nginx 1.15 以上
安装
- 下载(https://github.com/liuqi0725/springboot-useful/tree/master/springboot-soft-balance-nginx) 建议使用
GitZip for github
插件下载独立目录 - 执行
clean
、package
操作,将打包的 jar 和application.yaml
放在一起 - 修改
application.yaml
端口地址. - 启动多个服务
- 启动后在不同的客户端机器上访问 http://localhost/hello/username username 自定义 。测试负载均衡
nginx Session 共享
使用反向代理负载均衡,不可避免会面对 Session 共享。一般的方式是 cookie、memcache、redis 来管理共享数据. 后面的 Springboot-security
专题,会专门讲解。
nginx 配置
配置采用的 ip_hash 。可以替换成其他的策略测试。
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;
# 其实 2 个可以都在放本地,修改端口即可
# 本地放一个
server 192.168.1.130:8080;
# 其他机器放一个
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;
}
}
}