日期:2014-05-16  浏览次数:21003 次

apache + tomcat 集群配置 proxy方式
假设两个tomcat分别安装在192.168.0.203和192.168.0.204,apache安装在192.168.0.205.
假设网站访问域名为www.test.com
假设apache的document路径为/opt/web
1. jre预装的是1.6.0_30-b12
2. apache预装的是2.2
3. tomcat安装6.0.35
tomcat路径/opt/
4. 在Apache安装目录下找到conf/httpd.conf文件,以文本编辑器打开。
apache目录路径/etc
1) 确保以下内容已添加,以便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
2) NameVirtualHost *:80 这句注释去掉,修改为NameVirtualHost 192.168.0.205:80
3) 在文档最下面加上如下内容:
<VirtualHost 192.168.0.203:80>
    ServerName www.test.com
    ServerAlias *.test.com
    DocumentRoot /opt/web
    DirectoryIndex index.html
    ProxyRequests Off
    <proxy balancer://cluster_test>  
      BalancerMember ajp://192.168.0.203:8009 loadfactor=1 route=node_test_203
      BalancerMember ajp://192.168.0.204:8009 loadfactor=1 route=node_test_204
    </proxy> 
    ProxyPassMatch ^(/.*\.jsp)$ balancer://cluster_test/ stickysession=JSESSIONID|jsessionid
    ProxyPassMatch ^(/.*\.action)$ balancer://cluster_test/ stickysession=JSESSIONID|jsessionid
    ProxyPass / !
    ProxyPassReverse / balancer://cluster_test/
    ErrorLog "logs/test-error.log" 
    CustomLog "logs/test-access.log" common 
    <Directory "/opt/web">
      Options FollowSymLinks
      AllowOverride None
      Order allow,deny
      Allow from all
    </Directory>
</VirtualHost>
5.打开tomcat安装目录下conf/server.xml文件。
1) 修改关闭端口,如果一台服务器上启动多个tomcat实例,必须关闭端口是不一样的,<Server port="8005" shutdown="SHUTDOWN">。
2) 修改tomcat的监听端口,如果一台服务器启动多个tomcat实例,必须修改。
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
3) 修改ajp端口,这里端口设置必须和前面第一步第三小步骤中配置的端口一致。
例如上面BalancerMember ajp://192.168.0.203:8009 loadfactor=1 route=node_test_203这句,ajp端口是8009
找到如下内容:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
4) 修改引擎路径
找到如下内容:
<Engine name="Catalina" defaultHost="localhost">
192.168.0.203的服务器上修改为:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node_test_203">
192.168.0.204上修改为:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node_test_204">
jvmRoute的值和前面第一步第三步骤中route值对应。

碰到问题:
(13)Permission denied: proxy: AJP: attempt to connect to 192.168.0.250:9002 (192.168.0.250) failed
原因:SELinux on RHEL/CentOS by default ships so that httpd processes cannot initiate outbound connections
解决:/usr/sbin/setsebool -P httpd_can_network_connect 1