中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Tomcat集群,搞定了!

Apache&Tomcat集群

 

1.   軟件

2010年五一晚上做的測試采用的軟件:

1)        apache_2.0.55-win32-x86-no_ssl.msi

2)        apache-tomcat-5.5.29.zip

3)        mod_jk

還有什么JDK了,操作系統(tǒng)了廢話沒用的就不提了。

2.   負(fù)載均衡

1)        理論環(huán)節(jié)

先說下為什么要用Apache,Apache的目的是為了做負(fù)載均衡。啥是個(gè)負(fù)載均衡?簡單點(diǎn)說就是把請求你服務(wù)的數(shù)量分配開了,別讓我一個(gè)人(是一個(gè)WEB服務(wù)器)來處理,大家一起來幫我處理,所以就產(chǎn)生了這么個(gè)名詞,也由此就誕生了一種分配結(jié)構(gòu)。畫個(gè)圖看看:

WEB服務(wù)器

WEB服務(wù)器A

 

WEB服務(wù)器B

 

WEB服務(wù)器C

 

 

前面一個(gè)領(lǐng)導(dǎo)后面一堆干活的,這個(gè)整體的事情叫負(fù)載均衡,前面的那個(gè)領(lǐng)導(dǎo)就是Apache大蝦,此蝦就是分配任務(wù)的頭,有很多大蝦都可以當(dāng)此領(lǐng)導(dǎo),Apache,nginx等等,Tomcat其實(shí)也可以的。用的最多是Apache,最厲害的是nginx,其實(shí)有它不均衡也可以了,哥們單挑支持3萬并發(fā)連接,正好是Apache10倍,據(jù)說新浪、網(wǎng)易、 騰訊都用它,可想而知。我還沒驗(yàn)證過,大家沒事telnet下三個(gè)大網(wǎng)站看看是不是。Tomcat用在這有點(diǎn)笨,分配任務(wù)的時(shí)候據(jù)說沒原則,領(lǐng)導(dǎo)的領(lǐng)導(dǎo)們不好控制他所以用的人少。

2)        Apache操作

現(xiàn)在開始來實(shí)現(xiàn)負(fù)載均衡的操作:

                        i.              先裝apache_2.0.55

選這版本是因?yàn)橛玫娜硕?,網(wǎng)上資料把我決定了(版本很重要,待會(huì)兒告訴你為什么),畢竟學(xué)別人的東西。

                      ii.              配置

a)         http.conf最后加一句:include conf/mod_jk.conf

b)        創(chuàng)建mod_jk.conf,并添加內(nèi)容

以下是我配置的原樣:()

LoadModule  jk_module  modules/mod_jk.so     #加載mod_jk Module

JkWorkersFile  conf/workers.properties            #指定 workers.properties文件路徑

JkMount  /*  controller                           #對所有的請求進(jìn)行分流

c)         創(chuàng)建workers.properties文件,并添加內(nèi)容

以下內(nèi)容是我配置的原樣本:按此段第二條的的配置位置創(chuàng)建

worker.list = controller,tomcat1,tomcat2   #server 列表

#========tomcat1========

worker.tomcat1.port=8888              #ajp13 端口號,在tomcatserver.xml配置,默認(rèn)8009

worker.tomcat1.host=localhost                  #tomcat的主機(jī)地址,如不為本機(jī),請?zhí)顚?/span>ip地址

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor = 1                    #server的加權(quán)比重,值越高,分得的請求越多

#========tomcat2========

worker.tomcat2.port=9999       #ajp13 端口號,在tomcatserver.xml配置,默認(rèn)8009

worker.tomcat2.host=localhost  #tomcat的主機(jī)地址,如不為本機(jī),請?zhí)顚?/span>ip地址

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor = 1    #server的加權(quán)比重,值越高,分得的請求越多

#========controller,負(fù)載均衡控制器========

worker.controller.type=lb

worker.controller.balanced_workers=tomcat1,tomcat2   #指定分擔(dān)請求的tomcat

worker.controller.sticky_session=1

d)        mod_jk.so文件

這個(gè)文件就是本段第一句在http.conf中首先設(shè)置的內(nèi)容。到Apache那下載, 它是The Apache Tomcat Connector,就是Tomcat和別的服務(wù)器連接的插件,這類插件有很多種,有連IIS、Sun、apache,netscape等。其實(shí)下載的不叫mod_jk.somod_jk-apache-2.0.55.so,我下的時(shí)候只有最新的mod_jk-1.2.30-httpd-2.2.3.so,為了配合版本的問題,百度了個(gè)2.0.55的。

把這個(gè)文件放置到此段第二條的的配置的位置

                    iii.              補(bǔ)充闡述

現(xiàn)在說下版本的問題,最關(guān)鍵的是什么版本的mod_jk能支持你采用的Apache,且又和你選的Tomcat配套。因?yàn)槲抑苯酉铝藗€(gè)最新的Tomcat5.529的,Tomcat Connector 提供的是mod_jk-1.2.30-httpd-2.2.3.so,實(shí)驗(yàn)的時(shí)候折騰了1個(gè)小時(shí)都沒成功,Apache就是啟動(dòng)不了。換了個(gè)2.0.55的,還是啟動(dòng)不了,最后發(fā)現(xiàn)是一句漢語注釋沒有加“#“,害的我死勁的讀apache的英語模板,學(xué)了半天英語。

還有就是把下載的連接器改名為mod_jk.so

You should first have mod_jk.so (unix) or mod_jk.dll (Windows) installed in your Apache module directory (see your Apache documentation to locate it)

其實(shí)改不改無所謂,就是王八的屁股,叫‘龜腚’!,造做就好懶的管它為什么。

忘了說那個(gè)workers.properties文件了,那個(gè)文件很好理解,猜猜就可以了猜不錯(cuò)。就是讓領(lǐng)導(dǎo)的領(lǐng)導(dǎo)(說白了就是我或者你)配置領(lǐng)導(dǎo)下面有那些干活的和哪些活由誰來干的,ApacheQuick Start講的很清楚,高級需求時(shí)再看看。

舉例:

JkMount  /*.jsp  tomcat1 就是說所有請求的是jsp文件的tomcat1搞定。

JkMount  /*.do  tomcat2  就是說把所有.do請求的交給tomcat2處理。

JkMount  /*  controller 就是說領(lǐng)導(dǎo)按照一定比例隨機(jī)分配給下面干活的,這個(gè)"controller"就是在workers.propertise里指定的負(fù)載分配控制器。

3)        TOMCAT操作

                        i.              安裝Tomcat

把下載的解壓版本解壓一份,按住ctrl點(diǎn)擊后拖一下,兩份改改名,Ta/Tb

                      ii.              配置Server.xml

改端口:要啟多個(gè)Tomcat需要改的端口改了再說:

 

Ta

端口功能

Tb

<Server  port="9005"

關(guān)閉使用端口

<Server  port="8005"

<CONNECTOR  port="9080"

http使用端口

<CONNECTOR  port="8090"

<CONNECTOR  port="8888"

Apache通訊端口

<CONNECTOR  port="9999"

 

       到此Apache的工作就結(jié)束了,也就是說后臺可以有多個(gè)兄弟們幫你干活了。

3.   集群

1)        理論環(huán)節(jié)

什么是集群,這里的集群主要說的是會(huì)話集群。舉個(gè)例子好比打日本人一樣:中國有兩個(gè)團(tuán)(A團(tuán)和B團(tuán)),小日本部隊(duì)一來,A團(tuán)就知道他們是哪個(gè)部隊(duì)(假如鳩山由紀(jì)夫來了),B團(tuán)也知道他們是哪個(gè)部隊(duì)了,為什么呢?因?yàn)橹醒?/span>(就是Apache)已經(jīng)明確告訴A團(tuán)去處理下,弄死倭寇。A團(tuán)就特別高興,很炫耀的把這個(gè)消息告訴B團(tuán)了,來者是鳩山由紀(jì)夫。

集群說的其實(shí)就是最終這個(gè)功效,大家是一個(gè)集體,來的這個(gè)敵人我清楚你也清楚。很明顯把鳩山由紀(jì)夫來了這個(gè)事情復(fù)制到B團(tuán),也就是復(fù)制了一份Session, 福田康夫來了也一樣他的session也會(huì)被大家一起知道。

個(gè)人感覺叫集群有點(diǎn)不合適,就是Session的同步,假如你程序里用到了Application,不知道是什么情況,有時(shí)間驗(yàn)證下。

2)        技術(shù)環(huán)節(jié)

                        i.              主要配置server.xml

a)         <Cluster></Cluster>這個(gè)結(jié)點(diǎn)的注釋去掉。

b)        修改TatcpListenPort="4001" TbtcpListenPort="4002"OK了。

                      ii.              補(bǔ)充方法

a)         默認(rèn)法

我看了Tomcat的文檔,里面給出了好幾種策略,研究了下,最快最穩(wěn)的就是用默認(rèn),不用去掉<Cluster></Cluster>結(jié)點(diǎn)的注釋,直接新加一句:

<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" defaultMode="true" />

b)        細(xì)節(jié)說明

Tomcat的維機(jī)百科說的很多,都是一些疑問性的內(nèi)容,如:在Windos without network 的情況下要設(shè)置mcastBindAddress="127.0.0.1"(默認(rèn)228.0.0.4)linux加上路由route add -host 228.0.0.4 dev eth0 *,重點(diǎn)就是那么幾個(gè)屬性,Tomcat的文檔比我講的還明白。

c)         Engine元素

這個(gè)元素的那個(gè)屬性我沒有實(shí)驗(yàn),因?yàn)榫W(wǎng)友們已經(jīng)聲名有問題,以下原文:

在這兩個(gè)Tomcat的以下結(jié)點(diǎn)添加jvmRoute屬性:

<ENGINE name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

<ENGINE name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">

然而實(shí)際我配置的時(shí)候還不能加jvmRoute屬性,配置了反而有問題。刷新瀏覽器窗口總是在某一個(gè)tomcat控制臺輸出形如 :

SessionID:154678FA6D4D0ABD57658B750E7A3532.tomcat1  (tomcat1窗口)

或者

SessionID:3800571A532AECEA7280F45361861AD4.tomcat2  (tomcat2窗口)

由控制臺打印的結(jié)果可以看出,SessionID在哪個(gè)tomcat上產(chǎn)生,那么后續(xù)該會(huì)話的請求將總是會(huì)這個(gè)tomcat來處理。并且注意到SessionID的形式比通常情況多了一個(gè)后綴.tomcat1.tomcat2,還搞不清楚是為什么。

我實(shí)驗(yàn)得出這個(gè)是由session是不是可粘貼而控制的,就是那個(gè)workers.properties文件的:worker.controller.sticky_session=true或者false控制。

 

以上的集群配置就算完成!

4.   測試

1)        測試工程
某個(gè)工程如果要使用集群必須要在它的Web.xml文件上加上<distributable/>結(jié)點(diǎn)

2)        A團(tuán)離線

我測試兩個(gè)Tomcat都配置好了以后,正常集群的情況下,如果一個(gè)離線,另一個(gè)完全正常接管后面的程序處理,Session不會(huì)出問題,其他的訪問什么都沒問題。

離線后重新上線,啟動(dòng)后大約在20秒內(nèi)所有的Session都可以正常同步完成。

3)        其他問題

主要是Tomcat提示的問題:

確定所有節(jié)點(diǎn)擁有相同的時(shí)間, 并且通過網(wǎng)絡(luò)時(shí)間服務(wù)(NTP)同步操作系統(tǒng)的時(shí)間!

你的所有會(huì)話屬性值必須實(shí)現(xiàn)java.io.Serializable,Session應(yīng)該是已經(jīng)序列化了,要不然怎么復(fù)制的,沒注意過它的源碼,有三種復(fù)制的方法Tomcat Doc說很好,咋這種就是內(nèi)存的COPY。注意appBase一定要指向webapps,webapps/ROOT刪除,但動(dòng)態(tài)頁面路徑會(huì)出問題,網(wǎng)絡(luò)上傳說的。

URL從外面看必須是相同的,其實(shí)就是說的兩個(gè)Tomcat的集群工程應(yīng)該是完全一樣的

4)        遇到的問題

使用的端口多了,經(jīng)常出現(xiàn)被占的情況。我配的時(shí)候UUSee經(jīng)常和我搶端口。

解決辦法:netstat –ano

參數(shù)o 是說看的時(shí)候列出進(jìn)程的PID,查到pid后任務(wù)管理器,選擇出PID這個(gè)列,就是知道是什么進(jìn)程了, Kill掉就可以了。

5)        jvmRoute名稱

兩個(gè)Tomcat配置文件Host節(jié)點(diǎn)的域名配置必須一樣,server.xml中的jvmRoute名稱必須和worker.properties中的tomcat實(shí)例名稱一致,不然無法實(shí)現(xiàn)session_stricky。

如果不想實(shí)現(xiàn)粘性session, jvmRoute可以不配制。

如果不想實(shí)現(xiàn)session復(fù)制,Cluster配制的注釋就無需去掉

6)        分工問題

worker.loadbalancer.sticky_session=false,true表示會(huì)話具有粘性。意味著用戶和1開始會(huì)話,以后用戶從瀏覽器A發(fā)出的請求只要處于同一個(gè)會(huì)話中,負(fù)載均衡器就會(huì)始終讓1來處理請求。這時(shí)候,集群不會(huì)進(jìn)行會(huì)話復(fù)制。默認(rèn)為false。前者為false,時(shí)候,后者的設(shè)置沒什么影響。如果前者為true,后者也為true時(shí)候,表示始終連接。比如1異常終止,那么,服務(wù)端會(huì)返回500的錯(cuò)誤。False的話,就發(fā)給2了,有可能不存在會(huì)話信息。

7)        網(wǎng)卡問題

集群中的tomcat服務(wù)器之間使用組播的形式來通信。如果tomcta所在的機(jī)器上有多個(gè)網(wǎng)卡,或者配置了虛擬網(wǎng)卡,有可能導(dǎo)致組播失敗,從而復(fù)發(fā)復(fù)制會(huì)話。比如,tomcat1已經(jīng)啟動(dòng),tomcat2出現(xiàn)信息:

No members activein cluster group

一上信息表明,2沒有識別到1,組播失敗。這是,應(yīng)該在clustemembership的配置中,確保設(shè)置了如下bind屬性,它用于明確地設(shè)置組播綁定地址:

<Membership className="org.apache.catalina.tribes.membership.McastService"

                        bind="127.0.0.1" 

                        address="228.0.0.4"   。。。。。>

8)        路由問題

出現(xiàn)這個(gè)錯(cuò)誤:Error receiving mcast package (errorCounter=10). Try Recovery!

是路由問題。server.xmlmcastBindAddress="127.0.0.1"。如果加了ROUTE ADD 那么就要去掉這行mcastBindAddress="127.0.0.1"

9)        最后

tcpListenAddress="127.0.0.1" 要是多個(gè)tomcat在不同機(jī)器上就改這里。


大“工”告成
!還沒有寫總結(jié),寫了技術(shù)文檔了。

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Apache2+Tomcat7+mod
Apache+Tomcat集群之環(huán)境搭建
tomcat集群(共享session)
輕松實(shí)現(xiàn)Apache Tomcat集群和負(fù)載均衡
基于Apache的Tomcat負(fù)載均衡和集群
apache jk tomcat集群 session同步
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服