寫在前面:
Disc:最近研究了一下tomcat集群搭建,這里只是作為個人整理,其中參見了很多優秀的網絡資源會在后面列出,如果你想快速的完成配置可以參見本文,如果想了解更多內容可以參見下面的資源列表,那里會給你更多有用的內容。
Context:Apache2.2、Tomcat6.0(非安裝版)、mod_jk.so(1.2.37)、windows
res-list:?
Ps:關于搭建環境所用的apache、tomcat、mod_jk.so最好自己去官網下、好處自己想去吧
安裝步驟:
1、安裝apache2.2
2、安裝Tomcat6.0
2.1修改Tomcat配置使Tomcat各個實例能同事正常工作
?
3、正式開始集群配置
3.1apache配置
3.2tomca配置
?
1.安裝apache2.2
apache的安裝很方便根據自己的系統到 http://httpd.apache.org/ 下載安裝即可。安裝完啟動訪問http://localhost能看到It works!就ok啦。
?
2.Tomcat6.0安裝
Tomcat6.0選擇非安裝到 http://tomcat.apache.org/ ?選擇自己合適的版本下載。
?
2.1修改Tomcat配置使Tomcat各個實例能同事正常工作
這里做集群環境首先要保證你的tomcat實例能夠同事運行,此實驗室在同一臺機器上跑多個Tomcat實例所以很重要的一步是避免端口沖突。建議規則在必要的端口上保持實例遞增(列:Tomcat_1監聽端口為8080,Tomcat_2監聽端口為8081,Tomcat_3端口為8082。。。),此測試使用2個Tomcat 實例。
?
Tomcat_1 配置保持默認,Tomcat_2修改service.xml內容如下:
Tomcat_1 :
<Server port="8005" shutdown="SHUTDOWN">?
Tomcat_2:
<Server port="8006" shutdown="SHUTDOWN">?
Tomcat_1:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />?
Tomcat_2:
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />?
Tomcat_1:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />?
Tomcat_2:
<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />?
做完上述修改同時啟動Tomcat_1和Tomcat_2保證兩個實例能同時工作,分別訪問http://localhost:8080和http://localhost:8081測試小貓飛起來了。完成這些只是最基本的工作,真正的還沒開始,下面進入重點!
?
3、apache配置
3.1apache 配置
在apache的安裝目錄中找到conf/httpd.conf進行如下修改:
1)修改默認項目部署路徑
?
DocumentRoot "apche安裝目錄/htdocs" #注釋掉加入下面內容,這個是我們要放項目的目錄 DocumentRoot "c:/www"?
2)mod_jk.so配置
?
LoadModule jk_module modules/mod_jk.so JKWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log <VirtualHost *> DocumentRoot c:/www <Directory "c:/www/hello"> AllowOverride None Order allow,deny Allow from all </Directory> <Directory "c:/www/hello/WEB-INF"> Order deny,allow Deny from all </Directory> ServerAdmin localhost DocumentRoot c:/www/ ServerName localhost:80 DirectoryIndex index.html index.htm index.jsp index.action ErrorLog logs/shsc-error_log.txt CustomLog logs/shsc-access_log.txt common JkMount /* controller JkMount /*WEB-INF controller JkMount /*j_spring_security_check controller JkMount /*.action controller JkMount /servlet/* controller JkMount /*.jsp controller JkMount /*.do controller JkMount /*.action controller JkMount /*fckeditor/editor/filemanager/connectors/*.* controller JkMount /fckeditor/editor/filemanager/connectors/* controller </VirtualHost>
3)workers.properties配置 (在apache安裝目錄下conf下建立新的workers.prooerties)?
?
worker.list = controller #tomcat1 worker.tomcat1.port=8009 worker.tomcat1.host=localhost worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor=1 #tomcat2 worker.tomcat2.port=8010 worker.tomcat2.host=localhost worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor=1 #========controller======== worker.controller.type=lb worker.controller.balance_workers=tomcat1,tomcat2 #注意對應關系 worker.lbcontroller.sticky_session=0 worker.controller.sticky_session_force=true worker.connection_pool_size=3000 worker.connection_pool_minsize=50 worker.connection_pool_timeout=50000
?
3.2tomcat 配置
注意:確保你已經做了2.1中相關端口的修改
1)在tomcat安裝目錄的conf/service.xml中找到
?
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">tomcat_1:修改為?
?
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">tomcat_2:修改為?
?
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">注意:這里所修改的值是根據workers.properties中的配置進行對應的
2) 在1)中修改內容(即:<Engine ......>)的后面加入如下內容?
?
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" bind="127.0.0.1" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4001" selectorTimeout="100" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" timeout="60000"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>
注意:每個tomcat實例都要加入,并且注意Receiver port="4001" 此端口不能重復?
基本內容到這里就結束了
4.測試配置
如果你已經完成上述配置應該就可以實現tomcat的集群了,分別啟動Tomcat_1,Tomcat_2
Tomcat_1:
![]()
Tomcat_2:
![]()
2)啟動apache,apache能正常啟動就ok啦
3)這是一個很簡單的測試項目 hello ,只是打印一下session,在tomcat每個實例中的webapps中部署 hello ,別忘了在apache中也部署( d:/www我們前面修改過的 )發揮你的想象進行各種測試吧。。。。。。
注意注意:在測試項目的web.xml中加入 <distributable/>
1:
![]()
2:
![]()
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
