Nginx和Tomcat负载均衡实现session共享

Nginx(反向代理,负载均衡,动静分离,tomcat集群session共享) nginx的反向代理,负载均衡,动静分离,tomcat集群session共享 阅读详情

以前的项目使用Nginx作为反向代理实现了多个Tomcat的负载均衡,为了实现多个Tomcat之间的session共享,使用了开源的Memcached-Session-Manager框架。

    此框架的优势:

         1、支持Tomcat6和Tomcat7

          2、操作粘性或不黏性Session

          3、没有单点故障

          4、Tomcat的故障转移

          5、Memcached的故障转移

          6、可插拔的Session序列化

          7、支持异步保存Session

          8、Sessions发送到Memcached如果他确实修改了

          9、JMX管理和监控

    步骤:

            以下操作步骤的前提是你已经安装了,Tomcat和Memcached,和已经配置了Nginx的负载,

           如果这些您都没做,请先安装和配置,这些网上有很多,不再多说。

       1、下载jar包

                 下载的jar有:

                     memcached-session-manager-1.5.1.jar, memcached-session-manager-tc6-1.5.1.jar, 

                jar包下载地址:http://code.google.com/p/memcached-session-manager/downloads/list

       2、把下载的jar包放到%TOMCAT_HOMT%\lib中。

       3、配置%TOMCAT_HOME%\config\context.xml

                在Context.xml文件中加入


   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
memcachedNodes="n1:localhost:11211,n2:localhost:11212"            
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js){1}quot;  
sessionBackupAsync="false"  
sessionBackupTimeout="1800000"  
copyCollectionsForSerialization="false"  
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"             
     />  


也可在server.xml配置文件的<Host>...<Host>中添加配置

<Context docBase="F:/tomcats/tomcat-7.0.2_2/webapps"  path= "/msm"  reloadable= "true"  >  
      <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
memcachedNodes="n1:localhost:11211,n2:localhost:11212"            
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js){1}quot;  
sessionBackupAsync="false"  
sessionBackupTimeout="1800000"  
copyCollectionsForSerialization="false"  
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"            
/>  
</Context>  
 4、启动Tomcat查看Session是否共享成功。

     说明:

            1、 session存储到memchached实现方案时。他主要功能是修改tomcat的session存储机制,使之能够把session序列化存放到memcached中。

       2、Manager标签属性说明:

             className

                    此属性是必须的。

             memcachedNodes

                        此属性是必须的。这个属性必须包含你所有运行的memcached节点。每个节点的定义格式为<id>:<host>:<port>。

                   多个之间用空格或半角逗号隔开(如:memcachedNodes="n1:localhost:11211,n2:localhost:11212")。

                       如果你设置单个memcache节点<id>是可选的,所以它允许设置为<host>:<port>(memcachedNodes="localhost:11211")。

             failoverNodes

                      可选项,属性只能用在非粘连Session机制中。

                      此属性必须包含memcached节点的Id,此节点是Tomcat作为备份使用。多个之间用空格或逗号隔开

              memcachedProtocol

                   可选项,默认为text。出属性指明memcached使用的存储协议。只支持text或者binary。

              sticky 可选项,默认为true。

                    指定使用粘性的还是非粘性的Session机制。

              lockingMode 可选项, 此属性只对非粘性Session有用,默认为none。

                     指定非粘性Session的锁定策略。他的只有

                        (1)、none:从来不加锁

                        (2)、all: 当请求时对Session锁定,直到请求结束

                        (3)、auto:对只读的request不加锁,对非只读的request加锁

                        (4)、uriPattern:<regexp>: 使用正则表达式来比较requestRUI + "?" + queryString来决定是否加锁,

             requestUriIgnorePattern  可选项

                        此属性是那些不能改备份Session的请求的正则表达式。如果像css,javascript,图片等静态文件被同一个Tomcat和同一个应用上下文来提供,这些

                   请求也会通过memcached-session-manager。但是这些请求在一个http会话中几乎没什么改变,所以他们没必要触发Session备份。所以那些静态文件

                   没必要触发Session备份,你就可以使用此属性定义。此属性必须符合java regex正则规范。

            sessionBackupAsync 可选项,默认true

                        指定Session是否应该被异步保存到Memcached中。 如果被设置为true,backupThreadCount设置起作用,如果设置false,通过sessionBackupTimeout

                   设置的过期时间起作用。

            backupThreadCount 可选项,默认为CPU内核数。

                       用来异步保存Session的线程数(如果sessionBackupAsync="true")。

            sessionBackupTimeout  可选项,默认100,单位毫秒

                       设置备份一个Session所用的时间,如果操作超过时间那么保存失败。此属性只在sessionBackupAsync="false"是起作用。默认100毫秒

            sessionAttributeFilter 可选项 从1.5.0版本有

                       此属性是用来控制Session中的那个属性值保存到Memcached中的正则表达式。郑则表达式被用来匹配Session中属性名称。如

                  sessionAttributeFilter="^(userName|sessionHistory)$" 指定了只有"userName"和"sessionHistory"属性保存到Memcached中。

                  依赖于选择的序列化策略。

            transcoderFactoryClass 可选,默认为 de.javakaffee.web.msm.JavaSerializationTranscoderFactory

                       此属性值是创建序列化和反序列化保存到Memcached中的Session的编码转换器的工厂类名。这个指定的类必须实现了de.javakaffee.web.msm.TranscoderFactory

                 和提供一个无参的构造方法。例如其他的有效的实现在其他packages/jars中提供如:msm-kryo-serializer,msm-xstrea-serializer和msm-javolution-serializer.

            copyCollectionsForSerialization 可选项,默认false。

            customConverter 可选项

                  

            enableStatistics 可选项,默认true

                   用来指定是否进行统计。

            enabled 可选项,默认true

                    指定Session保存到Memcached中是否可用和是否可以通过JMX进行改变。只用于粘性Session。

           更多说明请看:http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration





通过Nginx搭建Tomcat9集群并实现Session共享 主要介绍了通过Nginx搭建Tomcat9集群并实现Session共享,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 立即下载

相关推荐

旋转变压器软件解码simulink仿真

旋转变压器软件解码simulink仿真、电机转速位置测量

qq_31446727的博客 2582

nginx负载均衡的session问题

查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享 PHP服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,下面提供了几种方式来解决session共享的问题: 1、不使用session,换用cookie session是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站。

qq_38119124的博客 3403

【已解决,极简单!!】求助,R语言读取csv文件各种报错

【已解决】本来之前没问题,今天更新了Rstudioh以及R,就各种报错了。也看了目前能读取到的文件,从第一个中文字符直接就没有了。也就是说 还是读取中文字符的问题?新人初学,求大佬轻喷!

youyouluming945的博客 3878

nginx集群tomcat,session共享问题

简介上一篇中,nginx实现了tomcat集群,但是其实集群还有很多问题,比如session共享问题。简单来说就是通过负载均衡之后,用户第一次请求的tomcat和第二次请求的tomcat基本不是同一个,但是你在第一次请求放在session中的值只有一个tomcat才,第二个请求的那个tomcat里面是没有的。这样就出现了用户不停登入的情况。。。方法一:复制session...

weixin_30655219的博客 226

Windows Server 2019整机备份与异机还原实战:从虚拟机到物理机的完整迁移指南

本文详细介绍了Windows Server 2019整机备份与异机还原的实战操作,涵盖从虚拟机到物理机的完整迁移流程。通过环境准备、备份策略设计、具体操作步骤及迁移后优化等内容,帮助用户实现系统环境的无缝迁移,特别适用于服务器硬件升级、数据中心迁移等场景。

weixin_30555125的博客 133

(一)利用Python实现数据集读取,Python基本文件操作介绍

机器学习是计算机对大量数据的分析过程,在机器学习的实际项目中,通常都需要准备数据集,数据集通常包含的数据数量是庞大的。例如,在处理计算机视觉领域的项目时,每一张图片都是一个单独的文件,为了提高模型训练的效果,图片数量通常会比较多,因此需要合理且高效的操作将所有的图片数据读取。本篇旨在介绍如何用Python对海量文件进行遍历,也是机器学习实践的第一步。.........

ZZR2631574030的博客 6357

Nginx搭建负载均衡Session共享

一、负载均衡原理 1、什么是负载均衡 负载均衡:分摊到多个操作单元上进行执行,和它的英文名称很匹配。就是我们需要一个调度者,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡。 针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载...

暮云归@技术人生 1202

win7 vs2012+wdk8.0 搭建wdf驱动开发环境

开发环境搭建: 系统:win7 x64 工具:vs2012 + WDK8.0 插件:wdfcoinstaller.msi (1)先安装vs2012,再安装wdk8.0,这样在打开vs2012时可以创建windows drivers类型的工程。 注:vs2012不能安装wdk8.1,wdk8.1必须安装在vs2013上 下载链接:http://msdn.microsoft.com/zh-cn/win...

技术联盟 5343

tomcat将session保存到memcached中

环境需要2台安装了memcache机器和1台安装了tomcat的机器 memcached机器 启动服务即可 tomcat机器 拷入jar包 jar包下载地址https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration javolution-5.4.3.1 主页的Add custom ...

qq_39170130的博客 254

天龙八部TLBB系列 - 网单服务端各目录文件说明【超详细】

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等) --- 天龙八部服务端各目录详细说明

空名先生 7636

Midscene.js(1):Chrome 插件实战之基于 AI 驱动 WEB UI 自动化测试「喂饭教程」

Midscene.js 是一款开源的AI驱动UI自动化工具,支持自然语言交互、数据提取、断言验证等多种功能。自然语言交互。本文将以 Midscene.js Chrome 插件为例,带你从零上手,体验如何用最简单的方式实现高效、智能的UI自动化测试。

blues_C的博客 4404

nginx +多个tomcat实现负载均衡和session共享(完整教程,图文并茂)

使用nginx和tomcat配置负载均衡和session共享 文章目录使用nginx和tomcat配置负载均衡和session共享安装nginx安装多个tomcat设置负载均衡设置session共享 安装nginx ubuntu安装nginx centOs安装nginx 安装多个tomcat ubuntu和centOs的安装规则一样,故不作区分 设置负载均衡 设置session共享 ...

小雪的博客 8598

java毕设:基于springboot的服装搭配推荐系统(springboot+layui+jq+html)1011

项目描述 基于springboot的服装搭配推荐系统: 基于天气服装搭配推荐系统为用户提供未来一周的天气预报情况,并根据预报天气和用户现有的服装进行着装搭配,以及显示未来6小时精确温度数据为用户提供更精确的天气信息便于用户在出行前对自己的着装进行调整,每日用户可以根据自己当日对系统推荐的着装搭配舒适度进行反馈,系统将根据用户的反馈对用户着装的保暖系数进行相应调整,通过多次的反馈和调整形成对用户着装的个体化和精确化的推荐。 本系统可以为用户提供以下服务: 1.未来五天的天气信息显示; 2.未来六小时内天气温度

qq_2537071370的博客 3647

nginx+tomcat+memcached实现负载均衡和session共享

server1:tomcat和memcached,做调度器,使用nginx server2:安装tomcat和memcached 【server1】主机搭建JDK [root@server1 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local [root@server1 ~]# cd /usr/local/ [root@server...

Argued_D的博客 377

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Nginx+Tomcat+Memcached实现负载均衡和session共享

server1:IP 172.25.254.1 安装tomcat和memcached,做调度器,使用nginx server2:IP 172.25.254.2 安装tomcat和memcached (1)Nginx负责负载均衡。 (2)Tomcat负责实际服务。 (3)Memcached负责同步Tomcat的Session,达到Session共享的目的。 一、server1 :172...

JaneNancy的博客 311

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Nginx+Tomcat+Memcached实现负载均衡和Session共享

概述: 1.tomcat简介 Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。 因为Tomcat 技术先进、性能稳定,成为目前比较流...

luxunlx123的博客 300

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Nginx(Openresty)+Tomcat+Memcache实现负载均衡和Session共享

Nginx(openresty)部分的内容查看我之前博文:https://blog.youkuaiyun.com/y_yang666/article/details/87797541 Tomcat简介: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,...

y_yang666的博客 695

Linux运维——nginx+tomcat+memcached实现负载均衡和session共享

 #########mamche:mysqld的缓存;工作在内存####### 一、配置mamche [root@vm1 ~]# cd lnmp/ [root@vm1 lnmp]# tar zxf memcache-2.2.5.tgz [root@vm1 lnmp]# cd memcache-2.2.5 [root@vm1 memcache-2.2.5]# vim ~/.bash_profil...

msm05138240的博客 438

企业部分实战---tomcat+nginx+memcache实现对tomcat服务的负载均衡和session共享

企业部分实战---tomcat+nginx+memcache实现对tomcat服务的负载均衡和session共享一、什么是tomcat?二、nginx + tomcat三、nginx + tomcat + memcache实现步骤 一、什么是tomcat? 1.实验环境搭建: 两台主机主机名分别为server7和 server8 , ip地址分别为172.25.12.7和172.25.12.8 2.什么是tomcat? 由Apache组织提供的一种Web服务器,提供对jsp和Servlet的支持。它是一种轻

ltsazx的博客 222

nginx+memcached+tomcat实现负载均衡和session共享

如何安装的就不介绍了,自己网上搜。 配置nginx。这个是接着上一篇cas单点登录上配置的。 upstream 127.0.0.1 { server 127.0.0.1:18080 weight=2; server 127.0.0.1:28080 weight=2; ser

孤独症有所好转 3776

centos 上tomcat+nginx+redis 实现负载均衡和session共享

概述 tomcat集群配置有多种方式,这里讨论的是centos 上tomcat+nginx+redis实现集群和session共享。 如同把大象装进冰箱需要分三步走一样,tomcat集群的配置也是一样,需要以下几个步骤: 1.安装jdk,配置环境变量; 2.安装配置tomcat; 3.安装nginx,配置实现负载均衡; 4.安装配置redis,配置tomcat,实现session共享; 5.使用测...

simple_ceh的博客 459
上一篇: jQuery Validation 使用记录
下一篇: spring的ioc和di详解
梦想涨价了
博客等级 码龄15年 88粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值