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

通向架構師的道路 ( 第十七天 ) IBM Websphere 叢集探秘 – WASND

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


來源:袁鳴凱 ,

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

一、IBMWebsphere叢集

IBM WebSphere的發行版分為單機版和NetworkDeployment版,我們把Network Deployment稱為ND即可作叢集的版本。

WAS的叢集和Weblogic的叢集一樣,它也可以作垂直和橫向兩種叢集。

而WASND的叢集是在所有的叢集中最強大的,因為它可以:

透過各個node組成一個個cell,又可以把這一個個cell組成一個個新的cluster,而cluter與cluster還可以透過共屬一個manager node來組成新的一個叢集,以此可以透過WASND來組集超大規模叢集。

同時,IBM的新一代產品如:網格計算(回頭我們說完了WASND就來說這個),雲端計算一些企業級虛擬應用都是建立在WASND的基礎之上的。

 二、基本概念

使用WASND作叢集的步驟很多,下麵的教程有幾十頁之多,都是步驟,只要記住下麵幾個步驟就能抓住關鍵點了。

  1. 先裝WASND,廢話,但你也必須要有WASND而不是一般的WAS,一般的WAS作不了叢集。

  2. 建立一個Deployment Manager節點,我們稱它為DMGR。

  3. 建立“應用單元”。

  4. 將“應用單元”與DMGR進行“聯合”,這邊的官方檔案上寫的是”Federate”,我們可以把它理解成“把應用單元”加入DMGR的管理之下。

  5. 用startManager啟動dmgr。

  6. 用startNode啟動各個node。

  7. 進入dmgr的admin console可以啟動和停止叢集下的各個成員。

下麵我們就來造一個叢集,在本案例內我們裝1個dmgr,兩個node,然後把兩個node加入該dmgr,然後使用IBM HttpServer(IHS)來做HTTP請求派發(請見下麵的表格-大小寫嚴格區分)

為了測試方便,我們三個單元全部啟用“安全性管理”,使用者名稱與密碼均為“admin/password_1”。

三、安裝WASND

3.1 WASND軟體的安裝

我們在此使用的是WASND7.0。

解壓後進入相關目錄雙擊launch.exe來啟動WASND的安裝介面。

開始安裝。

下一步

下一步

填入相應的安裝目錄(簡單明瞭,不要裝在什麼c:\program files這樣的目錄名下),不要有空格,不要有特殊字元,JAVA很忌諱這個的。

下一步

我們不要讓安裝程式替我們做任何節點的配置,我們將在安裝完成後自己來手動配置,因此這邊選“無”。

下一步

在彈出對話方塊中選[是]

一直下一步,直到安裝開始。

裝完後,把“使用概要管理工具建立新的WebSphere Application概要檔案”選項前的勾去掉,並點選[完成]按鈕。

裝完WASND後我們在系統選單中會得到如下的選單項

我們選“概要管理工具”來建立我們的dmgr吧。

3.2 建立DMGR(管理單元)

啟動概要管理工具

點[啟動概要管理工具]

點[建立]按鈕

選擇“管理”點[下一步]

選擇“Deployment Manager”選[下一步]

我們這邊選擇“高階概要檔案建立”。

[下一步]

我們建立一個概要名即profileName為:Dmgr的概要檔案,該概要檔案包含一個Deployment Manager Server, server名為dmgr。

下一步,然後輸入我們的admin console的使用者名稱與密碼,我們使用:

admin/password_1。

下一步

我們不希望這些建立後的單元隨著我們系統的啟動而啟動,我們將在隨後的教程中使用命令列來啟動這些單元節點。

下一步

我們最後review一下我們的dmgr的配置,下一步開始[建立]這個管理單元的節點吧

建立完成成後不要勾選“啟動第一步控制檯”這個選項點[完成]按鈕即可。

回到“根據管理工具”主介面,我們可以看到我們剛才的步驟已經建立了一個管理單元節點了。

使用以下命令啟動我們的管理單元

看到“行程標識為4980”的字樣後代表我們的管理單元已經啟動成功了。

我們在IE位址列中輸入http://localhost:9060/ibm/console後使用admin/password_1登入後看到管理控制檯後代表我們的管理單元已經建立成功了。

接下來我們就要開始建立我們的叢集節點:AppSrv01與AppSrv02了。

3.3 建立AppSrv01與02(叢集節點)

依舊使用這個“管理概要工具”,點[建立]按鈕。

這次我們要選“應用程式伺服器”這個模板來建立我們的叢集節點了。

下一步

下一步

在此我們建立我們的第一個叢集節點即:profileName為AppSrv01,server名為server1。

下一步

填入server名,我們這邊填server1

下一步

此處的使用者名稱與密碼還是用admin/password_1。

下一步

我們review一下我們的配置後下一步 

和管理單元的建立一樣,我們不把AppSrv01設為隨著作業系統的啟動而啟動,我們將手工啟動AppSrv01與AppSrv02。

下一步

最後確認一下,我們開始建立我們這個節點。

建立完了AppSrv01後我們依照AppSrv01的步驟再建立一個:

profileName為AppSrv02;

Server Name:為server1(這邊也是server1哦,看仔細了);

的“應用程式伺服器”

全部節點建立完成後對照著我們回過頭來,再來對照著上面的那個表格,來看下麵這個串列。

 

我們依次啟動AppSrv01與AppSrv02來測試我們剛才的建立是否成功。

兩個server的節點起來後我們在IE位址列分別用:

http://localhost:9061/ibm/console與http://localhost:9062/ibm/console進行登入,如果都能登入成功,代表剛才我們的建立一切無誤。

接下去我們就要開始我們的“叢集”了,即“聯合集點”的工作了。

四、使普通的應用程式伺服器與Dmgr聯合

4.1 聯合AppSrv01節點入Dmgr

進入: d:\IBM\WebSphere\AppServer\profiles\AppSrv01\bin目錄

鍵入:addNode.bat localhost 8879 –username admin –password password_1進行節點聯合

此處的localhost8879即為你的Dmgr所在的ip與dmgr的soap連線埠。

註意:

WAS內的soap連線埠預設從8879開始計數,所以Dmgr的soap埠是8879,AppSrv01的soap埠就是8880,AppSrv02的soap埠就為8881,依次類推。

4.2 聯合AppSrv02節點入Dmgr

當有任意一個“應用程式伺服器”被聯合入Dmgr後,該Dmgr即不再以server的形式運行了,而是以manager的形式來運行了,因此再關閉和啟動該Dmgr時不能用startServer命令了,而是要用startManager, stopManager這對命令來控制該Dmgr的啟動與關閉了。

4.3 重新用叢集的方式啟動Dmgr,AppSrv01,AppSrv02

4.3.1 先依次關閉AppSrv02, AppSrv01, Dmgr

關閉AppSrv02

關閉AppSrv01

 

關閉Dmgr

因為已經有任意一個“應用程式伺服器”被聯合入Dmgr後,該Dmgr即不再以server的形式運行了,而是以manager的形式來運行了,因此再關閉和啟動該Dmgr時不能用startServer命令了,而是要用startManager, stopManager這對命令來控制該Dmgr的啟動與關閉了。

所以我們使用stopManager而不再是stopServer命令了。

4.3.2 依次啟動叢集各節點Dmgr, AppSrv01, AppSrv02

先啟動Dmgr

使用:D:\IBM\WebSphere\AppServer\profiles\Dmgr\bin\startManager–username admin –password password_1來啟動我們的Dmgr。

再啟動AppSrv01

AppSrv01與AppSrv02的啟動沒有先後順序,可以任意。

再啟動AppSrv02

 

4.4 利用WAS自帶的adminconsole組建叢集

Dmgr, AppSrv01, AppSrv02都以叢集的方式啟動起來後我們還需要使用我們的admin console來把這些個節點真正組成我們想要的叢集。

一旦叢集組成後,我們就可以在admin console中start, stop我們的叢集了。

註:

要在admin console中使用GUI的方式start stop我們的叢集必須先以startMangaer的方試啟動我們的Dmgr,再以startNode的形式把各個節點啟動起來後才能利用admin console中的GUI方式來控制叢集。

我們登入dmgr的admin console即使用:http://localhost:9060/ibm/console登入後

我們選擇左邊的伺服器型別->WebSphere Application Server,在右邊如下圖我們可以看到現在列出2個server,全部選中後,點[刪除]按鈕(對,你沒看錯,我們要的是叢集不要單獨執行的server)。

全刪空後的效果如下圖

此時,我們選擇左邊選單的“WebSphere Application Server叢集”,然後在右邊的操作面板中點[新建]按鈕。

我們把我們這個叢集名叫“mycluster”吧,按照下麵的截圖填選

下一步

此處,我們把AppSrv01這個profile所帶的server1加入這個cluster中去。

下一步

這步要註意了,很重要

剛才我們將位於shnlap93Node01即AppSrv01中的server1加入了mycluster,現在我們要將AppSrv02中的server1也加入mycluster中。

記住在選擇節點出選擇“shnlap93Node02”,成員名還是添server1(不是server2哦)這邊有點搞。

然後不是點[下一步],而是點那個[新增成員]這個按鈕。

點了這個[新增成員]按鈕後我們會發覺在下方的成員串列中多了一項了,如下圖所示。

此時,再點[下一步]

我們確認資訊後點[完成],開始建立“mycluster”叢集。

建立完後千萬不要忘記點“儲存”這個連線啊,要不然前功盡棄。

點完“儲存”這個連線後系統將顯示如下這樣的訊息輸出界面

等到所有的訊息輸出完成後,再點[確定]按鈕。

叢集mycluster建立完成後將顯示如下,此時,它的狀態為不可用。

我們點這個“mycluster”,點進去,看到下麵這樣的介面。

可以看到這個叢集包括兩個節點以及節點的相關資訊,並且這兩個節點雖然都已經startNode了,但實質上相關的服務沒有啟動起來。

我們先不急著啟動我們的叢集,我們先來佈署我們的JDBC吧。

五、在WASND中佈署JDBC

在建立JDBC前我們先作一個小操作。

因為我們現在是叢集了,在一個單元的任何資源釋出都會被同步到另一個相同的叢集中的另一個節點,但是WASND預設是不會進行這個“節點間的同步”的,需要我們人工設定一下,按照下圖:

系統管理->控制檯首選項中,勾選這個“與節點同步更改”的選項,並點選[應用]。

以後,無論什麼資源釋出,企業級應用程式釋出,節點間的應用就都會自動“同步”了。

 

5.1 建立JDBC Provider

這個和我們在(第十五天)IBM Websphere的安裝與最佳化中的5.2小節中的介紹一樣,沒有什麼特殊的,只是在建立JDBC Provider時的作用域要選“mycluster”,而不能再是普通的Node了。

5.2 資料源

建立完我們的JDBC Provider後,我們還要建立我們的資料源,對吧?

別忘了給該資料源指定一個JAAS-J2C認證資料-見(第十五天)IBM Websphere的安裝與最佳化中的資料源的建立部分。

好,此時請不要急著點測試。

WASND7中有個BUG,即有時釋出完一個資源,並且同步到各個節點後並未馬上生效,而是需要物理上重啟各個“同步的節點”才會生效。

因此,我們開啟一個命令列:

第一步:依次stopAppSrv01與AppSrv02

第二步:依次startAppSrv01與AppSrv02

 

回到我們的admin console介面中。

  1. 使用左邊的選單項中的“WebSphere Application Server叢集”。

  2. 勾選”mycluster”這個叢集

  3. 點[啟動]按鈕

我們可以不斷的透過“狀態”旁的掃清按鈕來監控這個叢集啟動狀態

正在啟動狀態

啟動成功狀態

啟動成功後該叢集mycluster中的各個節點的狀態都應該為“綠色箭頭”。

回到資料源主視窗,此時我們可以測試這個資料源的連線是否正常了。

 

如果資料源測試成功因該顯示如下資訊

六、在WebSphere叢集環境中佈署企業級應用

我們將使用在(第十五天)IBM Websphere的安裝與最佳化中的第5.3小節的透過Ant指令碼打包出來的EAR包來進行佈署。

應用程式->新建應用程式

下一步

下一步

這邊的作用域一定要按照如下圖所選啊。

同時要確保“伺服器”(即Target)這欄中顯示的內容即有包含cell又有包含cluster。

如果只包含cell那麼:

  1. 請勾選這個“選擇”前的checkbox

  2. 然後在上部的“叢集和伺服器”中選擇正確的即有cell又有cluster的下拉項,然後點應用,使得伺服器(即Target)所顯示的內容即有cell又有cluster

下一步

系結工程中的資料源與WASND中剛才設定的資料源。

下一步

下一步下一步一直到出現最後確認資訊的對話方塊,對[完成]按鈕

 

別忘了點“儲存”啊,再提醒一下

訊息輸出完成後點[確定]

一個企業級應用即ear包剛被佈署到叢集環境中,它的狀態是不可用的,請按照如下圖操作,使得該應用能夠被啟用。

一個企業級應用啟動成功後的顯示介面

此時我們來看:

D:\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\shnlap93Cell01目錄下

看到沒有,自動已經佈署了這個ear。

那麼叢集間的節點是同步的,好!

我們再來看D:\IBM\WebSphere\AppServer\profiles\AppSrv02\installedApps\shnlap93Cell01目錄下

看到沒有,也已經被自動佈署了這個ear檔案了。

叢集上釋出應用,節點間自動同步!!YEAH!!

我們可以試著使用一個IE,一個FireFox分別使用:

http://localhost:9080/cbbs與http://localhost:9081/cbbs 這兩個地址分別來試著登入我們的應用,如果兩個地址的應用都能夠被成功登入,那就說明我們的應用已經在叢集環境中釋出成功了。

七、整合IBMHTTPServer與WASND

我們應用已經在叢集環境中釋出成功了,下麵我們來使用我們的IHS來整合我們的WASND吧,必盡在實際應用中我們對外只有一個網址即:http://localhost/cbbs,至於它背後有幾個AppServer對使用者來說應該是“透明”的。

透過伺服器->伺服器型別->web伺服器,我們在右邊的操作面板中點[新建]

我們把我們這個web server命名為demoweb。

把它安裝在節點:shnlap93Node01上吧(沒關係,隨便裝哪個節點都可以,它會同步另一個節點的配置的)。

 

下一步

下一步下一步直到完成,別忘了點“儲存”。

 

然後我們得到下麵這個Web Server,請啟動這個Web Server,怎麼啟動還記麼?系統選單欄中去啟動它吧!!!

這是我們剛才建立的一個Web Server。

確保我們的企業級應用程式佈署的作用域即Target正確。

應用程式->應用程式型別->WebSphere企業應用程式

用滑鼠單擊我們剛才佈署的這個應用

進入這個“管理模組”

確保我們的作用域中含有叢集,在此我們這個叢集為mycluster,要不然,你後一步生成的IHS的plugin的作用域只能夠用來連線單個WebSphere節點與IHS,而不是整個叢集+IHS的配置。

然後我們選中這個demoweb點[生成外掛],點一下這個[傳播外掛]

我們可以看到在D:\deployment\HTTPServer\Plugins\config目錄下多了一個目錄叫demoweb目錄。

把這個demoweb目錄複製到我們的IBMHTTPServer的安裝目錄下去,如果有提示改寫請選擇“是,全部”。

如:

我們的HTTPServer是裝在D:\IBM\HTTPServer\

那麼我們就把:

D:\deployment\HTTPServer\Plugins\config\下的內容全部改寫式複製到

D:\IBM\HTTPServer\Plugins\config目錄內。

然後我們用純文字編輯器開啟D:\IBM\HTTPServer\Plugins\config\demoweb\plugin-cfg.xml檔案。

第一步:

把所有的d:\deployment\HTTPServer的字樣換成我們的真實的HTTPServer安裝的目錄,因為我們的HTTPServer可能與我們的WAS是安裝在兩臺不同的機器上的。

如果你在生成plugins時使用的IHS的路徑和我們的HTTPServer所在的路徑是一致的,那麼你大可跳過這一步。

如我們這邊就需要:

把所有的d:\ deployment\HTTPServe替換成D:\IBM\HTTPServer。

第二步:

在D:\IBM\HTTPServer\Plugins\config\demoweb\plugin-cfg.xml檔案內找到下麵這一行:

往下看,我們可以看到如下這些行:

 

我們把先把下麵這段註釋掉,因為我們想讓所有的/cbbs下動態的內容給我們的WebSphere去解釋,所有的靜態html內容給我們的IHS解析,而不是像它預設這樣,所有的動態靜態全交給了WebSphere去解析,這不是我們想要的。因此我們把這一行註釋掉。

然後我們在這一行下再增加如下幾行:

 

 

 

 

 

這個plugin.xml很像“(第十六天)IBM Websphere與IBM HttpServer的整合”中的那個plugin檔案,對吧?

區別在於這邊的幾行陳述句,這個就是IBM HttpServer與WASND結合時的plugin描述陳述句。

 

LoadBalance=”Round Robin” Name=”mycluster” PostBufferSize=”64″ PostSizeLimit=”-1″

 

RemoveSpecialHeaders=”true” RetryInterval=”60″>

 

 

MaxConnections=”-1″ Name=”shnlap93Node01_server1″ ServerIOTimeout=”60″

 

WaitForContinue=”false”>

 

 

 

 

 

 

 

   

 

 

 

 

 

MaxConnections=”-1″ Name=”shnlap93Node02_server1″ ServerIOTimeout=”60″

 

WaitForContinue=”false”>

 

 

 

 

 

   

 

   

 

 

 

 

 

         

 

         

 

 

第三步:

開啟D:\IBM\HTTPServer\conf目錄下的httpd.conf檔案,最後幾行確保是以下內容:

LoadModule was_ap20_module “d:\IBM\HTTPServer\Plugins\bin\mod_was_ap20_http.dll”

 

WebSpherePluginConfig “d:\IBM\HTTPServer\Plugins\config\demoweb\plugin-cfg.xml”

 

 

ServerName shnlap93

 

ServerAlias shnlap93

 

ServerAdmin admin@shnlap93

 

DocumentRoot d:/www

 

DirectoryIndex index.htm index.html index.jsp

 

 

    Options None

 

    AllowOverride None

 

    Order allow,deny

 

          Allow from all

 

 

第四步:

儲存我們修改的httpd.conf檔案,儲存我們修改的plugins檔案,重啟我們的IBM HTTPServer。

如果一切無誤,那麼我們先來書寫一個index.htm檔案,並把它放在我們的d:\www\cbbs目錄下,其內容如下:

 

 

 

 

loading

 

 

Loading…

 

然後我們開啟一個IE,輸入: http://localhost/cbbs/,得到我們的應用的登入介面,輸入相關的使用者名稱與密碼登入後,進行一些操作,一切無誤:

然後我們再開啟一個firefox,輸入: http://localhost/cbbs/,得到我們的應用的登入介面,輸入另一個使用者名稱與密碼登入後,進行一些操作,一切無誤:

我們看:

D:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1目錄下的SystemOut.log檔案

再看:

D:\IBM\WebSphere\AppServer\profiles\AppSrv02\logs\server1目錄下的SystemOut.log檔案

 

這說明我們我們透過兩個不同的瀏覽器使用兩個使用者在訪問叢集環境時:

  • 一個使用者名稱被分流到的AppSrv01中去;

  • 另一個使用者在登入時則被分流到了AppSrv02中去;

WebSphere的叢集+IBM HTTPServer整合成功,結束今天的教程。

系列


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

關註「ImportNew」,提升Java技能

贊(0)

分享創造快樂