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 
原来的默认配置。 
&