vista
回顧※展望
潛心技術(shù)&&不再擱淺
BlogJava
::
首頁
::
聯(lián)系
::
聚合
::
管理
12 Posts :: 1 Stories :: 13 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
java基礎(chǔ)(3)
web框架
web相關(guān)(3)
關(guān)注業(yè)界
興趣愛好
開源※類庫(2)
敏捷開發(fā)
數(shù)據(jù)庫(2)
生活感悟(3)
設(shè)計模式
通訊錄
隨筆檔案
2006年12月 (6)
2006年11月 (2)
2006年10月 (2)
2006年9月 (2)
文章檔案
2006年11月 (1)
搜索
最新評論
1.?比多更多
呵呵 沒得選擇很難,多的選擇更難,還是希望接到更多通知上班的電話,這樣你就占優(yōu)勢了呀!祝福朋友!
--微牧印象
2.?re: 隨想一
評論內(nèi)容較長,點擊標題查看
--風的聲音
3.?re: 華為面試歸來
評論內(nèi)容較長,點擊標題查看
--Vista
4.?re: vista精神之 --javascript篇
hi, buddy, i have sent an email to u about customized Google Search engine
--Dedian
5.?re: vista精神之 --javascript篇
評論內(nèi)容較長,點擊標題查看
--123bingbing
閱讀排行榜
1.?轉(zhuǎn)貼 -- 通過分析SQL語句的執(zhí)行計劃優(yōu)化SQL(總結(jié))(3462)
2.?華為面試歸來(2541)
3.?vista精神之 --javascript篇(1842)
4.?vista精神之--動態(tài)代理學習(1664)
5.?vista精神之-dom4j讀寫xml文件(1446)
評論排行榜
1.?vista精神之 --javascript篇(10)
2.?華為面試歸來(2)
3.?隨想一(1)
4.?vista 精神之 - 類庫篇(0)
5.?vista 精神之 - 面向?qū)ο笃?0)
轉(zhuǎn)貼--JBOSS集群
?
?Last Modified:
2006.02.23
JBoss 4.0.2集群指南
(來源:http://www.javaresearch.org )
bromon原創(chuàng)?請尊重版權(quán)
????本文主要講解JBoss?cluster的基本知識以及簡單的配置方法,其間涉及了一些jboss的補充知識。
一、材料準備:
1、????JBoss?4.0.2????
JBoss各個版本之間差異比較大,即使同為jboss?4.x的版本,內(nèi)部組件的版本也不一致,所以請盡量使用同一版本的server。目前已經(jīng)證明可以配置cluster的版本多為jboss?3.2.6和jboss?4.0.2。
2、????Apache?2.0.54
3、????Apache?mod_jk-1-2-13-apache-2-0-54
二、安裝:
1、????jboss4.0.2與apache?2.0.54的安裝請自行搞定。假設(shè)jboss的安裝目錄為%jboss%,apache安裝目錄為%apache%。
2、????mod_jk的安裝。
從apache.org獲得文件mod_jk-1-2-13-apache-2-0-54.so,將該文件拷貝到%apache%\?modules。
三、jboss?cluster入門
????Jboss?支持如下類型的cluster:EJB、web、JNDI、JMS,我們主要了解web?cluster。
Web?cluster實際上可以劃分為兩個話題:負載均衡?(load?balance)?和狀態(tài)同步。它們是互相獨立的,單獨配置。
負載均衡的概念比較簡單,重要的是負載均衡的粒度。可以選擇針對每個request的均衡,或者是針對每個用戶的均衡。選擇不同的粒度,需要不同的狀態(tài)同步方式。
1、基于request的負載均衡
????該種方式下,負載均衡器?(load?balancer)會根據(jù)各個node的狀況,把每個http?request進行分發(fā)。使用這樣的均衡策略,就必須在多個node之間復制用戶的session,實時保持整個cluster的用戶狀態(tài)同步,這種操作被稱為session復制(session?replication)。Jboss的實現(xiàn)原理是使用攔截器(interceptor),根據(jù)用戶的同步策略攔截request,做同步處理后再交給server產(chǎn)生響應(yīng)。
????該方法的優(yōu)點是客戶不會被綁定都具體的node,只要還有一個node存活,用戶狀態(tài)都不會丟失,cluster都能夠繼續(xù)工作。缺點是node之間通信頻繁,響應(yīng)速度有影響,多并發(fā)、高頻操作的情況下性能下降比較厲害。
2、????基于用戶的負載均衡
該種方式下,當用戶發(fā)出第一個request后,負載均衡器動態(tài)的把該用戶分配到某個節(jié)點,并記錄該節(jié)點的jvm路由,以后該用戶的所有request都會被綁定這個jvm路由,用戶只會與該server發(fā)生交互,這種策略被稱為粘性session(session?sticky)。
該方法的優(yōu)點是響應(yīng)速度快,多個節(jié)點之間無須通信。缺點也很明顯,某個node死掉以后,它負責的所有用戶都會丟失session。
四、實戰(zhàn)
1、負載均衡
????Jboss的負載均衡目前有兩種方案,一是使用apache的mod_jk,二是使用jboss自帶的負載均衡模塊。下面分別講解這兩種配置。
mod_jk的配置
1、????請確認%apache%\modules下已經(jīng)有mod_jk-1-2-13-apache-2-0-54.so文件。
2、????修改%apache%\conf\httpd.conf????在文件末尾添加:????Include?conf/mod_jk2.conf
3、????在%apache%\conf下新建文件????mod_jk2.conf????????文件內(nèi)容如下:
#?Load?mod_jk?module.?Specify?the?filename
#?of?the?mod_jk?lib?you’ve?downloaded?and
#?installed?in?the?previous?section
LoadModule?jk_module?modules/mod_jk-1-2-13-apache-2-0-54.so
#?Where?to?find?workers.properties
JkWorkersFile?conf/workers2.properties
#?Where?to?put?jk?logs
JkLogFile?logs/mod_jk.log
#?Set?the?jk?log?level?[debug/error/info]
JkLogLevel?info
#?Select?the?log?format
JkLogStampFormat?"[%a?%b?%d?%H:%M:%S?%Y]?"
#?JkOptions?indicate?to?send?SSL?KEY?SIZE,
JkOptions?+ForwardKeySize?+ForwardURICompat?-ForwardDirectories
#?JkRequestLogFormat?set?the?request?format
JkRequestLogFormat?"%w?%V?%T"
JkMount?/*?loadbalancer
其中JkMount?/*?loadbalancer的意思是,把所有的請求都發(fā)給loadbalancer處理。可以通過修改url來控制發(fā)送某些request。
4、在%apache%\conf下新建文件????workers2.properties????????其內(nèi)容為:
worker.list=loadbalancer,server1,server2
#?Define?the?first?node...
worker.server1.port=8009
worker.server1.host=172.16.0.116
worker.server1.type=ajp13
worker.server1.lbfactor=1
worker.server1.local_worker=1
worker.server1.cachesize=10
#?Define?the?first?node...
worker.server2.port=8009
worker.server2.host=172.16.32.88
worker.server2.type=ajp13
worker.server2.lbfactor=1
worker.server2.local_worker=1
worker.server2.cachesize=10
#?Now?we?define?the?load-balancing?behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=server1,server2
worker.loadbalancer.sticky_session=1
其中對于node的命名規(guī)則是worker.節(jié)點名.xxxx。所以上述文件定義了兩個節(jié)點:server1和server2。8009端口是jboss默認的ajp端口,另外需要注意的是worker.server2.lbfactor參數(shù),它是節(jié)點的負載加權(quán),它的值越大,獲得負載的機會就越大。可以根據(jù)node的硬件性能進行調(diào)整。worker.loadbalancer.sticky_session參數(shù)是指定是否使用粘性session。
所有需要負載均衡的節(jié)點,都必須在worker.loadbalancer.balanced_workers參數(shù)中列舉出來。
請記住所有node的名稱和它對應(yīng)著哪臺機器,后面的配置中會使用。
嘗試啟動apache:%apache\bin\apache.exe,正常情況下沒有任何提示。如果你使用的jk是2.0的,那么配置文件的寫法完全不同,由于mod_jk2已經(jīng)停止開發(fā),所以apache并沒有提供任何講解,對于配置文件的編寫也沒有任何指導。
Jboss自帶均衡器的配置
????將文件夾%jboss%\docs\examples\varia\loadbalancer\loadbalancer.sar拷貝到%jboss%\server\all\deploy下,并且修改loadbalancer.sar\loadbalancer.sar\META-INF\jboss-service.xml,在<host>標簽中類出所有節(jié)點,在<sticky-session>標簽中指定是否使用粘性session。配置完成。
????該均衡器的缺點是負載能力相對不高,配置參數(shù)太少,比如無法指定不同節(jié)點的負載加權(quán),所以后面都以mod_jk為例,不再講解jboss自帶的負載均衡器的內(nèi)容。
?
????負載均衡的配置基本完成,啟動jboss,其中過程中會列出DefaultPatition中所有的節(jié)點:
run.bat?-c?all
?
任何節(jié)點的關(guān)閉與啟動都會在cluster中廣播,比如加如一個新節(jié)點后,其他節(jié)點會得到以下提示:
?
2、session?sticky配置
????apache應(yīng)該會以粘性session的方式分發(fā)請求。部署一個應(yīng)用測試一下,你會發(fā)現(xiàn)粘性session沒有起作用。因為我們還沒有給jboss配置jvm路由(?jvmRoute),apache就無法知道究竟哪些session是屬于哪個節(jié)點的。我們繼續(xù)往下:
????修改server1機器上的jboss的配置文件:%jboss%\server\all\deploy\jbossweb-tomcat55.sar\?META-INF\?jboss-service.xml
????在110行有:<attribute?name="UseJK">false</attribute>,將它改為true。值得注意的是在這行標簽上面有一段注釋,要求你在server.xml中必須有:
Engine?name="jboss.web"?jmvRoute="Node1"?defaultHost="localhost"
????請注意這里有一個氣死人不償命的小bug,jboss的官方文檔把?jvmRoute寫成了jmvRoute,就是v和m兩個字母的顛倒讓我郁悶了三天,翻遍了jboss.com和theserverside.com。都是直接拷貝的錯,吐血吐到脫水啊。
????下面需要修改server1上的%jboss%\server\all\deploy\jbossweb-tomcat55.sar\?server.xml,在32行左右有:
<Engine?name="jboss.web"?defaultHost="localhost">
給它增加一個jvmRoute屬性:
<Engine?jvmRoute="server1"?name="jboss.web"?defaultHost="localhost">
請注意,jvmRoute的值必須和mod_jk中的節(jié)點名字正確對應(yīng),否則無法正確路由。Cluster中的所有節(jié)點都應(yīng)該做相應(yīng)的配置。
Jboss的配置完成了,下面需要在你的web應(yīng)用中修改配置文件,讓它支持集群。
在WEB-INF\web.xml中加入屬性:????<distributable/>
Ok,基于用戶的cluster完成了,每個用戶會綁定都某個節(jié)點上進行交互。這種綁定是如何完成的呢?原來apache把客戶分發(fā)到節(jié)點后,該節(jié)點會在用戶的session?id后面加上此節(jié)點的路由名稱,變成這個樣子:
Efdfxxd98daja87daj76da2dka**,server1
????有了這個標志,就能分辨該session屬于哪個節(jié)點。
3、session?replication配置
????下面要做的是基于request的cluster,也就讓各個節(jié)點之間互相復制session狀態(tài)。有兩種復制模式,同步與異步。使用同步的方式,jboss會把session復制的操作和對request的響應(yīng)放到一個應(yīng)用事務(wù)(application?transaction),session復制完成后才去處理request。異步復制則發(fā)送session復制的消息后馬上處理request,session復制則會稍有延遲。但是在多框架的web頁面中,這樣的集群方式會有問題。由于frame在同一時間發(fā)出多個request,會造成一些混亂,這也是采用基于用戶的集群方式的原因之一。
????JBoss?4.0.2中采用了Jboss?cache來實現(xiàn)session復制,實際上就是一個分布式緩存,由于session?id中包含了jvm?route,所以能夠分辨session屬于哪個節(jié)點。Session的更新類似于hibernate中的樂觀鎖,有了更新之后就讓session的版本號增加,其他節(jié)點通過對比版本號來決定是否同步session狀態(tài)。
????配置session?replication首先需要編輯
%jboss%?server\all\deploy\jbossweb-tomcat55.sar\META-INF\?jboss-service.xml,88行左右有:
<attribute?name="SnapshotMode">instant</attribute>
這就是剛才提到的復制模式,instant為立即復制,如果設(shè)為interval?那么系統(tǒng)會在延遲一段時間再進行復制,時間長度在<attribute?name="SnapshotInterval">2000</attribute>中指定,單位是毫秒。
單獨配置這一個地方還不夠,在%jboss%?server\all\deploy\?tc5-cluster-service.xml中有:
<attribute?name="CacheMode">REPL_ASYNC</attribute>
這里才真正決定復制是同步的還是異步的,可以指定為REPL_ASYNC(異步)或者REPL_SYNC(同步)。
在這個文件下面一點,還有一個config標簽,里面指定了各個節(jié)點在進行session復制的時候如何通信,有udp和tcp兩種可選,如果使用udp方式,那么應(yīng)該將udp的lookback屬性指定為true,因為windows上有一個叫做media?sense的東西會影響udp?multicast。注意如果你不了解multi?address的ip規(guī)則,請不要隨便修改mcast_addr的值。如果采用tcp方式的話,應(yīng)該指定bind_addr的值為本機ip,并且在TCPPING標簽的initial_hosts屬性中列出所有節(jié)點,格式是”機器名[端口號]”,比如在我們的例子中,就應(yīng)該這樣配置tcp(以其中一個節(jié)點為例):
<config>
<TCP?bind_addr="172.16.0.116"?start_port="7810"?loopback="true"/>
<TCPPING?initial_hosts="172.16.0.116[7810],172.16.32.88[7810]"?port_range="3"?timeout="3500"
num_initial_members="3"?up_thread="true"?down_thread="true"/>
<MERGE2?min_interval="5000"?max_interval="10000"/>
<FD?shun="true"?timeout="2500"?max_tries="5"?up_thread="true"?down_thread="true"?/>
<VERIFY_SUSPECT?timeout="1500"?down_thread="false"?up_thread="false"?/>
????<pbcast.NAKACK?down_thread="true"?up_thread="true"?gc_lag="100"
?????????retransmit_timeout="3000"/>
????<pbcast.STABLE?desired_avg_gossip="20000"?down_thread="false"?up_thread="false"?/>
????<pbcast.GMS?join_timeout="5000"?join_retry_timeout="2000"?shun="false"
print_local_addr="true"?down_thread="true"?up_thread="true"/>
<pbcast.STATE_TRANSFER?up_thread="true"?down_thread="true"/>
</config>
????JBoss的clustering版主建議盡量使用udp。不過在Sobey內(nèi)部,建議使用tcp方式,經(jīng)測試可能有不明物體在影響udp通信,導致Timeout異常。
????在%jboss%\?server\all\deploy\?cluster-service.xml中也有關(guān)于udp和tcp的配置信息,在4.0以前版本的jboss中,會以這個文件為主配置,4.0以后都以tc5-cluster-service.xml為主配置。
????Jboss的配置完成了,最后需要在web應(yīng)用中增加配置信息,控制session復制的粒度。在WEB-INF\????jboss-web.xml中增加以下內(nèi)容:
<replication-config>
????<replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
????<replication-granularity>SESSION</replication-granularity>
??</replication-config>
其中replication-trigger是指定哪些操作引發(fā)session的版本更新,它的取值有:
SET_AND_GET????????
SET_AND_NON_PRIMITIVE_GET
SET
replication-granularity是復制粒度,可以取session或attribute。如果取為attribute有可能導致復制失敗,這是目前版本的jboss?cache的一個bug,等待修正。
部署項目,測試,如果配置沒有問題,可以在%jboss%\0server\all\log\server.log中發(fā)現(xiàn)類似于這樣的信息:
DEBUG?[org.jboss.web.tomcat.tc5.session.JBossCacheManager]?check?to?see?if?needs?to?store?and?replicate?session?with?id?Im9-qpuaXppMS+xXwE3M+Q**.server1?
DEBUG?[org.jboss.web.tomcat.tc5.session.ClusteredSession]?processSessionRepl():?session?is?dirty.?Will?increment?version?from:?20?and?replicate.
????Session?replication配置的成功率比較低,情況也很復雜,請仔細操作。
五、分布式熱部署(distributable?hot?deploy)
????在一個節(jié)點很多的cluster中,如果部署應(yīng)用的時候必須把程序文件拷貝到每個機器上的話,那實在太愚蠢了,幸好通過all啟動的jboss自動支持分布式熱部署。把支持cluster的應(yīng)用(通常需要打包成war文件),放到%jboss%\server\all\farm下,那么處于同一cluster中的其他節(jié)點會自動下載并且部署,jboss把這個稱為Farm?deploy。如下圖:
End?2005-7-11?Released?by?bromon
? 2006 Huihoo
posted on 2006-12-05 09:30
Vista
閱讀(1038)
評論(0)
編輯
收藏
所屬分類:
開源※類庫
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
轉(zhuǎn)貼--JBOSS集群
vista 精神之 - 類庫篇
Copyright @ Vista
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
主站蜘蛛池模板:
亚洲熟女少妇一区二区
|
成年女人看片免费视频播放器
|
无码欧精品亚洲日韩一区夜夜嗨
|
国产精品1024在线永久免费
|
四虎影视永久免费视频观看
|
亚洲欧洲无码AV不卡在线
|
一二三四免费观看在线电影
|
亚洲激情电影在线
|
久久成人国产精品免费软件
|
亚洲国产精品综合福利专区
|
韩国免费一级成人毛片
|
中文字幕无码精品亚洲资源网久久
|
久久电影网午夜鲁丝片免费
|
亚洲精品成a人在线观看夫
|
亚洲伊人成无码综合网
|
jzzjzz免费观看大片免费
|
久久久久久亚洲精品不卡
|
免费看少妇高潮成人片
|
久久亚洲AV成人无码软件
|
性短视频在线观看免费不卡流畅
|
2017亚洲男人天堂一
|
免费国产小视频在线观看
|
kk4kk免费视频毛片
|
亚洲一区二区三区四区在线观看
|
成年免费大片黄在线观看岛国
|
亚洲乱妇熟女爽到高潮的片
|
免费一看一级毛片全播放
|
黄 色一级 成 人网站免费
|
亚洲AV成人片色在线观看高潮
|
18禁美女裸体免费网站
|
亚洲精品亚洲人成在线
|
中文字幕亚洲日韩无线码
|
99免费观看视频
|
亚洲hairy多毛pics大全
|
亚洲性猛交XXXX
|
性短视频在线观看免费不卡流畅
|
亚洲av无码专区青青草原
|
亚洲中文字幕在线观看
|
国产成人精品久久免费动漫
|
男人免费视频一区二区在线观看
|
亚洲∧v久久久无码精品
|