linux下apache+tomcat叢集詳細配置

來源:互聯網
上載者:User

 

環境:

作業系統均為: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_04

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

PATH=$JAVA_HOME/bin:$PATH

CATALINA_HOME=/usr/local/tomcat

export 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> www.2cto.com

配置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 Config

Include 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服務!***

 

參考文檔:

http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html

http://tomcat.apache.org/tomcat-6.0-doc/balancer-howto.html

http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy.html

http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy_balancer.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.