apache+tomcat配置

無意間看到tomcat 6集群的內容,就嘗試配置了一下,還是遇到很多問題,特此記錄。apache服務器和tomcat的連接方法其實有三種:JK、http_proxy和ajp_proxy。本文主要介紹最為常見的JK。

環境:PC2臺:pc1(IP 192.168.88.118)安裝了apache和tomcat

???????????????????? pc2(IP 192.168.88.168)安裝了tomcat

???????? 系統 win xp sp3

? 1.安裝tomcat、apache服務器及版本對應的JK

??這里需要注意的是JK版本必須與apache服務器版本號對應,可以直接從我參考附件下載。apache_home表示apache服務器安裝目錄.

?2.配置apache服務器

??2.1 httpd.conf文件

?apache_home目錄下的conf/httpd.conf文件中添加

Xml代碼
  1. LoadModule?jk_module?modules/mod_jk-1.2.26-httpd-2.2.4.so ??
  2. JkWorkersFile?conf/workers.properties ??
  3. JkMount?/*?lbcontroller???

?具體的說明如下:

Xml代碼
  1. LoadModule?jk_module?modules/mod_jk-1.2.26-httpd-2.2.4.so??

?表示載入JK模塊。

Xml代碼
  1. JkWorkersFile?conf/workers.properties??

tomcat實例配置,具體參見2.2。

Xml代碼
  1. JkMount?/*?lbcontroller???

??設置apache分發器,/*表示apache將所有文件都由分發器lbcontroller 進行分發,你可以自行設置*.jsp,*.do等?

??2.2 workers.properties文件

在apache_home下conf目錄中新建workers.properties文件,輸入以下內容

Xml代碼 復制代碼
  1. worker.list=lbcontroller??
  2. ??
  3. #Tomcat1實例配置 ??
  4. worker.tomcat1.host=192.168.88.118 ??
  5. worker.tomcat1.port=8009??
  6. worker.tomcat1.type=ajp13??
  7. #分發權重?值越大負載越大 ??
  8. worker.tomcat1.lbfactor?=?1 ??
  9. ??
  10. #Tomcat2實例配置 ??
  11. worker.tomcat2.host=192.168.88.168 ??
  12. worker.tomcat2.port=9009??
  13. worker.tomcat2.type=ajp13??
  14. #分發權重?值越大負載越大 ??
  15. worker.tomcat2.lbfactor?=?1??
  16. ??
  17. #負載均衡分發控制器 ??
  18. worker.lbcontroller.type=lb ??
  19. worker.lbcontroller.balance_workers=tomcat1,tomcat2 ??
  20. worker.lbcontroller.sticky_session=True??

?在這里

Xml代碼
  1. worker.list=lbcontroller??

?內容即為httpd.conf文件中的分發器名稱。需要注意的內容是,tomcat實例名稱

Xml代碼
  1. worker.tomcat1.host=.... ??
  2. ... ??
  3. worker.tomcat2.host=.... ??
  4. ...??

?在這里就是tomcat1和tomcat2必須與之后tomcat中的server.xml中jvmRoute值一致。

3.tomcat集群配置

配置每個tomcat目錄下的server.xml文件,具體修改內容如下

3.1 Engine配置

修改前

Xml代碼
  1. <Engine?name="Catalina"?defaultHost="localhost">??

修改后

Xml代碼
  1. <Engine?name="Catalina"?defaultHost="localhost"??jvmRoute="tomcat1"?>??

?具體tomcat中jvmRoute的值根據在workers.properties的配置,注意IP地址、tomcat實例名稱和jvmRoute值必須一一對應。

3.2 Connector配置

修改前

Xml代碼
  1. <Connector?port="8009"?protocol="AJP/1.3"?redirectPort="8443"?/>??

修改后

Xml代碼
  1. <Connector?port="9009"?protocol="AJP/1.3"?redirectPort="8443"?/>??

?這里tomcat的port值必須與在workers.properties中的port值一致。

3.3 Cluster配置

修改前

Xml代碼
  1. <!-- ?
  2. <Cluster?className="org.apache.catalina.ha.tcp.SimpleTcpCluster"?>?
  3. -->??

?修改后,去掉注釋并添加一些內容如下

Xml代碼
  1. <Cluster?className="org.apache.catalina.ha.tcp.SimpleTcpCluster"??channelSendOptions="8">??? ??
  2. ?????? ??
  3. ???????<Manager?className="org.apache.catalina.ha.session.DeltaManager"?? ??
  4. ????????????????expireSessionsOnShutdown="false"?? ??
  5. ????????????????notifyListenersOnReplication="true"/>??? ??
  6. ??
  7. ???????<Channel?className="org.apache.catalina.tribes.group.GroupChannel">??? ??
  8. ?????????<Membership?className="org.apache.catalina.tribes.membership.McastService"?? ??
  9. ?????????????????????address="228.0.0.4"?? ??
  10. ?????????????????????port="45564"?? ??
  11. ?????????????????????frequency="500"?? ??
  12. ?????????????????????dropTime="3000"/>??? ??
  13. ?????????<Receiver?className="org.apache.catalina.tribes.transport.nio.NioReceiver"?? ??
  14. ????????????????????address="auto"??
  15. ???????????????????port="4001"?? ??
  16. ???????????????????autoBind="100"?? ??
  17. ???????????????????selectorTimeout="5000"?? ??
  18. ???????????????????maxThreads="6"/>??? ??
  19. ?????????<!--?timeout="60000"-->??? ??
  20. ?????????<Sender?className="org.apache.catalina.tribes.transport.ReplicationTransmitter">??? ??
  21. ???????????<Transport?className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"?/>??? ??
  22. ?????????</Sender>??? ??
  23. ?????????<Interceptor?className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>??? ??
  24. ?????????<Interceptor?className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>??? ??
  25. ?????????<Interceptor?className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>??? ??
  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. ???????<ClusterListener?className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>??? ??
  33. ???????<ClusterListener?className="org.apache.catalina.ha.session.ClusterSessionListener"/>??? ??
  34. ?????</Cluster>??

?上述配置跟tomcat官方建議的配置,去掉了

Xml代碼
  1. <Deployer?className="org.apache.catalina.ha.deploy.FarmWarDeployer"??
  2. ???????????????????tempDir="/tmp/war-temp/"??
  3. ???????????????????deployDir="/tmp/war-deploy/"??
  4. ???????????????????watchDir="/tmp/war-listen/"??
  5. ???????????????????watchEnabled="false"/>??

?如果不去掉這部分,則tomcat啟動會報"FarmWarDeployer can only work as host cluster subelement!."

3.4 session復制配置

tomcat集群中的session管理,主要有兩種方式:

1).粘性session

表示從同一窗口發來的請求都將有集群中的同一個tomcat進行處理。配置方式是在上面workers.properties文件中

Xml代碼
  1. worker.lbcontroller.sticky_session=True???

粘性session的好處在不會在不同的tomcat上來回跳動處理請求,但是壞處是如果處理該session的tomcat崩潰,那么之后的請求將由其他tomcat處理,原有session失效而重新新建一個新的session,這樣如果繼續從session取值,會拋出nullpointer的訪問異常。

2).session復制

session復制是指tomcat彼此之間通過組播方式將session發到各個tomcat實例上,如果其中一個訪問出錯,則另外tomcat仍然具有有效的session內容,從而能正常接管其session。壞處是當tomcat實例很多,或者用戶在session中有大量操作時,組播發送的信息量十分驚人。session復制配置則是在發布的web應用程序中的web.xml中添加

Xml代碼
  1. <distributable/>??

?此外,session復制所需的JDK必須是JDK 5.0及其以上版本。

4.測試

1) 先啟動apache服務器httpd

2) 啟動名為tomcat2的服務器

?在瀏覽器中輸入訪問地址http://localhost/test/index.html

?可以看到請求被轉發到了tomcat2進行處理

3)啟動tomcat 1 ,界面如下

?可以發現,tomcat1啟動后搜索到了tomcat2實例,并進行了session復制。在tomcat2的控制臺也可以找到如下輸出

?4)關閉tomcat 2,后繼續刷新url訪問。tomcat1控制臺中輸出的session?依然與之前tomcat2中的一致,并且在session中保存的屬性值仍然有效。

5.問題

上面的配置是在兩臺不同的配置上進行,tomcat負載和session復制都成功了。但是如果在同一臺機子上配置,則session復制總是不能成功,搜索了很多解決方式都不正確。
6.參考

http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html

http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html#Cluster Basics?

系統架設

前臺采用apache2.2作為web服務器

后臺架設了3000,3001,3002,三個mongrol應用

?

?

問題表現

訪問http://localhost,出現一直在訪問服務器;

?

然后訪問http://localhost:3000可以正常訪問,估計問題出現apache上,查看錯誤日志error.log

?

apache后臺出現的錯誤提示:

?

[warn] Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

?

?

原因:

在httpd.conf中并沒有設置線程數量,Apache默認開啟了64個,看來是遠遠不夠。于是上網一查,在httpd.conf加入以下內容:

<IfModule mpm_winnt_module>
ThreadsPerChild 512
MaxRequestsPerChild 0
</IfModule>

這樣開啟了512工作線程。這個值根據需要可能要慢慢調整

按照上面的修改進行httpd。conf文件的修改,然后重啟服務器,可以正常訪問,問題解決

-Xms1024m
-Xmx1024m
-Xmn512m
-XX:PermSize=512M
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:MaxPermSize=512m
-XX:ParallelGCThreads=4
-XX:MaxTenuringThreshold=5
-XX:ParallelCMSThreads=3
-XX:+UseConcMarkSweepGC
-XX:+UseCMSCompactAtFullCollection
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=80
一般這兩個參數設置成一樣的,能提高效率:??-Xms1024m?-Xmx1024m?
-Xss128k?:這個參數設置其實要小心,128是我們一直用的值,一直?也沒出什么問題。
以上參數都調大后其它的參數也要隨著調,要不然還是用默認值,這樣一定就會內存溢出了。
-XX:PermSize=512M??
-XX:NewSize=512m?
-XX:MaxNewSize=512m?
-XX:MaxPermSize=512m?
但下面幾個參數也不能調大,我們一般設置為最大JVM內存的一半。

楊航收集技術資料,分享給大家



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388446.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388446.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388446.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

記自己在spring中使用redis遇到的兩個坑

本人在spring中使用redis作為緩存時&#xff0c;遇到兩個坑&#xff0c;現在記錄如下&#xff0c;算是作為自己的備忘吧&#xff0c;文筆不好&#xff0c;望大家見諒&#xff1b; 一、配置文件 1 <!-- 加載Properties文件 -->2 <bean id"configurer" cl…

Azure實踐之如何批量為資源組虛擬機創建alert

通過上一篇的簡介&#xff0c;相信各位對于簡單的創建alert&#xff0c;以及Azure monitor使用以及大概有個印象了。基礎的使用總是非常簡單的&#xff0c;這里再分享一個常用的alert使用方法實際工作中&#xff0c;不管是日常運維還是做項目&#xff0c;我們都需要知道VM的實際…

南信大濱江學院計算機基礎,南京信息工程大學濱江學院計算機基礎期末復習知識點...

《計算機基礎》期末考試復習知識點第一章計算機基礎知識1.第一臺電子計算機的名稱、誕生時間及運算性能&#xff1b;名稱&#xff1a;電子數字積分計算機ENIAC(埃尼阿克)。誕生時間&#xff1a;1946年2月14日。運算性能&#xff1a;運算速度為每秒5000次加法。2.計算機發展四個…

nginx集群

今天看到"基于apache的tomcat負載均衡和集群配置 "這篇文章成為javaEye熱點。 略看了一下&#xff0c;感覺太復雜&#xff0c;要配置的東西太多&#xff0c;因此在這里寫出一種更簡潔的方法。 要集群tomcat主要是解決SESSION共享的問題&#xff0c;因此我利用memc…

管道過濾模式 大數據_大數據管道配方

管道過濾模式 大數據介紹 (Introduction) If you are starting with Big Data it is common to feel overwhelmed by the large number of tools, frameworks and options to choose from. In this article, I will try to summarize the ingredients and the basic recipe to …

DevOps時代,企業數字化轉型需要強大的工具鏈

伴隨時代的飛速進步&#xff0c;中國的人口紅利帶來了互聯網業務的快速發展&#xff0c;巨大的流量也帶動了技術的不斷革新&#xff0c;研發的模式也在不斷變化。傳統企業紛紛效仿互聯網的做法&#xff0c;結合DevOps進行數字化的轉型。通常提到DevOps&#xff0c;大家浮現在腦…

2018.09.21 atcoder An Invisible Hand(貪心)

傳送門 簡單貪心啊。 這題顯然跟t并沒有關系&#xff0c;取差量最大的幾組買入賣出就行了。 于是我們統計一下有幾組差量是最大的就行了。 代碼&#xff1a; #include<bits/stdc.h> #define N 100005 using namespace std; inline int read(){int ans0;char chgetchar();…

嘉應學院專插本計算機專業考綱,2015年嘉應學院漢語言文學專插本寫作大綱.pdf...

.2015 專插本基礎寫作輔導部分分為五個部分&#xff0c;共 42 道題目。 50 &#xfe6a;-60 &#xfe6a;﹙填空&#xff0c;選擇&#xff0c;判斷&#xff0c;名詞解釋&#xff0c;簡答&#xff0c;鑒賞﹚&#xff0c; 40 &#xfe6a;﹙作文﹚。1、什么是文章寫作。文章寫作是…

綠色版本Tomcat

解壓版Tomcat配置(本例Tomcat6)&#xff1a;一 配置Tomcat1 下載Tomcat Zip壓縮包&#xff0c;解壓。如果增加tomcat的用戶名和密碼&#xff0c;則修改/conf/tomcat-user.xml<?xml version1.0 encodingutf-8?><tomcat-users><role rolename"manager"…

[ BZOJ 2160 ] 拉拉隊排練

\(\\\) \(Description\) 一個由小寫字母構成的長為\(N\)的字符串&#xff0c;求前\(K\)長的奇數長度回文子串長度之積&#xff0c;對\(19930726\)取模后的答案。 \(N\in [1,10^6]\)&#xff0c;\(K\in [1,10^{12}]\)\(\\\) \(Solution\) \(Manacher\)處理出所有位置的回文半徑&…

用戶體驗可視化指南pdf_R中增強可視化的初學者指南

用戶體驗可視化指南pdfLearning to build complete visualizations in R is like any other data science skill, it’s a journey. RStudio’s ggplot2 is a useful package for telling data’s story, so if you are newer to ggplot2 and would love to develop your visua…

nodeJS 開發微信公眾號

準備測試公眾號 mp.weixin.qq.com/debug/cgi-b… 關注&#xff0c;獲取測試公眾號 內網滲透工具 natapp.cn/login 按照教程下載客戶端進行配置 后臺服務接入公眾號 有netapp 生成的映射外網IP > URL 搭建express開發環境 這個網上有教程&#xff0c;自行百度 接口配置和簽名…

單招計算機應用基礎知識考試,四川郵電職業技術學院單招計算機應用基礎考試大綱...

2021年高職單招升學一對一咨詢小藝老師:18290437291(微信)四川郵電職業技術學院單招計算機應用基礎考試大綱一、考試性質本技能考試是中等職業學校(含普通中專、職業高中、技工學校和成人中專)信息技術類專業畢業生參加四川郵電職業技術學院2016年單獨招生考試。二、考試依據1.…

linux掛載磁盤陣列

linux掛載磁盤陣列 在許多項目中&#xff0c;都會把數據存放于磁盤陣列&#xff0c;以確保數據安全或者實現負載均衡。在初始安裝數據庫系統和數據恢復時&#xff0c;都需要先掛載磁盤陣列到系統中。本文記錄一次在linux系統中掛載磁盤的操作步驟&#xff0c;以及注意事項。 此…

dedecms ---m站功能基礎詳解

織夢2015年6月8日更新后&#xff0c;就添加了很多針對手機移動端的設計&#xff0c;最大的設計就是添加了生成二維碼的織夢標簽和織夢手機模板功能&#xff0c;織夢更新后&#xff0c;默認的 default模板中就包含手機模板&#xff0c;所以我們可以給織夢網站設計雙模板&#xf…

一個小菜鳥給未來的菜鳥們的一丟丟建議

寫這篇文章的主要原因是有個建筑行業的朋友覺得搞建筑身累心累&#xff0c;想轉到我們這個it行業來加入我們的編程大軍中&#xff0c;找我咨詢了一哈。在我了解了他的邏輯和理科這方面只是一般般的基礎上&#xff0c;我給他的建議是&#xff1a;學習前端&#xff0c;而不是后端…

sql橫著連接起來sql_SQL聯接的簡要介紹(到目前為止)

sql橫著連接起來sqlSQL Join是什么意思&#xff1f; (What does a SQL Join mean?) A SQL join describes the process of merging rows in two different tables or files together.SQL連接描述了將兩個不同表或文件中的行合并在一起的過程。 Rows of data are combined bas…

霸縣計算機學校,廊坊中專排名2021

一、招生專業類別專業名稱r制招生人政培養日標備注預備技師數控加工(中心操做工)340格養掌握先進斂p加ot知識&#xff0c;是部創新精神和較a空際操作能力&#xff0c;4了ftc71h0iwro感娶顯型人于-宇缺畢讓生培養具備電氣白動化oirm和o技能&#xff0c;叢事電氣設督安裝、調試、…

《Python》進程收尾線程初識

一、數據共享 from multiprocessing import Manager 把所有實現了數據共享的比較便捷的類都重新又封裝了一遍&#xff0c;并且在原有的multiprocessing基礎上增加了新的機制list、dict 機制&#xff1a;支持的數據類型非常有限 list、dict都不是數據安全的&#xff0c;需要自己…

北京修復宕機故障之旅

2012-12-18日 下午開會探討北京項目出現的一些問題&#xff0c;當時記錄的問題是由可能因為有一定數量的客戶上來后&#xff0c;就造成了Web服務器宕機&#xff0c;而且沒有任何時間上的規律性&#xff0c;讓我準備出差到北京&#xff0c;限定三天時間&#xff0c;以及準備測試…