session redis Spring Session实现Session共享
session redis Spring Session实现Session共享
同域名下相同项目(集群环境)实现共享
在同一个域名下,比如:
同一个项目,部署了多台,这就是典型的集群。我们的入门案例就属于这种应用场景,只不过在实际开发的过程中,我们如果存在了集群,那么肯定会使用nginx进行负载均衡,那么这种情况下我们该如何处理。
1. 案例设计思路
我们将上一个阶段的p2p项目实现集群部署下的共享session redis Spring Session实现Session共享,因为我们只是演示共享,所以我们试用一个简易版本的p2p,在我给大家提供的资料中,该p2p中只包含p2p和session redis,在Linux服务器上,我们准备三台,其中两台部署p2p,并实现共享,另一台部署。
2. 架构图

3. 实现步骤
① 使用Xftp将p2p上传到和9200的目录下


② 使用Xftp将上传到的目录下

③ 使用资源下的SQL脚本,重新创建数据库的表
因为目前这个p2p的项目表结构和上一个阶段的稍微有些区别,所以我们这里更新一下:
A、 启动mysql数据库
B、 通过MySQL客户端工具创建新的库

C、 指定数据库名字为p2p2,字符集编码为utf-8

D、 新建查询,执行p2p-data.sql脚本

E、 执行成功后,表结构如下

④ 通过Xftp工具连接Linux,修改下的的连接信息
A、 使用记事本打开,修改redis.,保存

B、 修改.,保存

C、 修改-dubbo-.xml注册中心的地址,并保存

⑤ 通过Xftp工具连接Linux,修改下的p2p的连接信息
这里只需要修改-dubbo-.xml文件中zk注册中心的地址即可。

⑥ 通过Xftp工具连接Linux,修改下的p2p的连接信息
这里只需要修改-dubbo-.xml文件中zk注册中心的地址即可。

⑦ 确保Linux系统上的各应用服务器启动
注意:先通过ps –ef | grep XXX命令查看,如果已经启动,就不需要再启动了。
A、 启动服务器

B、 启动MySQL服务器

C、 启动Redis服务器

D、 启动服务器(为了避免出错先关闭,再启动)

E、 启动服务器(为了避免出错先关闭,再启动)

F、 启动服务器(为了避免出错先关闭,再启动)


G、 直接访问的方式,在浏览器输入地址访问和


⑧ 使用Nginx对和进行负载均衡
A、 负载均衡的配置,这里使用的是轮询策略
upstream www.p2p.com{
server 127.0.0.1:9100;
server 127.0.0.1:9200;
}
B、匹配的配置,注意:这里对静态资源的处理,我们暂时先注释掉
location /p2p{
proxy_pass http://www.p2p.com;
}
如果要是实现了静态代理,别忘了启动所有的nginx服务器(负载|代理)

C、 重启Nginx

D、 在浏览器中输入地址,直接访问Nginx服务器,实现负载均衡

⑨ Nginx对集群负载均衡之后,登录不成功,但是直接访问或者都是可以成功登录的(丢失),分析原因:
因为默认我们负载均衡使用的是轮询策略,每次发送请求给nginx服务器,都会切换服务器,这个时候没有使用任何共享策略,所以登录不成功。
⑩ Nginx对集群负载均衡之后,共享方案
A、 修改nginx.conf配置文件,将轮询策略修改为

但是这种情况,一旦ip发生变化,或者某台服务器出现故障,会重新分配,不稳定;
所以我们看下这种情况后,将注释掉。

B、 使用
使用 实现共享,我们不需要修改代码,只要修改一些配置文件即可,为了演示方便,我们直接使用Xftp修改已经发布到上的项目;
向和的p2p项目中加jar包,这个jar包我已经准备好了。

修改和的p2p项目的web.xml配置文件,添加 过滤器,因为我们项目本身已经通过启动了容器,所以监听器不需要加了,直接从01–web中拷贝即可;


将01–web项目中下的-.xml和redis.拷贝到和的p2p项目WEB-INF/下


修改和的p2p项目WEB-INF/下.xml文件,引入-.xml


重启三台服务器,浏览器访问进行登录测试,可以实现共享。
同域名下不同项目实现共享
在同一个域名下,有多个不同的项目(项目的上下文根不一样)比如:
/p2p
/shop
如图:

1. 做法:设置路径为根/上下文2. 案例设计思路
在01–web项目的基础上,将本地的上下文根修改为p2psession redis,将本地
3. 实现步骤
① 打开Edit 进行配置
② 在选项卡下,设置本地的 为/p2p

③ 在选项卡下,设置本地的 为/shop

④ 在idea中重新启动本地的两台服务器
⑤ 在浏览器中访问(p2p),设置


⑥ 在浏览器中访问(shop)session redis,获取

⑦ 分析共享失败原因
我们通过浏览器提供的开发人员工具可以发现,这两个请求的的路径(path)不一致,虽然我们已经加了 共享机制session redis Spring Session实现Session共享,但是后台服务器认为这是两个不同的会话(),可以通过Redis客户端工具(Redis )查看,先清空,然后访问,发现是维护了两个不同的,所以不能实现共享。

⑧ 解决方案 设置路径为根/上下文
在-.xml文件中,加如下配置:

⑨ 在idea中重新启动本地的两台服务器
⑩ 在浏览器中访问(p2p),设置

⑪ 在浏览器中访问(shop),获取
注意:测试的时候要先清空浏览器缓存。
同根域名不同二级子域名下的项目实现共享
同一个根域名,不同的二级子域名
比如:
如图:

1. 做法
• 设置路径为根/上下文,项目名一样的话,此步骤可以省略
• 设置的域名为根域名
2. 案例设计思路
在01–web项目的基础上,将本地的上下文根修改为p2p,将本地的上下文根修改为shop;在本机host文件中修改127.0.0.1的映射关系模拟不同的域名访问。
3. 实现步骤
① 延续上面的案例的配置,两台本地服务器9100和9200,上下文根分别是p2p和shop
② 修改本地hosts文件,加入如下配置
③ 在idea中重新启动本地的两台服务器
④ 在浏览器中访问(p2p),设置
注意,这里不再使用访问,而是使用我们映射的域名

⑤ 在浏览器中访问(shop),获取
注意,这里也不再使用访问,而是使用我们映射的域名

⑥ 分析共享失败原因
我们通过浏览器提供的开发人员工具可以发现,虽然这两个的路径(path)都设置为了“/”,但是这两个的域名不一致,虽然我们已经加了 共享机制,但是后台服务器同样认为这是两个不同的会话(),可以通过Redis客户端工具(Redis )查看,先清空,然后访问,发现是维护了两个不同的,所以不能实现共享,也就是说后台区分是否同一个和路径和域名有关。
⑦ 解决方案 设置Cook ie的域名为根域名
在-.xml文件中,加如下配置:
注意:域名要和hosts文件中配置的域名后面一样


⑧ 在idea中重新启动本地的两台服务器
⑨ 在浏览器中访问(p2p),设置
⑩ 在浏览器中访问(shop),获取
注意:清空浏览器缓存
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » session redis Spring Session实现Session共享
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

