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
转载于:https://www.cnblogs.com/fish-king/archive/2013/01/22/2871531.html
Nginx+memcached+tomcat配置集群session共享负载均衡相关推荐
- 基于nginx实现minio分布式集群访问的负载均衡配置示例
- Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
一,环境说明 操作系统是Windows7家庭版(有点不专业哦,呵呵!),JDK是1.6的版本, Tomcat是apache-tomcat-6.0.35-windows-x86,下载链接:http:// ...
- 图文解说:Nginx+tomcat配置集群负载均衡
图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用 作者:niumd Blog:http://ari.iteye ...
- Redis解决老项目集群Session共享案例与回顾
老项目突然之间客户要用了而且用户量还不少,后端移动端都需要给升级.第一改进的时候做了移动端与后端的服务分流,这次升级为分布式集群模式.分布式集群模式需要解决Session共享问题和数据一致性分布式锁处 ...
- nginx搭建tomcat分布式集群
nginx搭建tomcat分布式集群 1. nginx使用80端口,所有对服务器80端口的访问都被nginx拦截.例: 127.0.0.1 www.jthinking.com 127.0.0.1 ad ...
- tomcat 配置集群
tomcat 配置集群 缘起 tomcat自身没有集群 nginx解决tomcat集群 环境目录 字段解释 注意 注 附 缘起 起因是项目上的系统访问量过大,导致服务经常宕掉,先公司要求要对tomca ...
- Rainbond最佳实践:Tomcat配置Redis实现Session共享
Rainbond:生产级无服务器PaaS Rainbond是国内首个开源的生产级无服务器PaaS,深度整合基于Kubernetes的容器管理.多类型CI/CD应用构建与交付.多数据中心的资源管理等技术 ...
- Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)
文章目录 Pre 需求 工程 Code 继承AbstractLoadBalancerRule实现自定义Rule 随机权重策略 配置 验证 源码 Pre Spring Cloud Alibaba - 0 ...
- centos7 rabbitmq 单机部署 集群部署 HAProxy 负载均衡搭建
准备工作 搭建 RabbitMQ Server 单机版 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 一.准备工作 节点 系统 版本 ip node1 centos ...
最新文章
- RDKit | 基于RDKit和Python的阿斯利康ADME数据集分析
- org.springframework.beans.factory.BeanCreationException 解决异常错误
- 集线器、交换机与路由器
- python里的“__all__ ”作用
- linux ps 只显示端口,这30个Linux系统监控工具,每个系统管理员都应该知道
- webpack编译过程
- Angular jasmine spied Method toHaveBeenCalled的执行原理
- JAVA取随机数,石头剪刀布实例
- scala 与 spark 并行化
- Ubuntu18.04 修改IP地址、查看网关、防火墙
- 删除数组中重复的数字
- ECSHOP始终显示全部分类方法
- PAT之算法/技巧:01背包
- 一个简单的品优购项目----html+css
- EPM连接显示服务器不可用,EPM问题汇总之-SmartView没法链接Essbase
- 椭圆拟合fitEllipse()函数
- MATLAB图像分割——检测交通视频中的汽车目标
- 详细理解script标签
- 如何去除实验数据中的毛刺
- 26thCSIG云上微表情:基于面部动作单元(AU)的微表情分析
热门文章
- java 高效批量插入 sqlserver 数据库
- Spring+SpringMVC+Mybatis框架集成搭建教程
- MindManager脑图之项目管理甘特图
- 码云Webhook触发Jenkins自动构建 - Jenkins演练(一)
- 南明区将引进和培养大数据高端人才逾千名
- DE连接,创建数据集,数据导入以及数据导出(转载)
- MySQL(MariaDB)之参数详解(-)
- windows 指定的网络名不可用__被我解决了!
- 关于扫描的一个比较好的网站
- sp_addlinkedserver (Transact-SQL)