密码:
网络营销 it新闻 军事新闻 社会新闻 it技术 网站优化 游戏资讯 公司资讯
Nginx和Tomcat负载均衡实现session共享
发布日期:2013-04-21 阅读数:1035 来源:装修新闻 由金功呈网站建设公司整理 【关闭】



以前的项目使用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
           
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配置文件的...中添加配置
     
[html] view plaincopy
                
 
     
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"  
           
/>  
 
 
         4、启动Tomcat查看Session是否共享成功。
     说明:
            1、 session存储到memchached实现方案时。他主要功能是修改tomcat的session存储机制,使之能够把session序列化存放到memcached中。
       2、Manager标签属性说明:
             className
                    此属性是必须的。
             memcachedNodes
                        此属性是必须的。这个属性必须包含你所有运行的memcached节点。每个节点的定义格式为::
                   多个之间用空格或半角逗号隔开(如:memcachedNodes="n1:localhost:11211,n2:localhost:11212")。
                       如果你设置单个memcache节点是可选的,所以它允许设置为:(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:: 使用正则表达式来比较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://www.songhu9.com.cn
  • QQ:316675593,电话号码:19807655856
  • 业务范围:公司网站建设、管理软件研发、软件网站二次开发、400电话、电商平台研发、公众号研发!
  • 免责申明:本站内容均来源于网络,版权归原创所有,如有任何版权方面的问题,请与我们联系处理!