程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> apache2.2.25+tomcat7.0.47集群方案,apachetomcat集群

apache2.2.25+tomcat7.0.47集群方案,apachetomcat集群

編輯:JAVA綜合教程

apache2.2.25+tomcat7.0.47集群方案,apachetomcat集群


      因為公司項目在線人數的增加,隨著現在硬件成本越來越低,大多數的生產環境內存大多都已經達到 16G,尤其最新的阿裡雲,客戶的機器都是配置超高的java主機,但是Java的運行環境,內存使用有限 ,這樣就造成了這台服務器資源的浪費,所以單機的多Tomcat集群就很有必要!當然有客戶有多台服務器,這樣更好了,配置會更少,性能會更強悍。

      網上很多文章在說集群方案,很多配下來都是錯的,也不說錯誤的原因,原本希望配置apache2.4+tomcat8的集群方案,配下來沒成功,就配置apache2.2.25+tomcat7.0.47集群方案,以後會發apache2.4+tomcat8的集群方案。 同時因為公司的電腦比較老,使用的32位系統,以後再發64位的。

     apache+tomcat的集群方案有三種,我采用mod_jk方式,網上的配置很多有錯誤,錯誤不外乎兩種:

1,配置路徑錯誤,

2,mod_jk版本和apache版本不匹配,我搞了兩天Apache啟動不成功,加載不了mod_jk.so都是版本問題造成的。比如:mod_jk-1.2.31-httpd-2.2.3.so,此版本中httpd-2.2.3一定要和Apache版本一致。

    下面列出實際配置所用的:

   軟件:

本次使用是單擊垂直集群,一台機器裝Apache ,帶兩台tomcat

首先是Apache的安裝

1、mod_jk-1.2.31-httpd-2.2.3.so修改為mod_jk.so,拷貝mod_jk.so到Apache安裝路徑的modules文件夾下;

2.修改Apache配置文件httpd.conf(筆者路徑:E:\Apache2.2\conf\httpd.conf),

    • 修改ServerRoot,即Apache安裝路徑,比如:ServerRoot "D:/Apache2.2""
    • 在最後一行末尾添加:include "E:\Apache2.2\conf\mod_jk.conf" 
 JkWorkersFile conf/workers.properties
 JkLogFile logs/mod_jk.log
 JkLogLevel info
 JkRequestLogFormat "%w %V %T"
 JkMount /* controller

  在conf下新建workers.properties,

worker.list=controller
 worker.controller.type=lb
 worker.controller.sticky_session=1
 worker.controller.error_escalation_time=0
 worker.controller.max_reply_timeouts=10

 # localhost server 1
 # ------------------------
worker.jvm1.reference=worker.template
 worker.jvm1.port=8009
 worker.jvm1.host=localhost
 worker.jvm1.lbfactor = 5
 worker.jvm1.activation=A


 # localhost server 2
 worker.jvm2.reference=worker.template
 worker.jvm2.port=9009
 worker.jvm2.host=localhost
 worker.jvm2.lbfactor=1
 worker.jvm2.activation=A


 worker.template.type=ajp13                    
worker.template.socket_connect_timeout=5000
 worker.template.socket_keepalive=true
 worker.template.ping_mode=A
 worker.template.ping_timeout=10000
 worker.template.connection_pool_minsize=0
 worker.template.connection_pool_timeout=600
 worker.template.reply_timeout=300000
 worker.template.recovery_options=3

 worker.controller.balance_workers=jvm1,jvm2

  

#這裡可以配置任意多個Tomcat,此處配置了2個Tomat服務器.
#host和port根據自己實際配置.實例配置的是本機兩個tomcat,分別使用不同的端口.避免沖突
#如果Tomcat不再同一機器上,沒必要改端口的。

  3、 重啟Apache,看是否能夠啟動成功,訪問:http://localhost/;Apache配置完成

配置tomcat,將tomcat復制,命名為tomcat1,tomcat2,兩個tomcat在一個機器上,需要修改一台tomcat:主要為各個端口

  1、修改tomcat2,配置例子:tomcat1沒有修改

8005改為8015,shutdown端口

<Server port="8015" shutdown="SHUTDOWN">

  Connector port="8090",網站訪問端口,8080改為8090

    <Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

  ajp端口,8009改為9009

  <Connector port="9009" protocol="AJP/1.3" redirectPort="8943" />

  增加jvmRoute,jvmRoute="jvm2",tomcat1則為jvmRoute="jvm1"

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">

   Cluster打開,增加:

 <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="4001" 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>

  tomcat配置完成,tomcat1,tomcat分別看能夠啟動。

增加session共享

tomcat/webApps下新建項目test,新建test.jsp文件,新建WEB-INF文件夾,文件夾下新建web.xml,插入:

 <distributable/>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
       <display-name>test</display-name>
       <distributable/>
</web-app>

  依次啟動apache,tomcat1,tomcat2.

集群+負載均衡,session共享配置完成。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved