Apache 2.4 + Tomcat7叢集配置
原文地址:http://blog.csdn.net/shaozengwei/article/details/40861447
1. 準備工作
首先下載Tomcat7 和Apache2.4
然後安裝Apache,安裝完成後在IE中輸入localhost訪問,如果出現It Works則表示Apache安裝好了,然後解壓縮到Tomcat1和Tomcat2兩個目錄中。
分別啟動Tomcat1和Tomcat2看是否可以正常啟動。
2. 配置Apache2.4
①開啟conf/httpd.conf檔案,載入以下模組。
#---------------------start------------------------
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.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
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule speling_module modules/mod_speling.so
LoadModule ssl_module modules/mod_ssl.so
#----------------------end---------------------
② 如果你想看到小貓頁面,
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
在上面的index.html下面新增index.jsp就可以了
③去掉Include conf/extra/httpd-vhosts.conf的註釋標記#。
④在檔案末尾加反向代理
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2
</proxy>
⑤修改conf/extra/httpd-vhosts.conf檔案。
註釋掉所有的dummy-host,新增以下內容
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
ErrorLog "logs/lbtest-error.log"
CustomLog "logs/lbtest-access.log" common
</VirtualHost>
2.配置Tomcat
Tomcat2 的修改conf/server.xml
① <Server port="8005" shutdown="SHUTDOWN">修改為9005
②修改<Service name="Catalina">下的
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />中的8080為9080
③<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />修改為9009
④ <Engine name="Catalina" defaultHost="localhost">在末尾加 jvmRoute="jvm2"
同時修改Tomcat1的這個標籤為jvmRoute="jvm1"
⑤<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>改為
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
</Cluster>
配置完成之後,啟動兩個Tomcat測試一下Tomcat是否可以正常啟動
如果可以正常啟動,則進行下面步驟
在webApps下面新增Test目錄,新增Test.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session 列表</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
名稱:<input type=text size=20 name="dataName">
<br>
值:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
建立WEB-INF目錄,建立web.xml
?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<distributable />
</web-app>
最後啟動Apache2.4,在頁面中輸入localhost\test\test.jsp進行測試。
注意:Apache有可能啟動不起來,那麼解決方式是檢視Apache安裝目錄下的logs目錄下的error.log檔案,
根據log檔案解決可能存在的問題。直到Apache可以正常啟動,至此Apache就可以正常啟動了。
以上所述只是Apache+Tomcat叢集配置的一種方式。還有兩種其他的方式。後面試驗後會寫blog.
使用上面方法遇到一個問題導致apache啟動不起。檢視日誌報錯如下:
Cannot find LB Method: byrequests
解決方法:開啟apache的cnf/httpd.conf檔案,找到
#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
把前面的#去掉,啟動OK