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

Tomcat+Apache集群配置
2010-06-20
Tomcat+Apache集群配置
文章分类:Java编程
环境:
操作系统:WindowXP
应用服务器:Tomcat6.0.18,Apace2.2.15
JDK版本:JDK6

一、 前期准备
从http://www.apache.org官方网站下载下面两款软件
APAHCE 2.2.15下载:apache_2.2.15-win32-x86-no_ssl.msi
TOMCAT6.0.18下载:apache-tomcat-6.0.18.zip直接解压。

二、 安装过程
APAHCE安装目录:C:\Program Files\Apache Software Foundation\Apache2.2
两个TOMCAT目录:自行解压到C盘下。分别为 tomcatA,tomcatB

三、 配置Apache
1、 Apache集群配置
1.1、 httpd.conf配置
修改APACHE的配置文件C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf 将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了 mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法,就这么简单。
LoadModule proxy_module modules/mod_proxy.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
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so

再找到<IfModule dir_module></IfModule>加上index.jsp修改成
<IfModule dir_module>
DirectoryIndex index.html index.jsp
</IfModule>
1.1.1、 在最下面加入
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8019 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:8029 loadfactor=1 route=jvm2
</proxy>
ProxyRequests Off 是告诉Apache需要使用反向代理(利用Apache进行负载均衡必须使用反向代理)
BalancerMember为群集balancer://cluster的成 员,即群集服务器A或B,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember。
<proxy balancer://cluster> 用于配置工作在tomcat集群中的所有节点,这里的"cluster"必须与上面的集群名保持一致。
Apache通过ajp协议与tomcat进行通信,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口。
loadfactor是负载因子,Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,如两个tomcat都是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发。
route参数对应后续tomcat配置中的引擎路径(jvmRoute)。
注:
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

1.2、 httpd-vhosts.conf设置
接下来进行虚拟主机的设置。APACHE的虚拟主机设置如下:
首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf)
把注释去掉。
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
在文件(extra/httpd-vhosts.conf)最下面加入
<VirtualHost *:80>
    ServerAdmin josenxu001@gmail.com
    ServerName localhost
    ServerAlias localhost
    ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
    ProxyPassReverse / balancer://cluster/
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>
ProxyPass为代理转发Url,即将所有访问/的请求转发到群集balancer://cluster
    这里balancer://是告诉Apache需要进行负载均衡的代理,后面的cluster是集群名(可以随意取),
两个日志引擎ErrorLog负责记录错误,CustomLog负责记录所有的http访问以及返回状态,日志名可以自己取

2、 配置 tomcat
2.1. 配置 server 的关闭
我们需要在一台机器上跑两个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。其中tomcatA用默认值,不修改。修改tomcatB\conf下的 server.xml将:
<Server port="8080" shutdown="SHUTDOWN">
改为
<Server port="8081" shutdown="SHUTDOWN">
2.2. 配置 Engine
把原来的配置注释掉,把下面一句去掉注释。并标明jvmRoute="jvm2".
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">  
以下是原来的配置。
<!-- <Engine name="Catalina" defaultHost="localhost">  -->
tomcatB也要同样 配置。注意:jvmRoute配置不要一样。
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2"> 
2.3. 配置 Connector
原来的默认配置。
&