歡迎光臨
每天分享高質量文章

通向架構師的道路(第九天)之 Weblogic 的叢集與配置

(點選上方公眾號,可快速關註)


來源:袁鳴凱 ,

blog.csdn.net/lifetragedy/article/details/7768199

一、Weblogic的叢集

還記得我們在第五天教程中講到的關於Tomcat的叢集嗎?

 

兩個tomcat做node即tomcat1, tomcat2,使用Apache HttpServer做請求派發。

現在看看WebLogic的叢集吧,其實也差不多。

區別在於:

  • Tomcat的叢集的實現為兩個物理上不同的tomcat,分別就是兩個node,沒有總控端,沒有任何控制檯可言(只有透過比較簡陋的http://localhost:8080/manager/html,或者是http://localhost:9090/manager/html)來對每個tomcat節點進行監視(此處只有monitor沒有control);

  • 如果我們要佈署我們的Web應用,需要分別手工往每個Tomcat的webapp目錄裡複製檔案。

Weblogic的叢集必須設立一個總控端,可從上圖中看出,然後這個總控端我們把它稱為AdminServer,然後在其下可以掛weblogic的叢集的node,這個node不是物理上不同的兩個weblogic,而是不同的domain,我們假設domain1, domain2為兩個weblogic的叢集的節點。

如果我們要佈署我們的Web應用,只需要在總控端佈署一次,然後掛在這個總控端下的節點將會自動將我們的web應用釋出到每一個節點。

因此,要實現weblogic的叢集必須:

  1. 安裝Weblogic

  2. 建立一個AdminServer的domain

  3. 在AdminServer上建立叢集總控端

  4. 分別建立每一個要加入此叢集總控端的node,也是一個個的domain

二、建立Weblogic叢集前的規劃

根據第一節中的內容,我們將我們用於實驗的Weblogic規劃成3個domain,每個domain都包含有下列的必不可少的屬性:

AdminConsole(總控端)

l   邏輯名

l   物理名(domain的系統路徑)

l   埠號

l   計器名(IP)

l   登入資訊(username/password)

Cluster node1(叢集節點1)

l   邏輯名

l   物理名(domain的系統路徑)

l   埠號

l   計器名(IP)

l   登入資訊(username/password)

Cluster node2(叢集節點2)

l   邏輯名

l   物理名(domain的系統路徑)

l   埠號

l   計器名(IP)

l   登入資訊(username/password)

我們用表格列出我們將要建立的叢集中總控端與每個節點的集息:

規劃好了,就可以開始來建立我們的叢集了。

三、開始建立我們的Weblogic叢集

3.1 建立叢集的總控制端(aminserver)

Windows:

Windows下透過選單->OracleWeblogic->Weblogic Server 11gR1->Tools->Configuration Wizard來啟動建立domain的wizard。

Unix/Linux:

Unix/Linux下透過

cd /bea/wlserver/common/bin

./config.sh

來啟動建立domain的wizard。

選擇“建立新的Weblogic域”,選下一步(下麵全部跟著我的操作步驟與介面填選的引數走,所有的使用者名稱啦、密碼啦、埠號啦、IP啦,都請根據第一節中的那個表格裡的引數填寫)

下一步後介面類似,但是是有區別的,註意了哦,不要下手太快了

上面這個配的就叫叢集廣播地址的介面。

因為叢集是透過廣播(有unicast和multicast兩種)來同步叢集中的節點,並且把每個節點中的session透過這個廣播地址來進行複製和同步,即主控域不斷的時時刻刻的會和它下麵的子節點間保持通訊、經常去詢問各個子節點的。

名稱:

可以任意

叢集資訊傳送樣式:

有unitcast與multicast兩種,在11G版本前都是multicast10G後開始支援unicast協議。

如果指定了multicast,就必須指定一個“多點傳送地址”,此地址和埠都可以採用weblogic預設的。

如果在域環境,還需要在防火牆中配置這個“多點傳送地址”與“多點傳送埠”,使其在防火牆中被開啟,協議為both of tcp and udp。

Look, 右邊這塊我們把它稱為“叢集的邏輯拓卜圖”。

此處是對每個集群裡的節點指定相應的“計算機名/IP”,由於我們的實驗是建立在同一臺機器上的即縱向叢集,因此這步什麼都不需要填,直接下一步。

完成後可以啟動adminserver

然後透過http://localhost:7001/console來檢視我們的叢集規劃,如下圖:

這樣,我們就完成了建立一個新的domain並且將且擴充套件成為了叢集的總控制端伺服器,同時在這上面我們製作了一個“叢集拓卜圖”,那麼下麵要做的就是:

  • 建立該叢集拓卜圖中的節點1

  • 建立該叢集拓卜圖中的節點2

3.2 建立叢集中的節點(mycluster1, mycluster2)

啟動Weblogic的Configuration Wizard

按照普通的域,就是一個普通的域來建立(為了實驗方便我們的使用者名稱與密碼全部為weblogic/password_1):

l   user_projects\domains\server1(邏輯名為:mycluster1,埠:7011)

l   user_projects\domains\server2(邏輯名為:mycluster2,埠:7012)

下一步,下一步,建立,完成。

依上面的相同步驟可以自行建立server2(邏輯名為mycluster2,埠:7012)。

3.3 如何啟動叢集

我們看著上面這個表格來輸入命令吧。

1.  啟動主控域(必須永遠先啟動主控域)

2.  啟動節點1(間點間的啟動順序無所謂)

3. 啟動節點2(間點間的啟動順序無所謂)

全部啟動完畢後就可以透過主控制域的admin console即http://localhost:7001/console來管理這個叢集了。

四、jdbc叢集

有了叢集,我們就可以佈署我們的JDBC了,只是這個JDBC的佈署和以前單機版的JDBC佈署稍稍有點不一樣,前面我們取用第八天中的建立JDBC的步驟:

好好好,停,到了這邊,不一樣的地方來了。

嘿嘿,千萬不要把這個JDBC連線池的“target”即作用域設錯了哈,我們現在是叢集,要把這個JDBC連線池的作用域設在我們的叢集上的哈!

我們來測試一下我們建立的資料源吧。

兩個cluster上的資料源全部部署成功。

這邊再提一句:

叢集佈署的話AdminServer只是一個控制器,透過它佈署的war程式是自動同步到掛在它下麵的所有的節點中去的,因此JDBC資料源,或者JMS或者是EJB都要在系結是把target即作用域設成cluster而不是AdminServer本身,因為AdminServer本身不會佈署任何任何東西的。

五、把工程佈署到叢集環境中去

確保我們將要佈署的工程中的web.xml的最後一行含有:

在將要佈署的工程的WEB-INF目錄下新建一個weblogic.xml的檔案,其內容如下:

 

 

 

 true

 

 replicated

 

 true

 

 

/cbbs

 

該內容使得你的工程可以在Weblogic叢集環境下進行Session複製。

然後就可以開始佈署了

下麵又來了,和在叢集中佈署JDBC是一樣的,請看:

下一步,下一步一直到[完成]按鈕亮起來後,點[完成]。

點[儲存]並[啟用更改]。

大家來看看兩個cluster即mycluster1與mycluster2下是否被佈署了工程,即相當於我們手工要在兩個tomcat節點的webapps目錄裡拷入我們的WAR工程,而weblogic只需要透過主控制域,自動將war工程佈署在其下的所有子節點內。

是的,果然,它自動佈署了。就算我下麵有10幾個子節點,它也一樣只需要在AdminServer上佈署一次,自動同步。

我們把這個工程啟動起來吧。

當你一點“為所有請求提供服務,再來看兩個位元組點的後臺console,都可以同步啟動了:

佈署成功

開啟兩個IE:

一個輸入: http://localhost:7011/cbbs

一個輸入: http://localhost:7012/cbbs

Weblogic叢集佈署成功,接下去就是在Apache裡進行派發了

六、使用Apache與Weblogic叢集整合

開啟httpd.conf,把下麵這段就是我們在“第九天”中加入的,去掉:

LoadModule weblogic_module modules/mod_wl_22.so

 

 

   WebLogicHost localhost

 

   WebLogicPort 7001

 

   MatchExpression /cbbs/WEB-INF

 

   MatchExpression /cbbs/*WEB-INF

 

   MatchExpression /cbbs/*.action

 

   MatchExpression /cbbs/servlet/*

 

   MatchExpression /cbbs/*.jsp

 

   MatchExpression /cbbs/*fckeditor/editor/filemanager/connectors/*.*

 

   MatchExpression /cbbs/fckeditor/editor/filemanager/connectors/*

 

   WLLogFile logs/wlproxy.log

 

換成下麵這一段

LoadModule weblogic_module modules/mod_wl_22.so

 

 

   Include conf/weblogic.conf

 

然後在apache安裝的conf目錄下手工建立weblogic.conf檔案,其內容如下:

WeblogicCluster localhost:7011,localhost:7012

 

MatchExpression /cbbs/WEB-INF

 

MatchExpression /cbbs/*WEB-INF

 

MatchExpression /cbbs/*.action

 

MatchExpression /cbbs/servlet/*

 

MatchExpression /cbbs/*.jsp

 

MatchExpression /cbbs/*fckeditor/editor/filemanager/connectors/*.*

 

MatchExpression /cbbs/fckeditor/editor/filemanager/connectors/*

重啟你的Apache,輸入:http://localhost/cbbs/index.jsp

Apache加Weblogic叢集,搞定!

七、JMS叢集

這是我在用Weblogic叢集佈署PEGA Rulz的詳細步驟,供各為參考。因為網上關於JMS在Weblogic下如何作叢集不是太多,因此把步驟記錄下來Share給大家。

JMS叢集和JDBC叢集不一樣,就是不能夠直接建立JMS源,然後把它target到我們的myclusterbroadcast上去。

而是需要分別為每個cluster單獨建一個jms的server如下圖。

然後建立jmsmodule

將module 的作用範圍即target到我們的cluster(myclusterbroadcast)上去。

建立完了module你就要建立topic, queue以及相應的topic connection factory或者是queue connectionfactory了是吧?

因為我們這邊給PEGA Rulz做叢集用的是topic方式來釋出叢集的,因此我們以topic為例,queue的建立也就一樣了。

單擊剛才我們建立的KTJmsModule

點[New]

先建connection factory

在新建connectionfactory的介面中有一個[高階定位]的按鈕

點[新建子部署]

填入完子佈署的名稱後,按照如下圖來“target”

點完成後跳出如下的介面

此時我們可以開始真正建立我們的topic或者是queue了

前面說了不能夠直接建立JMS源,然後把它target到我們的myclusterbroadcast上去。那麼我們要對JMS進行叢集即對Topic或者是Queue進行叢集,但是我們可以建立一個Distribute Topic,然後分別建兩個一邊的topic,一個topic連向jmsserver1一個topic連向jmsserver2,然後把這個Distribute Topic定位(Target)到這兩條topic上即是我們的“叢集下的jms topic”。

在jmd module裡點[新建]按鈕

選擇“主題”(不是分散式主題)

每個子部署(sub deployment)需要定位(target)到一個jms server上。

依此分別建立:

l   topic1 subtop1->jmsserver1

l   topic2 subtop2->jmsserver2

現在,我們的jms module裡的內容因該如下圖所示:

建立 “分散式主題”(DistributeTopic)

在jms module裡點新建按鈕,選“分散式主題”

一定要記得把“Destination Type”改成“Weighted”。

這邊的分散式Topic的JNDI Name: 就是我們真正的需要用來做叢集的JMS的Topic或者是Queue的jndi名,比如說我的產品PEGA Rulz需要在叢集環境下用到RamTopicJNDI,這個JNDI Name就必須填產品說明書上的那個Topic或者是Queue的名字哦。

點下一步後將剛才兩個新建的topic全部分配給這個distribute topic

點[完成]按鈕

這樣,一個叢集環境下的JMS分散式主題(Topic)就全建完了,最後不要忘了點左邊選單上方的“啟用更改”,儲存您剛才的所有的更改。

系列


看完本文有收穫?請轉發分享給更多人

關註「ImportNew」,提升Java技能

贊(0)

分享創造快樂