日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Linux下搭建tomcat集群全記錄

 獨(dú)醭湉睚 2011-12-13

Linux下搭建tomcat集群全記錄


1.預(yù)期目標(biāo)

本文將講述如何在Linux下搭建tomcat集群,以及搭建過程中可能的遇到的問題和解決方法。為簡(jiǎn)單起見,本文演示搭建的集群只有兩個(gè)tomact節(jié)點(diǎn)外加一個(gè)apache組成,三者將安裝在同一機(jī)器上:
apache:
安裝路徑:/usr/local/apache2
端口:90
tomcat1:
安裝路徑:/usr/local/apache-tomcat-6.0.33-1
端口:6080
tomcat2:
安裝路徑:/usr/local/apache-tomcat-6.0.33-2
端口:7080

2.所需要軟件列表

apache

當(dāng)前最新版本:2.2.21
本文采用源碼方式安裝,源碼包下載地址:http://labs.renren.com/apache-mirror//httpd/httpd-2.2.21.tar.gz
其他版本下載地址參見:http://httpd./download.cgi

tomcat 6

當(dāng)前最新版本:6.0.33
本文使用自解壓的tar.gz包進(jìn)行安裝,下載地址:http://labs.renren.com/apache-mirror/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33.tar.gz
其他版本下載地址參見:http://tomcat./download-60.cgi

Apache Tomcat Connector (也就是mod_jk)

當(dāng)前最新版本:JK-1.2.32
本文采用源碼方式安裝,源碼包下載地址:http://www./dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.tar.gz
其他版本下載地址參見:http://tomcat./download-connectors.cgi

3.軟件安裝

3.1 安裝apache

1.進(jìn)入下載好的httpd-2.2.21.tar.gz文件所在目錄,執(zhí)行解壓操作:
tar -zxvf httpd-2.2.21.tar.gz

2.進(jìn)入解壓出的文件夾根目錄:
cd httpd-2.2.21

3.進(jìn)行編譯參數(shù)配置:
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all
關(guān)于configure參數(shù)的更多內(nèi)容可參考:
http://httpd./docs/2.2/en/programs/configure.html#installationdirectories

4.編譯安裝:
make
make install


5.啟動(dòng)和關(guān)閉apache
完成上述步驟后,apache的安裝就結(jié)束了,通過下面的命令啟動(dòng)和關(guān)閉apache:
啟動(dòng):
/usr/local/apache2/bin/apachectl start
關(guān)閉:
/usr/local/apache2/bin/apachectl stop

3.2 關(guān)于在安裝apache過程中報(bào)Cannot use an external APR with the bundled APR-util錯(cuò)誤的解決辦法

有時(shí)候,在安裝apache,執(zhí)行./configure操作時(shí)會(huì)報(bào)這個(gè)錯(cuò)誤,解決方法是安裝apache2.2.x自身攜帶的apr,方法為:

1.自源碼安裝目錄httpd-2.2.21進(jìn)入apache2.2.x自帶apr的安裝目錄
cd srclib/apr

2.安裝apr(此處將之安裝在/usr/local/apr下,如果系統(tǒng)中已經(jīng)安裝apr,可找到安裝目錄進(jìn)行覆蓋)
./configure --prefix=/usr/local/apr
make
make install


3.安裝apr-util
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install

4.使用新安裝的apr重新進(jìn)行apache編譯配置
放回安裝根目錄httpd-2.2.21,執(zhí)行:
./configure --prefix=/usr/local/apache2 \
--enable-mods-shared=all \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/bin


3.3 安裝Apache Tomcat Connector(mod_jk)

1.進(jìn)入下載好的tomcat-connectors-1.2.32-src.tar.gz文件所在目錄,執(zhí)行解壓操作:
tar -zxvf tomcat-connectors-1.2.32-src.tar.gz

2.進(jìn)入解壓出的文件夾下的native子目錄:
cd tomcat-connectors-1.2.32-src/native

3.進(jìn)行編譯參數(shù)配置:
./buildconf.sh

./configure --with-apxs=/usr/local/apache2/bin/apxs \
--with-java-home=$JAVA_HOME --with-java-platform=2 \
--enable-jni


4.編譯安裝:
make
make install


如果成功結(jié)束,你可以在/usr/local/apache2/modules/下找到mod_jk.so文件。

3.4 安裝tomcat
兩次解壓下載到的apache-tomcat-6.0.33.tar.gz文件至/usr/local/,并分別重命名為apache-tomcat-6.0.33-1和apache-tomcat-6.0.33-2

4.集群配置

4.1 配置tomcat

1.修改端口
對(duì) 于tomcat配置主要集中在conf/server.xml文件上。首先,鑒于是在同一機(jī)器上運(yùn)行兩個(gè)tomcat實(shí)例,因此,要對(duì) server.xml中配置的所有端口進(jìn)行修改,避免端口被占用,一種簡(jiǎn)單而穩(wěn)妥的修改方法是將該文件中出現(xiàn)的所有端口號(hào)按一種簡(jiǎn)單的規(guī)則統(tǒng)一進(jìn)行改動(dòng), 比如在原端口號(hào)基礎(chǔ)上統(tǒng)一加1000或減1000?;谶@個(gè)原則,apache-tomcat-6.0.33-1的連接端口修改 為:6080,apache-tomcat-6.0.33-2的連接端口修改為:7080,其他端口配置同樣依照該原則。

2.開啟tomcat集群支持
同樣是在conf/server.xml文件里,進(jìn)行兩處改動(dòng):

改動(dòng)1:為<Engine>設(shè)置jvmRoute


實(shí) 際上,在server.xml里就有一段現(xiàn)成的帶jvmRoute的<Engine>配置,我們可以參考這段配置 為<Engine/>加個(gè)jvmRoute就可以了,對(duì)于jvmRoute的取值要特別注意:其值必須于后面要提到的mod_jk的 workers.properties文件中結(jié)點(diǎn)名相一致!由于那個(gè)文件中結(jié)點(diǎn)名為tomcat1和tomcat2,因此,此處我們必須設(shè)定 jvmRoute的值為這兩個(gè)值之一。關(guān)于這一點(diǎn)在tomcat官方關(guān)于Apache Tomcat Connector的文檔 http://tomcat./connectors-doc/webserver_howto/apache.html 也有明確提及。jvmRoute值會(huì)出現(xiàn)在由該結(jié)點(diǎn)創(chuàng)建的session id中,例如:在非集群環(huán)境下,一個(gè)sessionid可能是 “xxxxxxxxx” 的格式,而在集群環(huán)境下,如果當(dāng)前結(jié)點(diǎn)的jvmRtomat1oute被配置為tomcat1,那由該結(jié)點(diǎn)生成的sessionid將變成 “xxxxxxxxx.tomat1”格式,而mod_jk正是依賴于這個(gè)節(jié)點(diǎn)后綴實(shí)現(xiàn)sticky session的,也就是把所有后綴是tomat1的請(qǐng)求都發(fā)送給tomat1結(jié)點(diǎn)進(jìn)行處理。



改動(dòng)2:在<Engine/>中添加關(guān)于集群的配置

在tomcat官方關(guān)于tomcat集群配置的文檔:http://tomcat./tomcat-6.0-doc/cluster-howto.html 中,有一份默認(rèn)配置:

  1. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  
  2.          channelSendOptions="8">  
  3.   
  4.   <Manager className="org.apache.catalina.ha.session.DeltaManager"  
  5.            expireSessionsOnShutdown="false"  
  6.            notifyListenersOnReplication="true"/>  
  7.   
  8.   <Channel className="org.apache.catalina.tribes.group.GroupChannel">  
  9.     <Membership className="org.apache.catalina.tribes.membership.McastService"  
  10.                 address="228.0.0.4"  
  11.                 port="45564"  
  12.                 frequency="500"  
  13.                 dropTime="3000"/>  
  14.     <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"  
  15.               address="auto"  
  16.               port="4000"  
  17.               autoBind="100"  
  18.               selectorTimeout="5000"  
  19.               maxThreads="6"/>  
  20.   
  21.     <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">  
  22.       <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>  
  23.     </Sender>  
  24.     <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>  
  25.     <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>  
  26.   </Channel>  
  27.   
  28.   <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"  
  29.          filter=""/>  
  30.   <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>  
  31.   
  32.   <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"  
  33.             tempDir="/tmp/war-temp/"  
  34.             deployDir="/tmp/war-deploy/"  
  35.             watchDir="/tmp/war-listen/"  
  36.             watchEnabled="false"/>  
  37.   
  38.   <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>  
  39.   <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>  
  40. </Cluster>      

這份默認(rèn)配置可以滿足大多數(shù)應(yīng)用場(chǎng)景,因此,我們只需要將這份配置復(fù)制到<Engine/>中,tomcat的配置就全部完成了。

4.2 配置apache
打開apache安裝目錄下的conf/httpd.conf文件,在文件最后追加以下內(nèi)容:

  1. # Load mod_jk module  
  2. LoadModule jk_module modules/mod_jk.so  
  3. # Specify jk log file.  
  4. JkLogFile /var/log/mod_jk.log  
  5. # Specify jk log level [debug/error/info]  
  6. JkLogLevel info  
  7. # Specify workers.properties, this file tell jk:  
  8. # how many nodes and where they are.  
  9. JkWorkersFile conf/workers.properties  
  10. # Specify which requests should handled by which node.  
  11. JkMount /* controller 

關(guān)于mod_jk配置項(xiàng)的詳細(xì)內(nèi)容,可參考:http://tomcat./connectors-doc/webserver_howto/apache.html
上 述配置中:JkWorkersFile conf/workers.properties 指明由一個(gè)workers.properties文件來描述集群結(jié)點(diǎn)的情況,因此,我們需要?jiǎng)?chuàng)建這個(gè)workers.properties文件,并放置于 conf文件夾下,這個(gè)文件的內(nèi)容如下:

  1. #所有節(jié)點(diǎn)列表,其中controller是一個(gè)邏輯結(jié)點(diǎn),負(fù)責(zé)負(fù)載均衡控制,  
  2. #如果JkMount中的URL指定給了controller就表示這個(gè)請(qǐng)求會(huì)被自動(dòng)散列到某個(gè)物理節(jié)點(diǎn)上。  
  3. #注意:真正負(fù)責(zé)處理請(qǐng)求的tomcat的名稱(這里就是tomcat1,tomcat2)必須于它們?cè)赾onf/server.xml  
  4. #文件中配置的jvmRout的屬性值是一致的!  
  5. worker.list = controller,tomcat1,tomcat2  
  6.    
  7. #========tomcat1========  
  8. worker.tomcat1.port=6009       #ajp13 端口號(hào),在tomcat下server.xml配置,默認(rèn)8009  
  9. worker.tomcat1.host=localhost  #tomcat的主機(jī)地址,如不為本機(jī),請(qǐng)?zhí)顚慽p地址  
  10. worker.tomcat1.type=ajp13  
  11. worker.tomcat1.lbfactor = 1    #server的加權(quán)比重,值越高,分得的請(qǐng)求越多  
  12. #========tomcat2========  
  13. worker.tomcat2.port=7009       #ajp13 端口號(hào),在tomcat下server.xml配置,默認(rèn)8009  
  14. worker.tomcat2.host=localhost  #tomcat的主機(jī)地址,如不為本機(jī),請(qǐng)?zhí)顚慽p地址  
  15. worker.tomcat2.type=ajp13  
  16. worker.tomcat2.lbfactor = 1    #server的加權(quán)比重,值越高,分得的請(qǐng)求越多  
  17.   
  18. #========controller,負(fù)載均衡控制器========  
  19. worker.controller.type=lb  
  20. worker.controller.balance_workers=tomcat1,tomcat2   #指定分擔(dān)請(qǐng)求的tomcat,舊版本中的balanced_workers,已不再推薦使用!  
  21. worker.controller.sticky_session=1 #sticky_session為1表示,  
  22. #當(dāng)某一 client的session創(chuàng)建之后,后續(xù)由該客戶端發(fā)起的請(qǐng)求,也就是這個(gè)session的所有請(qǐng)求都始終由第一次處理該請(qǐng)求的結(jié)點(diǎn)  
  23. #負(fù)責(zé)處理(除非該結(jié)點(diǎn)掛掉)  

到此,所有配置均已完成,啟動(dòng)兩個(gè)tomcat和apache后,將某一應(yīng)用同時(shí)部署到兩個(gè)tomcat中,通過apache訪問這個(gè)應(yīng)用,觀察tomcat后臺(tái)打出的日志會(huì)發(fā)現(xiàn),請(qǐng)求被隨機(jī)分配給了兩個(gè)tomcat交替執(zhí)行。

備注:應(yīng)用程序要為集群所做的準(zhǔn)備

1. 在應(yīng)用程序的web.xml中需要加入:<distributable/>元素
2. session中存放的數(shù)據(jù)(如attribute)必須實(shí)現(xiàn)序列化。

參考資源:

tomcat官方關(guān)于tomcat集群配置的文檔:
http://tomcat./tomcat-6.0-doc/cluster-howto.html

tomcat官方關(guān)于Apache Tomcat Connector的文檔
http://tomcat./connectors-doc/webserver_howto/apache.html

apache官方關(guān)于apache的安裝文檔
http://httpd./docs/2.2/en/install.html

apache官方關(guān)于configure參數(shù)的文檔
http://httpd./docs/2.2/en/programs/configure.html#installationdirectories

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多