Springboot+Nginx怎么做负载均衡
本篇内容主要讲解“Springboot+Nginx怎么做负载均衡”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot+Nginx怎么做负载均衡”吧!
创新互联-专业网站定制、快速模板网站建设、高性价比卢氏网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式卢氏网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖卢氏地区。费用合理售后完善,十载实体公司更值得信赖。
负载均衡介绍
wiki
百度百科
简单来说就是提升吞吐量、避免服务器过载。分为硬(如 F5),软(如 apache、nginx 的反向代理,还有其他模式)
Nginx 负载均衡网络图
Nginx 负载均衡策略
nginx 负载均衡使用 upstream
配置. 包括内置策略,还有通过第三方插件方式的策略。有兴趣的可以深入学习。
轮循(默认)[Round Robin]
每个请求按时间顺序逐一分配到不同的后端服务器,如果服务器shutdown 了,将不在分发请求到该服务器。
servername 自定义名称
server 配置支持 ip/域名 + 有端口/无端口(80) 。内容根据实际配置
可配置 n 个 server
upstream servername { server 192.168.0.1:8080; server 192.168.0.2:8080; }
指定权重 [Least Connections]
通过权重,指定轮循的几率。weight和访问比率成正比,多用于服务器性能有差异的情况。
servername 自定义名称
server 配置支持 ip/域名 + 有端口/无端口(80) 。内容根据实际配置
weight 与访问量成正比,数字越大轮循几率越大
可配置 n 个 server
upstream servername { server 192.168.0.1:8080 weight=8; server 192.168.0.2:8080 weight=10; }
IP 绑定[IP Hash]
每个请求按根据客户端ip的hash结果分配服务器。这样可以客户端在一定时间内可以固定访问一台服务器,可以保持 Session 。 默认执行 20(忘记了)hash 算法查找服务器,如果没有则进行轮循(算是一种高级的轮循)。
servername 自定义名称
server 配置支持 ip/域名 + 有端口/无端口(80) 。内容根据实际配置
可配置 n 个 server
upstream servername { ip_hash; server 192.168.0.1:8080; server 192.168.0.2:8080; }
Server 参数
down 表示当前server 不参与负载
weight 默认为1 数字越大 负载权重越大
max_fails 允许请求失败的次数 当超过最大次数 返回proxy_next_upstream模块定义的错误
fail_timeout:max_fails次失败后,服务端暂停的时间
backup: 其他所有的非backup机器down或者忙的时候 请求这台机器,这台机器的压力最小
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 实现负载均衡
环境
JDK1.8 以以上
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; } } }
到此,相信大家对“Springboot+Nginx怎么做负载均衡”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
本文标题:Springboot+Nginx怎么做负载均衡
文章来源:http://scjbc.cn/article/jspgdp.html