Nginx+memcached+tomcat配置集群session共享负载均衡

配置环境:

windows xp下

jdk1.7.0_10      nginx-1.2.6  (附下载)      memcached-1.2.6-win32-bin.zip (附下载)    tomcat7.0.12

*(注意:nginx负载均衡不会有太大问题,但是,在用memcached配置session共享的时候,tomcat的版本可能成为关系到成败的关键,

一开始用的tomcat7.0.34,总是抛出异常,原因应该是没有匹配最新tomcat的memcached 的jar包)

1、首先用nginx来搭建三台tomcat服务器的负载均衡环境,如何在一台机器启动三个tomcat请参照《在一台机器上启动三个tomcat》

  我的tomcat的端口分别是8081,8082,8083

  解压下载的nginx压缩包,我的路径是D:\MyServer;

  在D:\MyServer\nginx-1.2.6\conf 下找到 nginx.conf,该文件为nginx的请求分发配置文件,打开nginx.conf做如下修改:

   (1)在http {…} - server{…} - location / {…}中加入一行:“proxy_pass  http://127.0.0.1;”

    修改后如下:

         location / {root   html;index  index.html index.htm;proxy_pass    http://127.0.0.1;}

  

  (2)在http {…}中加入以下代码:

       #设定负载均衡的服务器列表upstream 127.0.0.1 {#weigth参数表示权值,权值越高被分配到的几率越大server 127.0.0.1:8081 weight=1;server 127.0.0.1:8082 weight=2;server 127.0.0.1:8082 weight=3;}

  

  可以进行请求分发的简单测试,

  启动nginx,打开cmd,进入到 D:\MyServer\nginx-1.2.6\ 路径下 输入nginx 敲回车,调度处任务管理器看到进程里面有nginx则表示启动成功

  启动三台tomcat

  用eclipse新建一个web项目cluster,该项目下新建一个clustertest.jsp文件,编辑该文件内容如下:

<%@ 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/clustertest.jsp 重复刷新可以看到输出的session值在变化说明分发处理成功

2、使用memcached来实现三个tomcat共享session

    解压一开始下载好的memcached压缩包到指定路径,我的是D:\MyServer (解压就得到一个memcached.exe文件)

    下载如下jar包,点击下载spymemcached-2.7.3.jar

    其他jar包可以从如下链接找到:http://code.google.com/p/memcached-session-manager/downloads/list

    *(注意本次测试用的tomcat7,所以对应的jar包是memcached-session-manager-tc7-1.6.3.jar ,

      如果使用的是tomcat6 则下载memcached-session-manager-tc6-1.6.3.jar)

   好了,把上述jar包放到tomcat/lib 目录下,然后在测试的项目中也导入上述jar包,修改每个tomcat的配置文件tomcat\conf\context.xml

  在<context>...</context>标签之间加入如下代码:

  <ManagerclassName="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:\MyServer 输入:memcached.exe –d install 回车安装windows服务

输入:memcached.exe –p 11211 –d start 回车启动memcached服务,启动三个tomcat

在浏览器中输入localhost:8080/cluster/clustertest.jsp  重复刷新发现session的值不变如下所示,session共享成功

SESSION ID:76AC7C56C4B278ADFDEC6EA782192D15-n1.tomcat7-1

posted on 2013-01-22 15:52 针尖上的舞者 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/fish-king/archive/2013/01/22/2871531.html

Nginx+memcached+tomcat配置集群session共享负载均衡相关推荐

  1. 基于nginx实现minio分布式集群访问的负载均衡配置示例

  2. Windows7 + Nginx + Memcached + Tomcat 集群 session 共享

    一,环境说明 操作系统是Windows7家庭版(有点不专业哦,呵呵!),JDK是1.6的版本, Tomcat是apache-tomcat-6.0.35-windows-x86,下载链接:http:// ...

  3. 图文解说:Nginx+tomcat配置集群负载均衡

    图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用  作者:niumd Blog:http://ari.iteye ...

  4. Redis解决老项目集群Session共享案例与回顾

    老项目突然之间客户要用了而且用户量还不少,后端移动端都需要给升级.第一改进的时候做了移动端与后端的服务分流,这次升级为分布式集群模式.分布式集群模式需要解决Session共享问题和数据一致性分布式锁处 ...

  5. nginx搭建tomcat分布式集群

    nginx搭建tomcat分布式集群 1. nginx使用80端口,所有对服务器80端口的访问都被nginx拦截.例: 127.0.0.1 www.jthinking.com 127.0.0.1 ad ...

  6. tomcat 配置集群

    tomcat 配置集群 缘起 tomcat自身没有集群 nginx解决tomcat集群 环境目录 字段解释 注意 注 附 缘起 起因是项目上的系统访问量过大,导致服务经常宕掉,先公司要求要对tomca ...

  7. Rainbond最佳实践:Tomcat配置Redis实现Session共享

    Rainbond:生产级无服务器PaaS Rainbond是国内首个开源的生产级无服务器PaaS,深度整合基于Kubernetes的容器管理.多类型CI/CD应用构建与交付.多数据中心的资源管理等技术 ...

  8. Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)

    文章目录 Pre 需求 工程 Code 继承AbstractLoadBalancerRule实现自定义Rule 随机权重策略 配置 验证 源码 Pre Spring Cloud Alibaba - 0 ...

  9. centos7 rabbitmq 单机部署 集群部署 HAProxy 负载均衡搭建

    准备工作 搭建 RabbitMQ Server 单机版 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 一.准备工作 节点 系统 版本 ip node1 centos ...

最新文章

  1. RDKit | 基于RDKit和Python的阿斯利康ADME数据集分析
  2. org.springframework.beans.factory.BeanCreationException 解决异常错误
  3. 集线器、交换机与路由器
  4. python里的“__all__ ”作用
  5. linux ps 只显示端口,这30个Linux系统监控工具,每个系统管理员都应该知道
  6. webpack编译过程
  7. Angular jasmine spied Method toHaveBeenCalled的执行原理
  8. JAVA取随机数,石头剪刀布实例
  9. scala 与 spark 并行化
  10. Ubuntu18.04 修改IP地址、查看网关、防火墙
  11. 删除数组中重复的数字
  12. ECSHOP始终显示全部分类方法
  13. PAT之算法/技巧:01背包
  14. 一个简单的品优购项目----html+css
  15. EPM连接显示服务器不可用,EPM问题汇总之-SmartView没法链接Essbase
  16. 椭圆拟合fitEllipse()函数
  17. MATLAB图像分割——检测交通视频中的汽车目标
  18. 详细理解script标签
  19. 如何去除实验数据中的毛刺
  20. 26thCSIG云上微表情:基于面部动作单元(AU)的微表情分析

热门文章

  1. java 高效批量插入 sqlserver 数据库
  2. Spring+SpringMVC+Mybatis框架集成搭建教程
  3. MindManager脑图之项目管理甘特图
  4. 码云Webhook触发Jenkins自动构建 - Jenkins演练(一)
  5. 南明区将引进和培养大数据高端人才逾千名
  6. DE连接,创建数据集,数据导入以及数据导出(转载)
  7. MySQL(MariaDB)之参数详解(-)
  8. windows 指定的网络名不可用__被我解决了!
  9. 关于扫描的一个比较好的网站
  10. sp_addlinkedserver (Transact-SQL)