linux Nginx配置篇:tomcat8+nginx+memcache集群session共享

前言:受公司当前开发框架影响,使用session保存用户信息,所以做负载均衡时要考虑session共享的问题,否则请求分发到不同服务器,用户无法正常使用。开发框架如果不是使用session保存用户信息,可以不考虑这个问题。


1.安装memcache

1.1.先安装依赖库:yum -y install libevent

1.2.因为有memcache的yum安装源,我这里直接使用yum安装,也可去官网下载源码包编译安装。

1.2.1先查看memcache的安装源:yum list | grep memcache。如下图,有memcache的安装源。


1.2.2执行yum -y install memcached.x86_64安装。



2.tomcat配置

2.1memcache有四种session管理方式,在此我们使用官网推荐的效率最高的一种:kryo。

所需的jar包有:

asm-3.2.jar
kryo-1.04.jar
kryo-serializers-0.11.jar
memcached-session-manager-1.8.1.jar
memcached-session-manager-tc8-1.8.1.jar
minlog-1.2.jar
msm-kryo-serializer-1.8.1.jar
reflectasm-1.01.jar
spymemcached-2.11.1.jar

另外,特别注意,因为笔者是tomcat8,所以这里用的是memcached-session-manager-tc8-1.8.1.jar,tc8表示tomcat8,如果tomcat是其他版本要下载对应版本的jar包,因为笔者当时被这个坑惨了...可以自行百度tomcat8+memcache jar包下载,也可去笔者的网盘下载:http://pan.baidu.com/s/1c2rNZEg。下载完成后将上述的jar包扔到集群各个tomcat的lib目录下。

2.2修改集群各个tomcat的context.xml文件,加入以下配置项:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
  memcachedNodes="n1:192.168.88.38:11211"
  sticky="false"
  sessionBackupAsync="false"
  lockingMode="auto"
  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
  transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

memcachedNodes:已被监听的负载均衡的服务器,多个服务器可写成memcachedNodes="n1:192.168.88.38:11211,n2:192.168.88.39:11211",注意这里的ip和端口要和启动memcache时监听的ip和端口一致。
sticky="false":使用非粘性session,默认为true使用粘性session。
粘性session:将某个用户的请求交给tomcat集群中的某一个tomcat,之后该tomcat就负责保存该用户的session,如果该tomcat挂掉了,该用户的session也就消失了。
非粘性session:将用户请求进行分发,也会复制多份session到不同tomcat,只要有一个tomcat没挂掉,该用户的session就不会消失。.
transcoderFactoryClass:使用的session管理方式,这里我们写的是de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory,表示使用kryo的管理方式。
 
3.在集群的各个服务器启动memcache(参照第一节中的memcache安装方法在各个服务器安装好):

memcached -d -m 128 -p 11211 -u root


memcache启动参数说明:

-p 指定端口号(默认11211)  
-m 指定最大使用内存大小(默认64MB)  
-t 线程数(默认4)  
-l 连接的IP地址, 默认是本机,PS:此处按说是可以在一台服务器上设置连接另外一台服务器ip,但是在测试之后并没有用,哪位童鞋有结果可以在评论区交流。  
-d start 启动memcached服务  
-d restart 重起memcached服务  
-d stop|shutdown 关闭正在运行的memcached服务  
-m 最大内存使用,单位MB。默认64MB  
-M 内存耗尽时返回错误,而不是删除项  
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
nginx负载均衡配置示例,启动nginx。


在集群的各个服务器的各个tomcat的con/context.xml配置示例,启动tomcat。另外需要注意的是,修改了memcache的启动项后tomcat需要重启。


至此,集群实现session共享。

以上。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值