发布时间:2025-12-09 14:12:17 浏览次数:4
最近做的一个项目可能需要用Aapche实现访问请求分流提高访问性能。因此自己研究了一下。现在把我自己配置成功的过程分享一下。
首先要下载Apache.
建议从官网下载http://httpd.apache.org/download.cgi
我安装的是最新的版本2.4.25。
安装方法参照http://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html
之前在网上找到的配置方法一般是需要安装mod_jk,配置worker.properties的,这种方法是早期的apache的配置方式。现在的2.4.25已经集成了mod_jk,不需要安装mod_jk配置worker.properties了,简单了很多。
<display-name>TomcatClusterDemo</display-name> <distributable/> 把项目放到到tomcat1、tomcat2的webapps目录下。
我的目标是要用两个tomcat(tomcat1,tomcat2)来进行分流,这两个Tomcat的端口、AJP等配置要不一样。
tomcat1的server.xml:
<Server port="10005" shutdown="SHUTDOWN"><Connector port="10001" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="20001" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> tomcat2的server.xml
<Server port="10006" shutdown="SHUTDOWN"> <Connector port="10002" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="20002" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">去掉 Include conf/extra/httpd-vhosts.conf前面的注释#,
在httpd.conf文档最下面加上以下代码:
ProxyRequests Off <Proxy balancer://mycluster> BalancerMember ajp://172.16.X.X:20001/ loadfactor=1 route=jvm1BalancerMember ajp://172.16.X.X:20002/ loadfactor=1 route=jvm2</Proxy> 这里的配置是跟tomcat的server.xml配置对应的。172.16.X.X是tomcat服务器的IP,端口号对应tomcat中server.xml里的ajp的端口号,route对应jvmRoute的配置。
3.用文本编辑器打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上以下代码:
<VirtualHost *:80> ServerName 172.16.X.XServerAlias localhostProxyPass / balancer://mycluster/ stickysession=jsessionid nofailover=OnProxyPassReverse / balancer://mycluster/ErrorLog "logs/lbtest-error.log"CustomLog "logs/lbtest-access.log" common</VirtualHost> 到这里配置就基本上完成了。
然后写个测试页面test.jsp放到两个tomcat的项目里测试:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Cluster App Test</title></head><body>Server Info:<% out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%><% out.println("<br> ID " + session.getId()+"<br>"); // 如果有新的 Session 属性设置 System.out.println( "=========test=========="); %></table></form></body></html>重启apache,tomcat1,tomcat2,
在浏览器输入http://172.16.X.X/test.jsp ,然后多刷新几次。
参考文章:
http://www.cnblogs.com/qqzy168/archive/2013/08/03/3199237.html
http://bbs.it-home.org/thread-40372-1-1.html
http://googolflex.com/?p=492