前言
目前公司项目升级,一方面对代码进行重构,另外一方面优化服务器性能。下面就着重分享下Apache的集群和负载均衡配置。虽然网上相关的文章数不胜数,不过感觉写的都不是很到位。我这篇文章主要是根据我在实际项目配置的过程中一点点的记录下来的,希望能够帮到需要的人,从而人少走点弯路。。。
准备环境
1. Apache
下载最新的apache版本2.2.18,官方下载地址为http://httpd.apache.org/download.cgi#apache22.
2. Tomcat
下载最新tomcat版本7.0.14,官方下载地址为http://tomcat.apache.org/download-70.cgi.
3.Tomcat Connectors (mod_jk)
下载最新版本JK1.2.31,官方下载地址为http://tomcat.apache.org/download-connectors.cgi.
应用配置
1.Apache配置
安装Apache程序到指定目录,假设我们安装到d:/Apache2
,找到该目录下面conf/httpd.conf
.主要修改过程包括如下几个步骤:
- 查找DocumentRoot
关键字,修改默认的应用目录d:/Apache2/htdocs
为d:/wwwroot
,主要方便以后发布程序。
- 查找<Directory "D:/Apache2/htdocs">
修改为<Directory "D:/wwwroot">
- 查找DirectoryIndex
关键字,在末尾添加index.jsp index.php
etc.
重启apache服务,创建内容It works!到index.html中并且拷贝到wwwroot目录下,然后在游览器访问http://localhost,如果看到It works!字样,则说明apache配置成功。
2.JK配置
- 在d:\apache2目录下面创建conf.d
文件夹,主要用来存放集群需要的配置文件。
- 创建mod_jk.conf存放到d:\apache2\conf.d中。具体配置内容如下:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
# 与tomcat整合实现负载均衡配置
JkWorkersFile conf.d/workers.properties
# 访问url地址规则定义和过滤
JkMountFile conf.d/uriworkermap.properties
JkShmFile logs/mod_jk.shm
# 记录负载均衡日志
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicates to send SSK KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat
JkRequestLogFormat "%w %V %T"
#对tomcat项目别名,此处一定要配置,否则你项目的静态文件无法调用
Alias /OneByOne /opt/wwwroot/webapps/OneByOne
#设置tomcat发布文件的权限,必须配置,否则报403错误
<Directory "/opt/wwwroot/webapps">
#Options FollowSymLinks
Options Indexes FollowSymLinks
#Options Indexes MultiViews
AllowOverride None
Order deny,allow
#Deny from all
allow from all
Satisfy all
</Directory>
# 定义需要由tomcat解析的访问url
JkMount /* controller
# 排除不需要由tomcat解析的地址,比如下面定义的dbm是php工程,所以访问目录就需要排除
JkUnMount /dbm* controller
- 新建并且编辑workers.properties文件,负载均衡配置如下所示:
# 定义worker,此处的list名称必须和mod_jk.conf文件中的controller名称一致
worker.list=controller
# Define Node1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.tomcat1.connection_pool_size=10
worker.tomcat1.connection_pool_timeout=600
worker.tomcat1.socket_connect_timeout=300
# Define Node2
worker.tomcat2.port=9009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
worker.tomcat2.connection_pool_size=10
worker.tomcat2.connection_pool_timeout=600
worker.tomcat2.socket_connect_timeout=300
# Load-balancing behaviour
worker.controller.type=lb
worker.controller.balance_workers=tomcat1, tomcat2
worker.controller.sticky_session=0
worker.controller.sticky_session_force=1
#loadbalancer
***************************************************************************************/
- 新建并编辑uriworkermap.properties文件,具体的配置代码如下:
/*=controller
!/*.html=controller
!/*.css=controller
!/*.gif=controller
!/*.jpg=controller
!/*.png=controller
!/*.js=controller
上面都配置好了以后,别忘了添加Include conf.d/*.conf
到apache的httpd.conf配置文件中。目的让apache能够找到mod_jk.conf配置文件。
3.tomcat配置
这边我配置了两个tomcat,将下载的tomcat文件解压到d:\tomcat1和d:\tomcat2目录下,然后分别修改所在目录下面server.xml配置文件,tomcat1修改的截图如下:
tomcat2中的server.xml配置截图如下:
上面两个配置文件中的节点connector中的属性port和jvmRouter值需要和worker.properties中的设定一致。这个就不一一阐述了,相信搞程序的一看就明白。
测试集群
1. 创建test项目,这个我也就直接拷贝网上的例子。然后将项目拷贝到d:\webapps目录下面。
index.jsp内容:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<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 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.println("<b>Session 列表</b><br>");
System.out.println("============================");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test2.jsp" method="POST">
名称:<input type=text size=20 name="dataName">
<br>
值:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
2. 启动两个tomcat,然后重启apache,直接在浏览器访问http://localhost/test。
- 大小: 151.8 KB
- 大小: 159.9 KB
分享到:
相关推荐
httpd-2.2.25-win32-x86-openssl-0.9.8y.msi和mod_jk-apache-2.2.3.so,用于apache+tomcat集群
apache2.2+tomcat6集群已经配置好,tomcat优化过,在实际项目发布中直接将项目复制到集群中的所有tomcat的webapps中即可, 此配置中包含是3个tomcat集群, 安装步骤大概如下: 1:安装httpd-2.2.17-win32-x86-no_ssl...
Tomcat和Apache集群和负载均衡配置 Tomcat版本:apache-tomcat-7.0.26 Apache版本:Apache2.2.25 jre版本:1.6.0_26 集群和负载均衡配置已整好,解压后,只要点击run.bat一键启动,即可看到集群效果。 运行成功后,...
Apache,Tomcat集群和负载均衡包括了apache-tomcat-5.5.29.zip,apache_2.2.4-win32-x86-no_ssl.msi,mod_jk-1.2.28-httpd-2.2.3.so,ApacheTomcat整合文档.doc,Apache,Tomcat集群和负载均衡教程.doc,Tomcat负载...
Apache+tomcat集群所有的插件和配置,非常完整,直接下载那来用,有apache_2.2.25.msi,mod_jk-1.2.31-httpd-2.2.3.so,Apache的配置workers.properties,mod_jk.conf,httpd.conf这些所有配置
中兴ZXDSL+531B+ZXDSL+531BIIV2.2.3a_E17升级固件.rar
XP搭建Apache+Tomcat+JSP+PHP+MYSQL环境教程 由于附件大小限制,没有添加JDK。...2、Mod_jk-1.2.28-httpd-2.2.3.so 3、apache-tomcat-6.0.18.zip 4、mysql-5.5.15-win32.msi 5、php-5.4.35-Win32-VC9-x86
Apache2.2.3+Tomcat6.X整合 方法
中兴ZXDSL+531B+ZXDSL+531BIIV2.2.3a_E17升级固件补丁
libsigc++_2.2.3-4_iphoneos-arm.deb
如果需要在WindowsXP建立PHP的调试环境,可以仔细...Bind 9.5.0 + Apache 2.2.3(with mod_ssl) + PHP 5.2.6 + + MySQL 5.0.67 + JDK 6 Update 7 + Tomcat 6.0.18 + Perl 5.8.8.xxx + mod_jk mod_jk在以下环境编译得到。
mod_jk-1.2.31-httpd-2.2.3.so解决集群配置的问题
tomcat6.0+ ,apache http server
apache+tomcat方向代理使用的工具,实测apache2.2可以使用,2.4的没试过
httpd-2.2.17-win32-x86-no_ssl.msi + mod_jk-1.2.31-httpd-2.2.3.so apache 负载均衡
tomcat集群时,tomcat与httpd良好连接器
Kakadu v2.2源代码主要分成两个目录:coresys和application,分别表示核心代码与应用程序。核心代码将被编译成动态或静态链接库,应用程序共享这些库。
struts2.2.3_+_spring3.1.0_+_mybatis3.1.0集成简单.docx,我想免费让大家下载,可以不知道怎么设置,有知道的可以私信我
tomcat+apache整合的中间件
mod_jk-1.2.26-httpd-2.2.4.so