LNMP——nginx+sticky粘制模块实现tomcat负载均衡中的会话保持( nginx会话保持之sticky模块)

接下来再使用粘制位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模块

具体过程如下
(1)在server1上面:
cd open/进入openresty的解压目录
cd bundle/进入这个目录
可以看到这个里面没有粘制位的模块(openresty(nginx)没有)不可以做

下载nginx1.10.1(其他版本可能不支持stick)和nginx-sticky的安装包,并编译nginx
[root@server1 local]# /usr/local/openresty/nginx/sbin/nginx -s stop
[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz
[root@server1 ~]# tar zxf nginx-sticky-module-ng.tar.gz
[root@server1 ~]# /usr/local/lnmp/nginx/sbin/nginx -V #查看以前版本编译参数
nginx version: nginx/1.16.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx
在这里插入图片描述
有了nginx-skticky模块
在这里插入图片描述
[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx --add-module=/root/nginx-sticky-module-ng
在这里插入图片描述
#重新编译,添加sticky模块
[root@server1 nginx-1.10.1]# make && make install
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有这个模块了
在这里插入图片描述
[root@server1 nginx-1.10.1]# make && make install
在这里插入图片描述
cd /usr/local/lnmp/nginx直接将之前的nginx覆盖
sbin/nginx -V版本已经改变了

在这里插入图片描述

拷贝之前openresty的配置文件为nginx1.10.0版本的配置文件,并修改后重新加载
[root@server1 nginx-1.10.1]# cp /usr/local/openresty/nginx/conf/nginx.conf /usr/local/lnmp/nginx/conf
cp: overwrite `/usr/local/lnmp/nginx/conf/nginx.conf’? y
[root@server1 nginx-1.10.1]# cd /usr/local/lnmp/nginx/conf
[root@server1 conf]# vim nginx.conf
在这里插入图片描述
在上面的tomcat模块中加入sticky;
注释掉php模块的一部分

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

down掉一台tomcat服务器
server1上面:
cd /usr/local/tomcat/bin/
./shutdown.sh 关闭tomcat1服务器
发现用户会一直访问tomcat2,不会变
这就实现了粘制位
在这里插入图片描述
可以看出客户会一直访问同一台tomcat服务器,实现了会话保持
即使后台一台tomcat服务器宕机,切换到另外一台tomcat服务器上面依然可以实现会话保持
但是此时在第一个tomcat主机上面的数据会丢失

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值