nginx+tomcat+memcached配置负载均衡与session共享学习一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx+tomcat+memcached配置负载均衡与session共享学习一相关的知识,希望对你有一定的参考价值。

版本信息:nginx-1.9.11 ,WEB服务器

          apache-tomcat-7.0.34-1,servlet容器

          apache-tomcat-7.0.34-2, servlet容器

          jdk1.6 

          memcached  内存对象缓存系统


首先配置 nginx信息

 配置路径:nginx-1.9.11\conf\nginx.conf

 配置信息    

  #这是基本版的 其它的优化先不提供
    server {
    #访问地址与端口号
        listen       80;
        server_name  192.168.101.243;
        #charset koi8-r
        #access_log  logs/host.access.log  main;
        location / {
		proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #代理的发送请求服务器
        proxy_pass   http://local_tomcat;
	proxy_connect_timeout   5;
        proxy_send_timeout      5;
        proxy_read_timeout      5;
        }
        # 同上server proxy_pass 有配置local_tomcat 配置的两台tomcat服务器地址
    pstream local_tomcat{ 
        # weight 权重  越大访问的次数越多 max_fails访问失败2两次后就不在访问该服务器
        # fail_timeout 标识不访问该服务器超过600秒后重新访问该服务器,与max_fails配合使用
        server 192.168.101.243:18080 weight=1 max_fails=2 fail_timeout=600s;
        server 192.168.101.243:18081 weight=1 max_fails=2 fail_timeout=600s;
       #ip_hash;标识根据第一次访问的IP固定访问服务器,将服务器IP与客户端IP 固定起来
       #还有第二种配置方法就是 根据访问的tomcat server.xml <Engine jvmRoute="tomcat1">
       #需要将nginx配置在linux系统上 这需要第三方模块 没有window版本,缺点是访问的tomcat        #地址宕机后,session丢失。
       }
两台tomcat 配置

修改server.xml的配置信息

tomcat1 Engine 标签 添加 jvmRoute="tomcat1"
tomcat2 Engine 标签 添加 jvmRoute="tomcat2"

修改 Connector标签 端口号

port="18081" protocol="HTTP/1.1" 
port="19091" protocol="AJP/1.3"
Server port="8006" shutdown="SHUTDOWN"


port="18080" protocol="HTTP/1.1" 
port="19090" protocol="AJP/1.3"
Server port="8006" shutdown="SHUTDOWN"


运行两台tomcat 启动nginx 然后访问

访问信息为 http://192.168.101.243/testin/in.jsp


页面交替显示

TOMCAT_1 JSP Test Page

Tue Feb 23 16:10:03 CST 2016 

E912147077710AF041A535F3AADC66CD-n1.tomcat1 

5415651 null




TOMCAT_2 JSP Test Page

Tue Feb 23 16:10:30 CST 2016 

E912147077710AF041A535F3AADC66CD-n1.tomcat2 

25383887


下面 配置  memcached


在CMD 窗口 运行 memcached.exe -d install 注册为服务 然后启动该服务

将memcached提供的jar包 拷入到两台tomcat的  lib下

此处拷入的是

           javolution-5.4.3.1.jar,

           memcached-session-manager-1.5.1.jar,

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

           msm-javolution-serializer-1.5.1.jar,

           spymemcached-2.7.3.jar

在两台comcat的context.xml里配置 此处提供拦截请求去memcached获取session对象的功能

<Manager 

className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 

      <!-- 指向memcached 服务所在的地址,默认开启服务的端口是 11211 --> 

        memcachedNodes="n1:192.168.101.243:11211"  

        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  

    />  



保存后 测试页面为


<html>   
<body>   
<h1>TOMCAT_2 JSP Test Page</h1>   
<%=new java.util.Date()%>
<br></br>
  <%= request.getSession().getId() %>
  <br></br>
 <%= request.getSession().hashCode() %>
 <% session.setAttribute("set","yangjm");%>
</body>   
</html>
<html>   
<body>   
<h1>TOMCAT_1 JSP Test Page</h1>   
<%=new java.util.Date()%>
<br></br>
<%= request.getSession().getId() %>
<br></br>
 <%= request.getSession().hashCode() %>
 <%=session.getAttribute("set")%>
</body>   
</html>


访问后出现的界面为:

TOMCAT_2 JSP Test Page

Tue Feb 23 16:20:06 CST 2016 

E912147077710AF041A535F3AADC66CD-n1.tomcat2 

32696671


TOMCAT_1 JSP Test Page

Tue Feb 23 16:20:26 CST 2016 

E912147077710AF041A535F3AADC66CD-n1.tomcat1 

22994449 yangjm


在tomcat2保存session对象值, 在tomcat1里取出tomcat2保存的值,

此处出session的ID前面一样但是逗号后面的值不一样。 


以上是关于nginx+tomcat+memcached配置负载均衡与session共享学习一的主要内容,如果未能解决你的问题,请参考以下文章

Nginx反向代理+Tomcat+memcached实现session server

Nginx反代至Tomcat基于memcached的session保持

Nginx+Tomcat+Memcached实现会话保持

Nginx+Tomcat+Memcache实现负载均衡及Session共享

linux之tomcat+memcache+nginx的服务搭建

session共享机制(nginx+tomcat+memcached)