Tomcat+apache+memcached集群搭建
2020-03-06 11:18
1241 查看
Tomcat+apache+memcached集群搭建
1.说明:
Tomcat和apache可以实现动静分离,通过tomcat访问动态页面(如servlet、jsp),通apache访问静态页面(如:html)
多个tomcat要一起协同工作有几种办法,可以考虑的方案有以下几个:
1. 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单。但这个方案的效率比较低,在大并发下表现并不好。 2. 利用nginx的基于访问ip的hash路由策略,保证访问的ip始终被路由到同一个tomcat上,这个配置更简单。但如果应用是某一个局域网大量用户同时登录,这样负载均衡就没什么作用了。 3. 利用memcached把多个tomcat的session集中管理,前端在利用apache负载均衡和动静态资源分离,在兼顾系统水平扩展的同时又能保证较高的性能。
2.搭建集群
2.1 版本信息
- Apache 2.2.25 - Tomcat 6 - Memcached 1.2.6
2.2 安装apache
直接安装即可
2.3 Tomcat配置
如果在一台机器上搭建集群则需要修改tomcat的配置文件,不然无法同时启动多个tomcat,如果不是在一台机器上搭建略过此步即可
修改每个tomcat下的server.xml文件
注:由于我们使用memcached存储session,所以<Cluster>标签的注释不用解开 每个tomcat修改如上几处(必须保证每个端口号不被其他程序占用)
2.4 Apache配置
1. 引入mod_jk.so文件 将mode_jk.so复制到apache安装目录下的modules文件夹下
2. 配置jk_mod.conf 注:此配置也可以直接配置在httpd.conf中 在apache/conf下新建jk_mod.conf
LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk2.log JkLogLevel info JkMount /servlet/* controller JkMount /*.jsp controller JkMount /*.do controller
3. 配置httpd.conf 在httpd.conf中引用jk_mod.conf文件
注:如果2.中是在httpd.conf中配置的就不需要此步
4. 配置workers.properties 在apache/conf下新建workers.properties文件
worker.list=controller #========tomcat1======== #tomcat默认是8009端口 worker.tomcat1.port=11009 worker.tomcat1.host=localhost #ajp协议apache和tomcat通信的协议默认8009端口 worker.tomcat1.type=ajp13 #权重 worker.tomcat1.lbfactor=1 #========tomcat2======== worker.tomcat2.port=12009 worker.tomcat2.host=localhost worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor=3 #========tomcat3======== worker.tomcat3.port=13009 worker.tomcat3.host=localhost worker.tomcat3.type=ajp13 worker.tomcat3.lbfactor=5 #========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3 #设为false,则表明需求会话复制。 worker.controller.sticky_session=false worker.controller.sticky_session_force=1 #worker.controller.sticky_session=1
注意: worker.list=controller中的controller和jk_mod.conf中的 JkMount ~~controller相同
5. memcached配置
将以下jar包拷贝到每个tomcat的lib文件夹里
在每个tomcat下的conf/context.xml文件中添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:127.0.0.1:11211" sticky="false" sessionBackupAsync="false" lockingMode="auto" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory" />
6. 测试
- 新建一个web工程,替换index.jsp内容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="java.text.SimpleDateFormat"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Tomcat集群测试</title> </head> <body> 服务器信息: <% String dtm = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()); System.out.println("["+request.getLocalAddr()+":"+ request.getLocalPort()+"]" + dtm); out.println("<br>["+request.getLocalAddr()+":" +request.getLocalPort()+"]" + dtm+"<br>"); %> session分发: <% session.setAttribute("name","dennisit"); System.out.println("[session分发] session id:"+session.getId()); out.println("<br>[session分发] session id: " + session.getId()+"<br>"); %> </body> </html>
将工程拷贝到每个tomcat下的webapps下面
启动集群,启动顺序:
memcached -> tomcat -> apache在浏览器里访问
多次刷新页面session id 不改变,因为当第一次访问生成session id后,sessionid被放到了memcached里了,此时查看每个tomcat会有不等数量的语句打印出来,比例大概是所配置的权重比
打印语句:
打印语句的比例:
END
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- memcached演练(3) 使用apache+搭建双节点tomcat集群
- 搭建apache+tomcat+memcached集群环境
- Apache+mod_jk+Tomcat+Memcached win32集群环境搭建
- Apache+Tomcat+Memcached的集群搭建与基本配置
- 【redhat5.5】apache+tomcat+memcached的集群搭建与基本配置
- [置顶] 搭建apache+tomcat+memcached集群环境
- Nginx1.7.4+Tomcat7+memcached集群环境搭建(tomcat6做session共享用了6个jar包,放到7里报verify错误,然后用该文章的包即可解决)
- Apache+tomcat或Nginx+tomcat集群搭建
- Tomcat集群配置-apache,mod_jk_tomcat搭建集群
- apache2.4+tomcat实现集群的搭建
- Apache+Tomcat多节点负载均衡集群搭建
- apache+tomcat 集群负载 搭建过程
- windowXP下搭建nginx-1.7.10和apache-tomcat-8.0.18的集群
- windows下Nginx+memcached+Tomcat集群搭建
- apache+tomcat+memcached+mod_JK分布式集群
- Apache+Tomcat集群之环境搭建 .
- Linux平台上搭建apache+tomcat负载均衡集群
- memcached演练(4) 使用apache+memcached-session-manager+tomcat集群(续)