日期:2014-05-17  浏览次数:20838 次

Apache HttpServer + Tomcat实现集群和负载均衡配置详解(1)——Apache HttpServer配置

原文:http://zyycaesar.iteye.com/blog/294089?

我收藏并且做了排版和内容的少许修改,加上了自己配置过程中的一些感悟。

一、软件准备

?

Apache 2.2 :?http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本(这里我和原作者使用的并不一样,我使用的是httpd-2.2.17-win32-x86-openssl-0.9.8o.msi的版本,但是按照原作者的配置达到了同样的效果。所以有无SSL貌似都可以实现集群和负载均衡。)

?

Tomcat 6.0 :?http://tomcat.apache.org/download-60.cgi,下载Tomcat 6.0.18 zip文件.(这里我使用的是apache-tomcat-6.0.30-windows-x86.zip版本。)

?

注意:由于Apache和Tomcat项目与集群相关的模块均处于持续发展和优化过程中,因此笔者不保证本文配置方法对所有Apache和Tomcat版本均适用。

?

二、软件安装

?

???? 把Apache安装为运行在80端口的Windows服务,安装成功后在系统服务列表中可以看到Apache2.2服务。对于已安装IIS的机器,在启动Apache服务之前必须首先停止IIS Admin服务,不然会因为端口冲突而无法启动。服务启动后在浏览器中输入http://localhost进行测试,如果能看到一个"It works!"的页面就代表Apache已经正常工作了。(在这一步中安装了ORACLE数据库的机子输入loacalhost可能打开的是ORACLE自带的那个Apache服务器,所以如果出现的是ORACLE自带的Apache服务器的欢迎页面,就去服务里把OracleOraHome92HttpServer这个服务改成手动启动。这样就不会出现争用80端口的情况了。)

?

???? 解压tomcat zip文件到两个文件夹,分别为t1和t2,以下均以t1和t2代表两个tomcat服务器。配置JAVA_HOME和CLASSPATH系统环境变量(其实就是要把JDK装好环境变量配置好),分别启动t1和t2,确保tomcat可用,然后关闭tomcat。(这里为了做实验只用两个tomcat其实用几个都是同理,把tomcat的zip文件解压到一个固定目录里就行。比如我在D盘下建立了一个名为TestTomcatCluster的文件夹,两个解压好的tomcat根目录分别改名为tomcat_1和tomcat_2依次类推。然后在环境变量里新建环境变量,如为tomcat_1建立名为TOMCAT1_HOME 值为 D:\TestTomcatCluster\tomcat_1和为tomcat_2建立名为TOMCAT2_HOME值为D:\TestTomcatCluster\tomcat_2的环境变量,并且在classpath中添加%TOMCAT1_HOME%\bin;和%TOMCAT2_HOME%\bin;然后双击各个bin文件夹里的startup.bat文件就可以启动zip版本的tomcat服务器了。)

?

???? 本文仅为讲解配置过程,Apache和tomcat均工作在同一台机器上。实际部署时没有任何限制,Apache和单个tomcat可以分别部署在不同的服务器上。

?

三、Apache配置

?

???? Apache 2.2集成了mod_jk功能,相对于1.3版本,不需要再进行繁琐的worker.properties配置,配置过程大幅简化。

?? ?(对于老版本的Apache和老版本的tomcat配置可以参照这篇文章http://hi.baidu.com/luodaijun/blog/item/5bbe4cfb5ffef864034f56a1.html

?? ? (1)首先,在Apache安装目录下找到conf/httpd.conf文件,以文本编辑器打开。

?

???? 去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。

?

???? LoadModule proxy_module modules/mod_proxy.so
???? LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
???? LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
???? LoadModule proxy_connect_module modules/mod_proxy_connect.so
???? LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
???? LoadModule proxy_http_module modules/mod_proxy_http.so

?

??