環境:作業系統均為:CentOS 5.1 Apache2.X伺服器一台:IP地址192.168.232.4;安裝路徑/usr/local/apache; Tomcat6伺服器一台:IP地址192.168.232.5;安裝路徑/usr/local/tomcat; Tomcat6伺服器一台:IP地址192.168.232.6;安裝路徑/usr/local/tomcat; 配置:Apache安裝:#./configure --prefix=/usr/local/apache --enable-modules=so --enable-mods-shared=all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-rewrite注釋:啟用tomcat叢集需要的 enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必須依賴proxy,如果是自訂的編譯除了以上幾個必須的模組外,mod_status也要編譯進去,切記。enable-proxy-ftp可以不編譯。#make;make install 製作Apache啟動項:#cp support/apachectl /etc/rc.d/init.d/httpd#vi /etc/rc.d/init.d/httpd添加以下內容:(包括#號)# Startup script for the Apache Web Server# chkconfig: 2345 85 15# description: Apache is a World Wide Web server .It is used to server# HTML files and CGI.# processname: httpd# pidfile: /usr/local/apache/log/httpd.pid# config: /usr/local/apache/conf/httpd.conf增加服務項#chkconfig --add httpd#chmod 755 /etc/rc.d/init.d/httpd#chkconfig --level 345 httpd on JDK安裝:#chmod a+x jdk-6u4-linux-i586-rpm.bin#./jdk-6u4-linux-i586-rpm.bin JAVA環境變數設定:#vi /etc/profile在檔案最後添加以下內容:JAVA_HOME=/usr/java/jdk1.6.0_04CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarPATH=$JAVA_HOME/bin:$PATHCATALINA_HOME=/usr/local/tomcatexport JAVA_HOME CLASSPATH PATH CATALINA_HOME 執行如下命令使環境變數生效:source /etc/profile測試組態是否成功:java –version Tomcat安裝:#wget [url]http://apache.mirror.phpchina.com/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.tar.gz[/url]#tar zxvf apache-tomcat-6.0.16.tar.gz#mv apache-tomcat-6.0.16 /usr/local/tomcat Tomcat隨機啟動:#vi /etc/rc.local添加以下內容:/usr/local/tomcat/bin/startup.sh tomcat6設定檔server.xml:把<!-- You should set jvmRoute to support load-balancing via AJP ie :<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">--><Engine name="Catalina" defaultHost="localhost">改成 <!-- You should set jvmRoute to support load-balancing via AJP ie :--><Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcatX"><!-- <Engine name="Catalina" defaultHost="localhost">-->說明:第一台tomcat就把jvmRoute="tomcat1"第二台tomcat就把jvmRoute="tomcat2" 把<!--<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>-->去掉注釋變為<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>***群集詳細配置***<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager"expireSessionsOnShutdown="false"notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"><Membership className="org.apache.catalina.tribes.membership.McastService"address="228.0.0.4"port="45564"frequency="500"dropTime="3000"/><Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"address="auto"port="4000"autoBind="100"selectorTimeout="5000"maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"><Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/></Sender><Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/><Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/></Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/><Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/><ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/></Cluster> 配置應用的web.xml:在每個webapps應用中,修改設定檔web.xml檔案 添加元素<distributable/> 在web.xml檔案中<web-app>元素下增加以下內容: <!--此應用將與叢集伺服器複製Session--> <distributable/> 具體修改如下: 修改前: <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="[url]http://java.sun.com/xml/ns/javaee[/url]" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]" version="2.5"> </web-app> 修改後: <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="[url]http://java.sun.com/xml/ns/javaee[/url]" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]" version="2.5"> <!--此應用將與叢集伺服器複製Session--> <distributable/> </web-app>配置apache的ajp負載平衡功能:確保將以下Module的注釋去掉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增加以下內容:# Proxypass ConfigInclude conf/extra/httpd-modproxy.conf建立檔案httpd-modproxy.conf輸入內容:<Location /server-status> SetHandler server-status Order Deny,Allow Deny from all Allow from all </Location> <Location /balancer-manager> SetHandler balancer-manager Order Deny,Allow Deny from all Allow from all </Location> ProxyRequests Off ProxyPass / balancer://tomcatcluster stickysession=jsessionid nofailover=On <Proxy balancer://tomcatcluster> BalancerMember [url]http://192.168.232.5:8080[/url] loadfactor=1 BalancerMember [url]http://192.168.232.6:8080[/url] loadfactor=2 </Proxy>注釋:ProxyRequests Off 表示啟用反向 Proxy,必須開啟; ProxyPass為代理轉寄的Url,即將所有訪問/的請求轉寄到群集balancer://tomcatcluster,這裡為/即將所有訪問/的請求轉寄到群集balancer://tomcatcluster的/test目錄; BalancerMember為群集的成員,即叢集伺服器1或2,負載平衡伺服器會根據均衡規則來將請求轉寄給BalancerMember; 調試負載平衡叢集系統:訪問apache伺服器的web服務:[url]http://192.168.232.4/balancer-manager[/url]如果顯示負載平衡有關資訊則說明成功了,接著可以訪問[url]http://192.168.232.4/[/url]即訪問到了tomcat的應用***必須先啟動Tomcat服務再啟動Apache服務!*** 參考文檔:[url]http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html[/url] [url]http://tomcat.apache.org/tomcat-6.0-doc/balancer-howto.html[/url] [url]http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy.html[/url] [url]http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy_balancer.html[/url]