springboot+spring session+redis+nginx实现session共享和负载均衡
环境
centos7、 jdk1.8、nginx、redis、springboot 1.5.8.RELEASE
session共享
添加spring session和redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
</dependency>
application.properties配置
# session 存入 redis
spring.session.store-type=redis
# redis config
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=123456
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=20000
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=0
此处redis密码设置为123456
测试代码
@RequestMapping("user")
@RestController
public class UserController { @GetMapping("getSessionId")
public String getSessionId(HttpServletRequest request) {
String sessionId = request.getSession().getId();
System.out.println(sessionId);
return sessionId;
}
}
项目完整代码下载地址:[springboot-session-redis]: https://github.com/linj6/springboot-learn/tree/master/springboot-session-redis
负载均衡
nginx.conf配置
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream springboot-session-redis {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://springboot-session-redis;
proxy_set_header Host $host;
# 此配置使得服务端可以获取客户端真实ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}
}
测试
启动redis
systemctl start redis
启动三个应用服务
使用maven打包成jar包后 ,在后台运行三个服务,端口分别为8081、8082、8083,日志分别输出到nohup.out、nohup2.out、nohup3.out
nohup java -jar springboot-session-redis-0.0.1-SNAPSHOT.jar --server.port=8081 > nohup.out &
nohup java -jar springboot-session-redis-0.0.1-SNAPSHOT.jar --server.port=8082 > nohup2.out &
nohup java -jar springboot-session-redis-0.0.1-SNAPSHOT.jar --server.port=8083 > nohup3.out &
启动nginx
访问http://ip/user/getSessionId
页面显示sessionId的值
nginx默认负载均衡策略是采用轮询,此处启动了三个服务,所以访问三次该网址,查看三个服务的日志,会发现每个服务处理了一次请求。
如下图:
nohup.out
nohup2.out
nohup3.out
从上图可知三次输出的sessionId的值也是一样的,所以实现了session共享,也通过nginx实现了负载均衡。
查看redis存储的值
可以看到生成了三个与spring session相关的key
springboot+spring session+redis+nginx实现session共享和负载均衡的更多相关文章
- Session Redis Nginx
Session + Redis + Nginx 一.Session 1.Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我就简单的介绍一下. Session:在计算机 ...
- Nginx + Memcached 实现Session共享的负载均衡
session共享 我们在做站点的试试,通常需要保存用户的一些基本信息,比如登录就会用到Session:当使用Nginx做负载均衡的时候,用户浏览站点的时候会被分配到不同的服务器上,此时如果登录后Se ...
- 使用Nginx、Keepalived构建文艺负载均衡
面对网站服务器端负载增大的问题,是"拿15万¥买一台服务器"来解决,还是靠"加三倍服务器"来解决?还是用其它一些办法? 对于一个访问量日益增加的网站架构而言,从 ...
- 图文解说:Nginx+tomcat配置集群负载均衡
图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用 作者:niumd Blog:http://ari.iteye ...
- Nginx的反相代理, 负载均衡
转自 http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...
- nginx如何做到TCP的负载均衡
原文:https://blog.csdn.net/u011218159/article/details/50966861 TCP 的 负载均衡 这个片段描述了如何通过nginx plus进行负 ...
- octavia的实现与分析(一)·openstack负载均衡的现状与发展以及lvs,Nginx,Haproxy三种负载均衡机制的基本架构和对比
[负载均衡] 大量用户发起请求的情况下,服务器负载过高,导致部分请求无法被响应或者及时响应. 负载均衡根据一定的算法将请求分发到不同的后端,保证所有的请求都可以被正常的下发并返回. [主流实现-LVS ...
- openstack octavia的实现与分析(一)openstack负载均衡的现状与发展以及lvs,Nginx,Haproxy三种负载均衡机制的基本架构和对比
[负载均衡] 大量用户发起请求的情况下,服务器负载过高,导致部分请求无法被响应或者及时响应. 负载均衡根据一定的算法将请求分发到不同的后端,保证所有的请求都可以被正常的下发并返回. [主流实现-LVS ...
- Windos环境用Nginx配置反向代理和负载均衡
Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...
随机推荐
- [笔记] postgresql 流复制(streaming replication)
基本环境说明: os:FreeBSD 9.3 postgresql version: master:192.168.56.101 standby:192.168.56.102 安装过程略,基于pkg包 ...
- Scrum立会报告+燃尽图(十月二十三日总第十四次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...
- MathExamV2.0四则混合运算计算题生成器
MathExamV2.0四则混合运算计算题生成器----211606360 丁培晖 211606343 杨宇潇 一.预估与实际 PSP2.1 Personal Software Process Sta ...
- 各团队对《t铁大导航》评价及我组回复
组名 对我们组的建议 我组回复 (1)跑男 你们的导航前期要做到什么样的程度呢?其实我一直是很期待你们完成时我能够用你们的导航来感受一下咱们铁大校园风情.你们用了数据结构算法来找最短路径,那你们能不能 ...
- 软工实践-Alpha 冲刺 (4/10)
队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 很胖,刚学,照猫画虎做了登录与注册界面. 展示GitHub ...
- linux 虚拟网络模型介绍
第一种隔离模型 每一个虚拟机实例的网卡都有两个接口,一端接在虚拟机内部,一端接在宿主机内部,如上图所示eth0就是接在虚拟机内部的,而vnet0就是接在宿主机内部的,只要再创建一个虚 ...
- centOS7设置静态ip后无法上网的解决,【亲可测】
最近在VMware虚拟机里玩Centos,装好后发现上不了网.经过一番艰辛的折腾,终于找到出解决问题的方法了.最终的效果是无论是ping内网IP还是ping外网ip,都能正常ping通.方法四步走: ...
- php判断是否https
function is_https() { if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'o ...
- docker-py execute echo无效
错误写法: cli.execute('9b2606a50304','echo "bibo">/tmp/1.txt') 争取写法: cli.execute('9b2606a ...
- [翻译]API Guides - Service
官方文档原文地址:http://developer.android.com/guide/components/services.html Service是应用程序组件之一,它并不提供一个用户界面,可以 ...