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

news/2025/2/26 7:32:58

接下来再使用粘制位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)在server1上面:
cd open/进入openresty的解压目录
cd bundle/进入这个目录
可以看到这个里面没有粘制位的模块(openresty(nginx)没有)不可以做

在这里插入图片描述

cd /usr/local/lnmp/nginx使用之前的nginx尝试一下
/usr/local/openresty/nginx/sbin/nginx -s stop停止这个/usr/local/openresty/nginx/sbin/nginx -s stop停止这个服务
cd conf/
cp /usr/local/openresty/nginx/conf/nginx.conf .将之前的配置文件复制一份
vim nginx.conf

在这里插入图片描述

加入:在tomcat模块里面加入sticky;
/usr/local/lnmp/nginx/sbin/ngxin -s reload报错,nginx也不使用能sticky

在这里插入图片描述
在这里插入图片描述

  • (2)从真机上给server1虚拟机传nginx1.10.1和nginx-sticky两个包
    在这里插入图片描述
  • (3)在server1上面:
    查看安装包并且解压
    在这里插入图片描述
    解压之后发现了sticky模块
    在这里插入图片描述
cd /usr/local/lnmp/nginx/sbin/nginx -V 查看版以及编译情况,发现还是之前的
cd nginx-1.10.1/ 进入10版本的nginx目录
./configure 加上查看出来的 --add-module=/root/nginx-sticky...重新编译

在这里插入图片描述
在这里插入图片描述

cd objs/编译好之后进入objs/这个目录
vim ngx_modules.c可以看到这个nginx有sticky模块了

在这里插入图片描述
在这里插入图片描述

安装make && make install

在这里插入图片描述

cd /usr/local/lnmp/nginx直接将之前的nginx覆盖
sbin/nginx -V版本已经改变了

在这里插入图片描述

cd conf/
cp /usr/lcoal/openresty/nginx/conf/nginx.conf .再复制一份配置文件进行配置
vim nginx.conf

在这里插入图片描述

在上面的tomcat模块中加入sticky;
注释掉php模块的一部分

在这里插入图片描述
在这里插入图片描述

../sbin/nginx开启nginx服务,没有报错
netstat -tlnp | grep 80查看nginx服务开启

在这里插入图片描述

开启nginx的负载均衡功能,以及粘制
在浏览器里面进行测试
输入172.25.12.1/test.jsp(nginx代理服务器的ip)
代理服务器通过jsp把动态请求转给tomcat服务器
发现一个用户连续注册使用一直都是同一个tomcat服务器
  • (4)在真机的浏览器里面进行测试
    发现一直在tomcat1上面进行使用,实现了会话保持
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • (5)down掉一台tomcat服务器
在server1上面:
cd /usr/local/tomcat/bin/
./shutwodn.sh关闭tomcat1服务器
发现用户会一直访问tomcat2,不会变
这就实现了粘制位

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


http://www.niftyadmin.cn/n/2928380.html

相关文章

LNMP架构之动态缓存(nginx +tomcat+memcache) 实现session共享和会话保持——memcache在tomcat中实现session交叉存放

在上一个实验当中,可以实现会话保持了 当其中一个tomcat服务器坏了,由于nginx负载均衡服务器在tomcat1和tomcat2之间实现了轮询 如果用户1在tomcat1服务器上存储的数据,但是当tomcat1这个服务器挂了 客户就会去访问tomcat2的服务器&#xff0…

利用HAProxy实现——负载均衡,添加日志,访问控制,动静分离,读写分离

haproxy类似nginx、apache 均是7层负载:动静分离,比较智能,可以实现高可用负载均衡支持虚拟主机 和nginx很像,但是haproxy(不可以缓存)和nginx(可以缓存),二者都是httpd的…

Android NDK 开发之菜鸟

为什么80%的码农都做不了架构师?>>> 由于本人最近在帮一个朋友看NDK开发,期间遇到过一些不懂的问题,而在网上又没有找到什么好的解决方案;因此记录下来供参考。 首先呢,我使用的工具是Android Studio 一般…

HAproxy七层负载均衡介绍

1.什么是haproxy? HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理 HAProxy运行在…

jqgrid静态数据获取及显示

2019独角兽企业重金招聘Python工程师标准>>> 引入必要文件 在页面中引入jquery.jqGrid.min.js&#xff0c;jquery.js及相关的样式文件 在页面里面定义 <table></table>用于展示数据的表格区&#xff0c;同时加上一个<div></div>做为分页拦…

新建用户组、用户、用户密码、删除用户组、用户(适合CentOS、Ubuntu系统)

这个知识点&#xff0c;模糊了好久。&#xff01;&#xff01;&#xff01; 生产中&#xff0c;习惯如下&#xff1a; useradd&#xff0c;默认会将自身新建用户&#xff0c;添加到同名的用户组中。如&#xff0c;useradd zhouls&#xff0c;执行此命令后&#xff0c;默认就添加…

mySQL (关系型数据库管理系统)的基础知识详解

1.什么是数据库? 数据库&#xff0c;简而言之可视为电子化的文件柜——存储电子文件的处所&#xff0c;用户可以对文件中的数据进行新增、查询、更新、删除等操作 所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集…

iOS程序进入后台,延迟指定时间退出

程序进入后台,延迟指定时间退出 正常程序退出后&#xff0c;会在几秒内停止工作&#xff1b;要想申请更长的时间&#xff0c;需要用到beginBackgroundTaskWithExpirationHandlerendBackgroundTask一定要成对出现 { NSTimer *_timer; int aa; __block UIBackgroundTaskIdentif…