我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 运维优化 > Nginx和Tomcat负载均衡实现session共享
总共48086条微博

动态微博

查看: 1960|回复: 1

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

[复制链接]

72

主题

0

听众

1034

金钱

五袋长老

该用户从未签到

90后

跳转到指定楼层
楼主
发表于 2015-04-21 22:42:35 |只看该作者 |倒序浏览

以前的项目使用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文件中加入

               

[html] view plaincopy



  •             <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>中添加配置

     

[html] view plaincopy



  •                
  • <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来决定是否加锁



科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

89

主题

5

听众

1871

金钱

六袋长老

该用户从未签到

沙发
发表于 2015-07-16 09:35:57 |只看该作者
Syntax error, parameterized types are only available if source level is 1.5 or greater
回复

使用道具 举报

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表