设为首页 收藏本站
查看: 577|回复: 0

[经验分享] nginx+tomcat7+memcached做集群以及session复制

[复制链接]

尚未签到

发表于 2016-12-27 08:47:13 | 显示全部楼层 |阅读模式
首先:配置tomcat集群 nginx+ tomcat7
1 安装jdk (可以选择6或者7都可以) 此处不用多说。
2 下载nginx-1.2.5 (下载附件)
3 下载 memcached(下载附件
4
(注意:nginx负载均衡不会有太大问题,但是,在用memcached配置session共享的时候,tomcat的版本可能成为关系到成败的关键,
目前选用的是tomcat apache-tomcat-7.0.12 版本 
 
5、首先用nginx来搭建三台tomcat服务器的负载均衡环境,如何在一台机器启动三个tomcat请参照我的另外一篇文章
  我的tomcat的端口分别是8181,8282,8383
  解压下载的nginx压缩包,我的路径是D:\tomcat7collection\myserver;
  在D:\tomcat7collection\myserver\nginx-1.2.6\conf 下找到 nginx.conf,该文件为nginx的请求分发配置文件,打开nginx.conf做如下修改:
    (1)在http {…} - server{…} - location / {…}中加入一行:“proxy_pass  http://127.0.0.1;”
    修改后如下:   
[html] view plaincopy

  • location / {  
  •            root   html;  
  •            index  index.html index.htm;  
  •            proxy_pass    http://127.0.0.1;  
  •        }  
       (2)
http {…}中加入以下代码:
?
#设定负载均衡的服务器列表
[html] view plaincopy

  • upstream 127.0.0.1 {  <span style="font-family: 'Courier New', Consolas, 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 24px; white-space: pre-wrap; background-color: rgb(248, 248, 248); ">#weigth参数表示权值,权值越高被分配到的几率越大</span>  
  •                   server 127.0.0.1:8181 weight=1;  
  •                   server 127.0.0.1:8282 weight=2;  
  •                   server 127.0.0.1:8383 weight=3;  
  •               }  
 
可以进行请求分发的简单测试,
  启动nginx,打开cmd,进入到 D:\tomcat7collection\myserver\nginx-1.2.6\ 路径下 输入nginx 敲回车,调度处任务管理器看到进程里面有nginx则表示启动成功
  启动三台tomcat
  用eclipse新建一个web项目cluster,该项目下新建一个cluster.jsp文件,编辑该文件内容如下:
 
[html] view plaincopy

  • <%@ page contentType="text/html; charset=UTF-8" %>   
  • <%@ page import="java.util.*" %>   
  • <html><head><title>Cluster Test</title></head>   
  • <body>   
  • <%   
  •   //HttpSession session = request.getSession(true);   
  •   System.out.println(session.getId());   
  •   out.println("<br> SESSION ID:" + session.getId()+"<br>");     
  •   // 如果有新的请求,则添加session属性   
  •   String name = request.getParameter("name");   
  •   if (name != null && name.length() > 0) {   
  •      String value = request.getParameter("value");   
  •      session.setAttribute(name, value);   
  •   }     
  •     out.print("<b>Session List:</b>");     
  •     Enumeration<String> names = session.getAttributeNames();   
  •     while (names.hasMoreElements()) {   
  •         String sname = names.nextElement();    
  •         String value = session.getAttribute(sname).toString();   
  •         out.println( sname + " = " + value+"<br>");   
  •         System.out.println( sname + " = " + value);   
  •    }   
  • %>   
  • </body>   
  • </html>  
修改tomcat\conf\server.xml 
?
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat7-1">
    对应的另外两台tomcat分别是 tomcat7-2 tomcat7-3
?
  将cluster项目打包成war包分别放到每个tomcat的webapps下
  在浏览器中输入localhost:8080/cluster/cluster.jsp 重复刷新可以看到输出的session值在变化说明分发处理成功
 
6 配置session 共享
将上面下载好的memcached的压缩包解压到 D:\tomcat7collection\memcached
使用的是memcached-session-manager-tc7-1.6.3 来进行,使用到的jar包如下:
 
jar包下载地址 
下载如下jar包,点击下载spymemcached-2.7.3.jar
其他jar包可以从如下链接找到:http://code.google.com/p/memcached-session-manager/downloads/list
如果大家懒得挨个去下,我提供了自己下载整理好的下载 tomcate session 共享所需jar包下载
 
 
好了,把上述jar包放到tomcat/lib 目录下,修改每个tomcat的配置文件tomcat\conf\context.xml
  在<context>...</context>标签之间加入如下代码:
?
[html] view plaincopy

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


关闭所有tomcat,打开cmd 进入memcached解压到的路径D:\tomcat7collection\memcached 输入:memcached.exe –d install 回车安装windows服务
输入:memcached.exe –p 11211 –d start 回车启动memcached服务,启动三个tomcat
在浏览器中输入localhost:8080/cluster/cluster.jsp  重复刷新发现session的值不变如下所示,session共享成功
SESSION ID:76AC7C56C4B278ADFDEC6EA782192D15-n1.tomcat7-1

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-319946-1-1.html 上篇帖子: 设计模式在C语言中的应用--读nginx源码 下篇帖子: varnish,squid,apache,nginx缓存的侧重点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表