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)模块。
LoadModuleproxy_modulemodules/mod_proxy.so
LoadModuleproxy_ajp_modulemodules/mod_proxy_ajp.so
LoadModuleproxy_balancer_modulemodules/mod_proxy_balancer.so
LoadModuleproxy_connect_modulemodules/mod_proxy_connect.so
LoadModuleproxy_ftp_modulemodules/mod_proxy_ftp.so
LoadModuleproxy_http_modulemodules/mod_proxy_http.so
2)NameVirtualHost*:80这句注释去掉,修改为NameVirtualHost192.168.0.205:80
3)在文档最下面加上如下内容:
<VirtualHost192.168.0.203:80>
ServerNamewww.test.com
ServerAlias*.test.com
DocumentRoot/opt/web
DirectoryIndexindex.html
ProxyRequestsOff
<proxybalancer://cluster_test>
BalancerMemberajp://192.168.0.203:8009loadfactor=1route=node_test_203
BalancerMemberajp://192.168.0.204:8009loadfactor=1route=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">
OptionsFollowSymLinks
AllowOverrideNone
Orderallow,deny
Allowfromall
</Directory>
</VirtualHost>
5.打开tomcat安装目录下conf/server.xml文件。
1)修改关闭端口,如果一台服务器上启动多个tomcat实例,必须关闭端口是不一样的,<Serverport="8005"shutdown="SHUTDOWN">。
2)修改tomcat的监听端口,如果一台服务器启动多个tomcat实例,必须修改。
<Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
3)修改ajp端口,这里端口设置必须和前面第一步第三小步骤中配置的端口一致。
例如上面BalancerMemberajp://192.168.0.203:8009loadfactor=1route=node_test_203这句,ajp端口是8009
找到如下内容:
<Connectorport="8009"protocol="AJP/1.3"redirectPort="8443"/>
4)修改引擎路径
找到如下内容:
<Enginename="Catalina"defaultHost="localhost">
192.168.0.203的服务器上修改为:
<Enginename="Catalina"defaultHost="localhost"jvmRoute="node_test_203">
192.168.0.204上修改为:
<Enginename="Catalina"defaultHost="localhost"jvmRoute="node_test_204">
jvmRoute的值和前面第一步第三步骤中route值对应。
碰到问题:
(13)Permissiondenied:proxy:AJP:attempttoconnectto192.168.0.250:9002(192.168.0.250)failed
原因:SELinuxonRHEL/CentOSbydefaultshipssothathttpdprocessescannotinitiateoutboundconnections
解决:/usr/sbin/setsebool-Phttpd_can_network_connect1