posts - 25, comments - 11, trackbacks - 0, articles - 37

          ???? 第一次做集群時(shí)架好后在啟動(dòng)tomcat時(shí)報(bào)了一大堆錯(cuò)誤:內(nèi)存溢出唄。我就納悶了怎么會(huì)出現(xiàn)這樣錯(cuò)誤,服務(wù)器配置是4G內(nèi)存,查了一通資料,發(fā)現(xiàn)原來tomcat在啟動(dòng)時(shí)要加載已經(jīng)編譯好的.class文件,默認(rèn)內(nèi)存區(qū)大小為128M,如果文件較多,這個(gè)錯(cuò)誤也是必然的。咋辦?調(diào)內(nèi)存唄,我的幾個(gè)tomcat都是以服務(wù)形式安裝的,整得我要改注冊(cè)表,就改這個(gè)地方,HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat62\Parameters\Java
          然后調(diào)整里邊JavaMsJavaMx的值,前者表示運(yùn)行時(shí)加載的最小內(nèi)存,后者表示可利用的最大內(nèi)存,單位是M,要換到十進(jìn)制下去改。這個(gè)問題搞了三個(gè)周才找到解決辦法,第一次就敗在此處!
          ????
          第二次什么錯(cuò)誤是其中一臺(tái)機(jī)器上tomcat啟動(dòng)報(bào)錯(cuò)Unable to start cluster. org.apache.catalina.tribes.ChannelException: java.net.SocketException: error set ting options; No faulty members identified. ,搞了一天沒有找到解決辦法,棄之;那位仁兄如果有解決辦法歡迎賜教!
          ????
          第三次集群方式和前兩次沒什么區(qū)別,都是采用http_proxy形式作為Apachetomcat之間連接的橋梁,這次把成功的配置詳細(xì)的說明下:
          1.
          去掉apachehttpd.conf目錄中以下幾行的注釋

          #change here start
          LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.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

          ?#end

          # Virtual hosts

          # change here two step 就是去掉了注釋,主要用于配置虛擬機(jī)文件
          Include conf/extra/httpd-vhosts.conf

          2. httpd.conf最下邊加上這些東東

          ProxyRequests Off

          <proxy balancer://cluster>

          BalancerMember ajp://192.168.0.22:9001 loadfactor=1 route=jvm3

          BalancerMember ajp://192.168.0.22:9003 loadfactor=1 route=jvm4

          BalancerMember ajp://192.168.0.22:9090 loadfactor=1 route=jvm5

          </proxy>

          ?

          ProxyRequests Off

          <proxy balancer://cluster2>

          BalancerMember ajp://192.168.0.1:8009 loadfactor=1 route=jvm1

          </proxy>

          ?

          ProxyRequests Off

          <proxy balancer://cluster3>

          BalancerMember ajp://192.168.0.1:9009 loadfactor=1 route=jvm2

          </proxy>


          具體什么意思就不說了,第一行表格是做集群用,下邊兩個(gè)僅作為負(fù)載均衡之用,可以說就沒均衡負(fù)載,為啥?就一個(gè)tomcat你做什么負(fù)載啊,呵呵。重點(diǎn)關(guān)注這里

          <proxy balancer://cluster2>

          Cluster2 才是關(guān)鍵所在,他表示了你的站點(diǎn)要在那個(gè)群集內(nèi)做負(fù)載均衡或者集群,我們這里用到了集群和負(fù)載均衡,其實(shí)就是一回事說白了,上 cluster 做集群, cluster2 cluster3 僅做負(fù)載均衡之用,不做 session 復(fù)制和繪畫保持。

          2 下邊我們看下 extra 目錄中 httpd-vhosts.conf 文件的修改吧

          以上邊說的 cluster,cluster2,cluster3 為例各配置一個(gè)虛擬機(jī)

          <VirtualHost *:80>

          ?????? ?ServerAdmin cxccma@163.com

          ?????? ?ServerName *****.com

          ?????? ?ServerAlias www.*****.com

          ???????? ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

          ???????? ProxyPassReverse / balancer://cluster/

          </VirtualHost>

          <VirtualHost *:80>

          ???????? ServerAdmin cxccma@163.com

          ???????? ServerName *****.cn

          ???????? ServerAlias www. *****.cn

          ???????? ProxyPass / balancer://cluster2/

          ???????? ProxyPassReverse / balancer://cluster2/

          </VirtualHost>

          <VirtualHost *:80>

          ???????? ServerAdmin cxccma@163.com

          ???????? ServerName *****.com

          ???????? ServerAlias www. *****.com

          ???????? ProxyPass / balancer://cluster3/

          ???????? ProxyPassReverse / balancer://cluster3/

          </VirtualHost>

          以上明白了,就是說是三個(gè)站點(diǎn)分別在不同的群集內(nèi),為什么要這樣做?主要是因?yàn)槲覀兦捌谟玫氖?/span> tomcat5.5 版本的,后期開發(fā)中友用到了 6.x 版本的,所以整了兩個(gè)群集以兼容前期和后期的站點(diǎn),當(dāng)然如果你需要在 cluster2, 或者 cluster3 中再加一臺(tái) tomcat 做負(fù)載均衡用 ,OK, 很簡單,直接復(fù)制下就可以

          3.apache 說完了,接下來說下 tomcat

          Tomcat 中不用做什么大的改動(dòng),首先在 server.xml 文件中部署你的虛擬主機(jī)啊

          <Host name="www.******.com" appBase="webapps"

          ??? ???unpackWARs="true" autoDeploy="true"

          ?????? xmlValidation="false" xmlNamespaceAware="false">

          ?????????????? <Context path="" docBase="D:\lejie"

          ???????? debug= "0" reloadable="false" crossContext="false" verbosity="DEBUG">

          ???? </Context>

          </Host>

          OK ,如果需要做全局集群,那就修改 content.xml 文件中 Context 元素,加上這句就行

          distributable="true"

          或者在單獨(dú)的文件中的 web.xml 文件中加入這句話

          < distributable/>

          到這應(yīng)該都說完了吧,談下個(gè)人的想法: apache tomcat 有三種連接方法: JK , mod_proxy,http_proxy ,前兩者的配置都是超繁瑣,在可維護(hù)性和模塊化上也沒什么優(yōu)點(diǎn),我一直用第三種連接方法,采用 AJP 直連, AJP1.3 在連接上表現(xiàn)出明顯的優(yōu)點(diǎn),所以我也建議采用第三種連接。

          算是一個(gè)工作總結(jié)吧,歡迎各位不吝賜教!如果有什么疑問請(qǐng)通過以下方式聯(lián)系本人

          Feedback

          # re: 第三次Apache tomcat集群總結(jié)[未登錄]  回復(fù)  更多評(píng)論   

          2009-08-06 16:22 by aaa
          我用的是jk,不覺得有什么繁瑣

          # re: 第三次Apache tomcat集群總結(jié)[未登錄]  回復(fù)  更多評(píng)論   

          2009-08-06 16:23 by aaa
          jk可以將靜態(tài)頁面交給apache直接處理

          # re: 第三次Apache tomcat集群總結(jié)[未登錄]  回復(fù)  更多評(píng)論   

          2014-08-19 20:19 by 小強(qiáng)
          參考這里http://www.javacui.com/service/136.html

          # re: 第三次Apache tomcat集群總結(jié)  回復(fù)  更多評(píng)論   

          2015-01-29 12:19 by 王丹
          什么叫全局集群?
          主站蜘蛛池模板: 台安县| 南投县| 酒泉市| 石渠县| 登封市| 炎陵县| 韩城市| 大丰市| 本溪市| 台南县| 茶陵县| 嘉义县| 尤溪县| 托克托县| 黄龙县| 龙泉市| 江安县| 社会| 井冈山市| 镇远县| 新巴尔虎左旗| 华亭县| 河津市| 寻乌县| 贡嘎县| 红原县| 庄浪县| 鲁甸县| 隆尧县| 山西省| 阿拉善盟| 东台市| 苏尼特左旗| 内黄县| 茶陵县| 榆树市| 盐津县| 珠海市| 崇义县| 吉木乃县| 安龙县|