通向架构师的道路(第十七天)IBM Websphere集群探秘-WASND
2019獨角獸企業重金招聘Python工程師標準>>>
一、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請求派發(請見下面的表格-大小寫嚴格區分)
| 邏輯名稱 | 單元功能 | profileName | server |
| Dmgr | 集群管理單元 | Dmgr | dmgr |
| Server1 | 集群節點1 | AppSrv01 | server1 |
| Server2 | 集群節點1 | AppSrv02 | server1 |
為了測試方便,我們三個單元全部啟用“安全性管理”,用戶名與密碼均為“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哦,看仔細了);
的“應用程序服務器”
全部節點創建完成后對照著我們回過頭來,再來對照著上面的那個表格,來看下面這個列表。
| 邏輯名稱 | 單元功能 | profileName | server |
| Dmgr | 集群管理單元 | Dmgr | dmgr |
| Server1 | 集群節點1 | AppSrv01 | server1 |
| Server2 | 集群節點1 | AppSrv02 | 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文件內找到下面這一行:
| <UriGroup Name="default_host_mycluster_URIs"> |
往下看,我們可以看到如下這些行:
| ? <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/cbbs/*"/> </UriGroup> |
我們把先把下面這段注釋掉,因為我們想讓所有的/cbbs下動態的內容給我們的WebSphere去解釋,所有的靜態html內容給我們的IHS解析,而不是像它默認這樣,所有的動態靜態全交給了WebSphere去解析,這不是我們想要的。因此我們把這一行注釋掉。
| <!-- ????? <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/cbbs/*"/> --> |
然后我們在這一行下再增加如下幾行:
| <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/cbbs/WEB-INF/*"/> <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/cbbs/*.action"/> <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/cbbs/servlet/*"/> <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/cbbs/*.jsp"/> <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/cbbs/*fckeditor/editor/filemanager/connectors/*.*"/> <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/cbbs/fckeditor/editor/filemanager/connectors/*"/> |
這個plugin.xml很像“(第十六天)IBM Websphere與IBM HttpServer的集成”中的那個plugin文件,對吧?
區別在于這邊的幾行語句,這個就是IBM HttpServer與WASND結合時的plugin描述語句。
| <ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="mycluster" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60"> <Server CloneID="1756mq3p8" ConnectTimeout="5" ExtendedHandshake="false" LoadBalanceWeight="2" MaxConnections="-1" Name="shnlap93Node01_server1" ServerIOTimeout="60" WaitForContinue="false"> ?<Transport Hostname="shnlap93" Port="9080" Protocol="http"/> ?<Transport Hostname="shnlap93" Port="9443" Protocol="https"> ? <Property Name="keyring" Value="D:\IBM\HTTPServer\Plugins\config\demoweb\plugin-key.kdb"/> ?? <Property Name="stashfile" Value="D:\IBM\HTTPServer\Plugins\config\demoweb\plugin-key.sth"/> ?</Transport> </Server> <Server CloneID="1756mq6cs" ConnectTimeout="5" ExtendedHandshake="false" LoadBalanceWeight="2" MaxConnections="-1" Name="shnlap93Node02_server1" ServerIOTimeout="60" WaitForContinue="false"> ??<Transport Hostname="shnlap93" Port="9081" Protocol="http"/> ??<Transport Hostname="shnlap93" Port="9444" Protocol="https"> ?? <Property Name="keyring" Value="D:\IBM\HTTPServer\Plugins\config\demoweb\plugin-key.kdb"/> ? ?<Property Name="stashfile" Value="D:\IBM\HTTPServer\Plugins\config\demoweb\plugin-key.sth"/> ? </Transport> </Server> <PrimaryServers> ?????????<Server Name="shnlap93Node01_server1"/> ?????????<Server Name="shnlap93Node02_server1"/> </PrimaryServers> </ServerCluster> |
第三步:
打開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" <VirtualHost *:80> ServerName shnlap93 ServerAlias shnlap93 ServerAdmin admin@shnlap93 DocumentRoot d:/www DirectoryIndex index.htm index.html index.jsp <Directory "D:/www/cbbs"> ??? Options None ??? AllowOverride None ??? Order allow,deny ???????? ?Allow from all </Directory> </VirtualHost> |
第四步:
保存我們修改的httpd.conf文件,保存我們修改的plugins文件,重啟我們的IBM HTTPServer。
如果一切無誤,那么我們先來書寫一個index.htm文件,并把它放在我們的d:\www\cbbs目錄下,其內容如下:
| <html> <head> <META HTTP-EQUIV="Refresh" CONTENT="1;URL=http://shnlap93/cbbs/index.jsp"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>loading</title> <body> Loading… </body> </html> |
然后我們打開一個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集成成功,結束今天的教程。
轉載于:https://my.oschina.net/baochanghong/blog/367878
總結
以上是生活随笔為你收集整理的通向架构师的道路(第十七天)IBM Websphere集群探秘-WASND的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Citrix桌面及应用虚拟化系列之三:活
- 下一篇: windows下flv视频网站进度条随意