lnmp架构——nginx+sticky粘制模块实现tomcat负载均衡中的会话保持

前言

弥补上篇的缺憾现使用粘制位sticky来实现会话保持

1.什么是会话保持(Session Persistence)

在一段时间内将同一客户的某一类型请求绑定至 同一台服务器上,使得这一时间段中该客户端所有该类型请求均由同一服务器进行处理
让一个用户的访问始终是一个tomcat服务器,可以保证用户的数据在一个tomcat服务器上面
让一个用户始终访问一个tomcat服务器,不能让同一个用户轮询访问后台的两个tomcat服务器,否则会造成用户的数据丢失

2.nginx会话保持之nginx-sticky-module模块

在使用负载均衡的时候会遇到会话保持的问题,常用的方法有

(1)ip_hash,根据客户端的IP,将请求分配到不同的服务器上
(2)cookie,服务器给客户端下发一个cookie,具有特定cookie的请求会分配给它的发布者
注意:cookie需要浏览器支持,且有时候会泄露数据

3.Sticky工作原理

Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie
来使同一个客户端的请求落在同一台服务器上,默认标识名为route

1.客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
2.后端服务器处理完请求,将响应数据返回给nginx。
3.此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
4.客户端接收请求,并保存带route的cookie。
5.当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。

这一次需要重新编译nginx增加nginx-sticky-module模块

4.具体过程如下

(1)上传解包
在这里插入图片描述

[root@server1 conf]# yum install -y unzip
[root@server1 conf]# mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip /root
[root@server1 ~]# unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

在这里插入图片描述
(2)预编译安装检测
在这里插入图片描述

[root@server1 nginx-1.18.0]# make && make install

在这里插入图片描述
在这里插入图片描述
(3)在tomcat模块中加入sticky
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)在真机的浏览器里面进行测试

开启nginx的负载均衡功能,以及粘制
在浏览器里面进行测试
输入192.168.0.11/test.jsp(nginx代理服务器的ip)
代理服务器通过jsp把动态请求转给tomcat服务器
发现一个用户连续注册使用一直都是同一个tomcat服务器
发现一直在tomcat1上面进行使用,实现了会话保持

在这里插入图片描述
(5)若突然有一台后端挂掉了

down掉一台tomcat服务器
在server1上面:
cd /usr/local/tomcat/bin/
./shutwodn.sh关闭tomcat1服务器
发现用户会一直访问tomcat2,不会变
这就实现了粘制位

在这里插入图片描述

在这里插入图片描述
总结:可以看出客户会一直访问同一台tomcat服务器,实现了会话保持
即使后台一台tomcat服务器宕机,切换到另外一台tomcat服务器上面依然可以实现会话保持
但是此时在第一个tomcat主机上面的数据会丢失


版权声明:本文为weixin_2158原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>