apache与tomcat负载集群的方法与集群的文件同步问题和图片上传显示问题解决
来源:互联网 发布:js点击展开 隐藏切换 编辑:程序博客网 时间:2024/05/16 19:22
整理一下apache与tomcat负载集群过程中遇到的问题,因为网上的文章都只是解决了部分问题,没有说全面,特地整理个全面的分享给大家。
主要包括三个方面,如何配置集群,静态文件如何处理,上传文件问题怎么处理。本次测试是1个apache集成两个tomcat。
1、配置集群
(1)下载软件
apache:httpd-2.2.17-win32-x86-no_ssl.msi
tomcat:apache-tomcat-6.0.20.zip
jdk:jdk-6u14-windows-i586.exe
mod_jk-1.2.31-httpd-2.2.3.so
(2)安装apache ,安装过程省略,改端口为8081,访问地址为http://127.0.0.1:8081
将下载的mod_jk-1.2.31-httpd-2.2.3.so,改名为mod_jk.so放进apache 的modules文件夹内
修改conf/httpd.conf配置,加入如下配置:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
JkMount /*.do loadbalancer
JkMount /*.jsp loadbalancer
然后继续加入如下配置,主要配置的是静态文件,包括图片等,因为apache只处理动态文件,如jsp serverlet等等。还有,如果你需要处理serverlet等跳转,可以加入类似JkMount /*/servlet/* 这样的配置。
#要设置虚拟路径,否则图片无法正常显示
Alias /voteadmin "E:/ontopvoteadmin/WebModule"
<Directory "E:/ontopvoteadmin/WebModule">
Options Indexes MultiViews
AddOutputFilter Includes html
AllowOverride None
Order allow,deny
Allow from all
</Directory>
然后在 apache/modules下新建一个配置文件workers.properties,其内容为
worker.list=loadbalancer
worker.worker2.port=8077 #ajp的监听端口
worker.worker2.host=108.88.3.105
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.worker3.port=9009
worker.worker3.host=127.0.0.1
worker.worker3.type=ajp13
worker.worker3.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker2,worker3 #这里在的worker2、worker3为需要与上边tomcat设置的别名一致
worker.loadbalancer.sticky_session=1
注明:worker.worker3.host=127.0.0.1 集群tomcat所在机器名或ip
worker.worker2.port=8077 这是tomcat的jk工作端口,就是server.xml中配置的ajp端口。
到此,apache 安装配置完毕。可以访问测试一下。
(3)安装tomcat
解压apache-tomcat-6.0.20.zip,测试时我是把两个tomcat分开放在不同的虚拟机,其中一个是和apache同一台虚拟机。
两个tomcat分别打算命名为worker2和worker3
先说tomcat.worker2的配置:
打开server.xml
配置http监听端口,这里端口设为8079,该步骤非必要,只要不冲突就行了。
<Connector port="8079" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
配置AJP监听端口,这里端口设为8077,该步骤非必要,只要不冲突就行了。这个对应上文worker.worker2.port=8077
<Connector port="8077" protocol="AJP/1.3" redirectPort="8443" />
配置服务器标识,这里标识名配置为:worker2,添加jvmRoute="worker2",该步骤必须。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
在Engine节点启用集群配置,只需去掉Cluster节点前的注释就行了,该步骤必须。
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
最后
要实现session复制,还需要在context.xml添加属性distributable="true",如下:
<Context distributable="true">
配置完成,访问地址为:http://127.0.0.1:8079
二、测试集群,添加测试例子。
在tomcat.worker2和tomcat.worker3的webapps文件夹添加同样的测试文件test"test.jsp
html>
<head>
<title>helloapp</title>
</head>
<body>
<%
System.out.println("call test.jsp");
%>
SessionID: <%=session.getId() %>
</body>
</html>
重启测试即可。
三、上传文件同步问题解决。
由于集群配置了虚拟路径,那么所有静态文件都从你定义的虚拟路径读取,所以,当你上传时,是上传到不同路径,这就会出现上传成功,其他的tomcat无法访问。
这里有几种方案来处理,第一,文件同步,第二,磁盘共享,第三,tomcat虚拟路径映射。前两种都是靠操作系统和其他软件处理。这里讲解第三种。
配置方法如下两种任选,这样就解决
1. 在.%TOMCAT_HOME%\conf\Catalina\localhost建立一个xml文件 里面写上
<Context path="/web" docBase="D:/myweb" crossContext="false" debug="0"
reloadable="true"></Context> 推荐方式
2.打开%TOMCAT_HOME%\conf\server.xml文件
在 <host> </host>之间加入如下代码: <Context path="/web" docBase="E:\myweb"
debug="0" reloadable="true"/>
综上,配置集群遇到的所有问题和解决方法都整理在一起了,应该可以说是一站式 的解决方案了。
- apache与tomcat负载集群的方法与集群的文件同步问题和图片上传显示问题解决
- apache与tomcat负载集群的方法与集群的文件同步问题和图片上传显示问题解决
- apache与tomcat负载集群的3种方法
- apache与tomcat负载集群的3种方法
- apache与tomcat负载集群的3种方法
- apache与tomcat负载集群的3种方法
- apache与tomcat负载集群的3种方法
- apache与tomcat负载集群的3种方法
- Apache +Tomcat的负载均衡与集群配置
- apache+tomcat实现负载均衡与集群的配置
- 基于apache的tomcat负载均衡与集群
- Apache +Tomcat的负载均衡与集群配置
- Apache +Tomcat的负载均衡与集群配置
- Apache +Tomcat的负载均衡与集群配置
- nginx+tomcat+redis集群实现负载均衡和session同步的步骤和问题处理方法
- linux apache tomcat集群与apache和tomcat的整合
- apache与tomcat负载集群集成方法配置
- 实现Apache负载均衡与Tomcat集群
- solr 通过URL的方式删除索引
- C# datagridview单元格的提示信息
- 防止android代码注入的办法
- Xcode5 基本配置信息
- win7下配置TortoiseGit使用Github
- apache与tomcat负载集群的方法与集群的文件同步问题和图片上传显示问题解决
- 分布式系统:分布式部署,监控与进程管理
- udp 多线程客户端和单线程服务器端
- JQuery与asp.net结合,区分手机浏览器与PC浏览器显示不同信息
- 用C++11 thread 类编写多线程程序
- MTK Android Driver :camera
- Android 网络通信框架Volley简介(Google IO 2013)
- style.display 和 style.visibility
- 一个实现Tab切换的容器扩展