今天尝试了一下在本机上用apache+tomcat+JK+Terracotta 实现负载均衡、session共享(一台机器两个tomcat),注意jk一定要和apache版本相对应。
一、负载均衡设置
安装完成后首先将mod_jk.so复制到apache\modules\中,然后在apache\conf\目录下面找到httpd.conf文件。修改文件的最后一行在最后面加上一句:
include "D:\apache\conf\mod_jk.conf"
然后在apache\conf目录下面新建mod_jk.conf文件。文件内容如下:
#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /* controller
在http.conf同目录下新建 workers.properties文件,内容如下:
worker.list = controller,tomcat,tomcat2 #server 列表
#======== tomcat========
worker.tomcat.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat.type=ajp13
worker.tomcat.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#======== tomcat2========
worker.tomcat2.port=9009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat,tomcat2 #指定分担请求的tomcat
worker.controller.sticky_session=1
因为我是一台电脑上配置,所以最后还要修改第二个tomcat服务器的配置端口。如果在两台电脑上就不用修改端口了。
<Server port="9005" shutdown="SHUTDOWN">将关闭端口改为9005。
<Connector port="9080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />将连接端口改为9080。
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />将ajp1.3端口改为9009
至此负载均衡的配置完成。直接将手上的项目拷贝到两个tomcat目录下。即可进行负载均衡测试。打开多个ie窗口,观察两个tomcat后面的输出。
二、session共享
1、 tomcat自带session复制机制
在tomcat1里面的server.xml 增加
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat">
tomcat2里面增加:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
对于Cluster元素的配置。将以下内容 粘贴到两个tomcat的sever.xml
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
因为是在同一台电脑上,所以在粘贴第二个时。微做修改将tomcat将端口改为4002;
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4002"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
最后要tomcat支持session复制,必须在web.xml里面加上一个标签。<distributable/>在你工程的web.xml最后面加上这一句即可。
这种方式是通过组播的方式进行集群间的共享,优点是web容器自身支持,配置简单,适合小型网站。缺点是当一台机器的上的session变更后会将变更的数据以组播的形式分发给集群间的所有节点,对网络和所有的web容器都是存在开销。集群越大浪费越严重。不能做到线性的扩展。
2、利用Terracotta 实现
在Terracotta目录中找到这个两个jar包:terracotta-session-1.3.5.jar terracotta-toolkit-1.6-runtime-5.5.0.jar,复制到各个tomcat的lib中
修改tomcat中conf/context.xml配置文件,在Context中添加一段
<Valve className="org.terracotta.session.TerracottaTomcat60xSessionValve" tcConfigUrl="localhost:9510"/>
启动Terracotta即start-tc-server.bat,启动多个tomcat进行session共享测试。
3.Memcache
1,准备文件
memcached windows版
下载地址:http://download.csdn.net/detail/yangwei19680827/6026309
相关jar包
直载地址:http://download.csdn.net/detail/yangwei19680827/6026323
Tomcat
去官网下载http://tomcat.apache.org/download-60.cgi 注意版本下载的是6.x的
2,安装Memcached
将下载的memcached解压到C盘根目录,如想解压到其它盘请修改文件夹中的install.bat
解压后的目录为C:\memcached\
执行目录中的install.bat(win7需要以管理员身份运行,否则服务安装失败)
安装好后看服务中是不是已安装的服务名memcached_11211
启动服务
3,配置Tomcat
修改Tomcat端口,此处不做讲解,自行百度
将相关jar包中的jar包全部复制到二个tomcat的lib目录
修改Tomcat\conf\content.xml
在content中增加如下代码:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:localhost:11211" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory" />
二个Tomcat都要加哦。
当然还可以利用cookie、数据库和来实现,这里就不在赘述了。
本人也处于学习阶段,很多东西可能还不完善,希望大家批评指正。
相关推荐
通过mod_JK,Apache可以识别并处理JSP、Servlet等动态内容,从而实现负载均衡和故障转移。 3. Tomcat 7:Tomcat是一个开源的Java Servlet容器,主要用于部署和运行Java Web应用。在集群中,多个Tomcat实例可以并行...
1. **采用Apache作为负载均衡服务器**:Apache负责接收客户端请求,并根据预设策略将请求分发到不同的Tomcat实例,以实现负载均衡。 2. **采用Terracotta作为Cache服务器**:通过Terracotta实现Ehcache的共享,保证...
本文档详细介绍了如何通过Apache作为负载均衡器来实现Tomcat集群的搭建,并利用Terracotta实现Ehcache的集群配置,以增强系统的故障恢复能力和数据共享功能。 #### 二、环境准备 在开始配置之前,需要准备以下软件...
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
轻量级密码算法LBlock的FPGA优化实现.docx
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
Git 资料 progit-zh-v2.1.1.pdf
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
篮球计分器FPGA附程序..doc
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
内容概要:本文档全面介绍了Linux开发的基础知识、应用场景、环境搭建、常用命令、Shell脚本编程以及C/C++和Python开发等内容。首先阐述了Linux开发的重要性及其在服务器端开发、嵌入式开发和系统运维等领域的广泛应用。接着详细讲解了如何选择合适的Linux发行版并安装系统,配置开发环境,包括安装必要的开发工具和配置SSH服务。文档还深入讲解了Linux基础命令,如文件和目录操作、文件内容查看与编辑、进程管理和权限管理。此外,介绍了Shell脚本编程的基本语法,包括变量、条件语句、循环语句和函数定义。针对C/C++和Python开发,文档分别讲解了编译器安装、程序编写与编译、调试方法及使用虚拟环境等内容。最后,简要介绍了Linux内核开发的相关知识,包括下载编译内核、内核模块开发等,并推荐了相关学习资源。 适合人群:对Linux开发感兴趣的初学者及有一定经验的研发人员,尤其是希望深入掌握Linux开发技能的开发者。 使用场景及目标:①掌握Linux开发环境的搭建与配置;②熟悉Linux基础命令和Shell脚本编程;③学习C/C++和Python在Linux下的开发流程;④了解Linux内核开发的基本概念和技术。 阅读建议:此文档内容丰富,涵盖面广,建议读者根据自身需求选择性阅读,并结合实际操作进行练习。特别是对于初学者,应先掌握基础命令和开发环境的搭建,再逐步深入到编程语言和内核开发的学习。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
街道级行政区划shp数据,wgs84坐标系,直接使用。
内容概要:本文档《word练习题.docx》是一份详细的Word操作练习指南,涵盖了从基础到高级的各种功能。文档分为三个主要部分:内容编辑、页面布局和高效文档。内容编辑部分包括文本格式化、段落设置、项目编号、制表位、边框与底纹等练习;页面布局部分涉及分节符、分栏、页眉页脚、水印等设置;高效文档部分则聚焦于样式管理、导航窗格、题注、书签、超级链接、脚注与尾注、交叉引用等功能。每个练习都有具体的操作步骤,帮助用户掌握Word的各种实用技巧。 适合人群:适用于Word初学者及希望提高Word技能的中级用户,尤其是需要频繁使用Word进行文档编辑和排版的办公人员。 使用场景及目标:①帮助用户熟悉Word的基本操作,如文本编辑、格式设置等;②提升用户的文档排版能力,学会设置复杂的页面布局;③提高工作效率,掌握高效文档管理技巧,如样式应用、题注和交叉引用等。 其他说明:此文档不仅提供了具体的练习题目,还附带了详细的步骤说明,用户可以根据指引逐步完成每个练习。此外,文档中的一些练习涉及到智能文档和Office智能客户端的应用,有助于用户了解Word在企业级应用中的潜力。建议用户按照章节顺序逐步学习,实践每一个练习,以达到最佳的学习效果。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
全球腐败感知数据(2000-2023)——3000行 33个指标 关于数据集 该数据集包含3000行和33列,涵盖了2000年至2023年的腐败感知指数(CPI)数据和各种治理指标。它包括国家排名、分数和其他指标,如公共部门腐败、司法腐败、贿赂指数、商业道德、民主指数、法治、政府效率、经济指标和人类发展指数。 这些数据可用于: 腐败趋势分析 腐败对GDP、人类发展指数和治理的影响 跨国比较 数据可视化和机器学习模型 该数据集对研究人员、数据分析师、政策制定者和对研究全球腐败趋势非常有用。
毕业设计(论文) 基于FPGA的数字频率计设计.doc