本文講述如何在WebLogic Server 8.1上配置叢集,以及通過Proxy Server來訪問叢集,可以參照這個文檔進行linux下weblogic群集的配置,群集啟動和節點啟動,發布應用,同步應用,session的複製共用,測試應用的自動分發功能,自動接管功能。
預備知識
什麼是Domain和Server
Domain
Domain是WebLogic Server執行個體的基本嵌入式管理單元。所謂Domain就是,由配置為Administrator Server的WebLogic Server執行個體管理的邏輯單元,這個單元是有所有相關資源的集合。
Server
Server是一個相對獨立的,為實現某些特定功能而結合在一起的單元。
Domain and Server的關係
一個Domain 可以包含一個或多個WebLogic Server執行個體,甚至是Server叢集。一個Domain中有一個且只能有一個Server 擔任管理Server的功能,其它的Server具體實現一個特定的邏輯功能。
本文環境
? 平台:Linux as 4
? 軟體:Bea WebLogic Server 8.1 SP5
配置WebLogic Server叢集
WebLogic叢集的體繫結構
單層混合型的叢集架構(Cluster)
這種架構將所有的Web應用以及相關的服務應用全部置於叢集中的單一WLS執行個體中,這種架構的優勢在於:
? 易於管理
? 靈活的Server Load Balancer機制
? 更強的安全控制 多層結構的叢集架構(Cluster)
這種架構使用兩個WLS叢集,一個放置表靜態內容和叢集Servlet,另一個放置叢集EJB。一般應用於下面這些情況:
? 在Server Load Balancer機制需要調用叢集EJB中的方法時;
? 在提供內容與提供對象的服務之間需要更大的機動性時;
? 在需要更高的系統穩定性時; 配置叢集應用的必要條件
? 叢集中的所有Server必須位於同一網段,並且必須是IP廣播(UDP)可到達的
? 叢集中的所有Server必須使用相同的版本,包括Service Pack
? 叢集中的Server必須使用永久的靜態IP地址。動態IP地址分配不能用於叢集環境。如果伺服器位於防火牆後面,而客戶機位於防火牆外面,那麼伺服器必須有公用的靜態IP地址,只有這樣,用戶端才能訪問伺服器
? 要以CLUSTER方式運行,必須有包含CLUSTER許可的LICENSE才行(從Bea網站上下載的試用版本就可以進行Cluster配置) 配置前的準備工作
在配置叢集應用前要對叢集的配置資訊有一個良好的設計,下面就是我們這次配置的叢集資訊:
在同一網段內的不同機器上配置叢集,以下是以2台機器做群集,
機器類型 作業系統 硬體設定 角色 備忘
普通 PC Linux as 4 IP:10.3.15.85 PORT:7001 Administrator Server Pc1
普通 PC Linux as 4 IP: 10.3.15.85 PORT:80 Proxy Server Pc1
普通 PC Linux as 4 IP: 10.3.15.85 PORT:7080 Managed Server Pc1
普通 PC Linux as 4 IP: 10.3.15.84 PORT:7080 Managed Server Pc2 使用Domain Configuration Wizard進行配置
建立新的Domain
第一步:
進入到weblogic安裝目下的 /usr/local/wblogic/webloic81/common/bin下面執行 ./config.sh 啟動網域設定程式 <----------------------------------------------- BEA WebLogic Configuration Wizard -----------------------------------------------> Create or Extend a Configuration:
--------------------------------- Choose between creating and extending a configuration. Based on your selection, the Configuration Wizard guides you through the
steps to generate a new or extend an existing configuration. ->1|Create a new WebLogic configuration
| Start here to create a WebLogic configuration in your projects directory. 2|Extend an existing WebLogic configuration
| Start here to extend an existing WebLogic configuration. Use this option to add applications and services, including
|Database access (JDBC) and Messaging (JMS). This option also enables you to extend functionality by enabling WebLogic
|Workshop. Enter index number to select OR [Exit][Next]> [root@localhost bin]# 1 第二步:選擇模版
系統提示選擇一個建立域的模版,資料上講設定精靈的配置過程可以另存新檔模版,以便下次配置的時候使用,沒試過下次回去試試。
<----------------------------------------------- BEA WebLogic Configuration Wizard -----------------------------------------------> Select a Domain Template:
------------------------- Please select a template from the list or select another directory of templates. * [/usr/local/weblogic/weblogic81/common/templates/domains] 1|WebLogic Server Examples Domain 8.1.5.0
| BEA Systems, Inc.
| Create the WebLogic Server Examples domain in a directory outside of the installed kit. The Examples domain contains a
|collection of examples to show best practices for coding individual J2EE APIs. 2|Basic WebLogic Workshop Domain 8.1.5.0
| BEA Systems, Inc.
| Create a basic WebLogic Workshop domain, without installing sample applications. Domains created from this template will
|support the WebLogic Server and WebLogic Workshop runtime functionality, including support for J2EE applications, Web
|applications, Web Services and custom controls. Use domains created from this template for development of WebLogic Workshop
|applications. ->3|Basic WebLogic Server Domain 8.1.5.0
| BEA Systems, Inc.
| Create a basic WebLogic Server domain without installing sample applications. 4|Avitek Medical Records Sample Domain 8.1.5.0
| BEA Systems, Inc.
| Create the Avitek Medical Records domain in a directory outside of the installed kit. The Avitek Medical Records is a
|WebLogic Server sample application suite that concisely demonstrates all aspects of the J2EE platform. 5|Select another directory location Enter index number to select OR [Exit][Previous][Next]> 3
這裡我們選擇3,使用基礎的模版 第三步:是否以快速模式進行 第三步系統提示是否以快速模式進行配置,這裡選擇2。 <----------------------------------------------- BEA WebLogic Configuration Wizard ----------------------------------------------->
Choose Configuration Option:
----------------------------
*Do you want to run the wizard in express mode?
->1|Yes
2|No
Enter index number to select OR [Exit][Previous][Next]> 2 第四步:組態管理伺服器 現在系統提示我們組態管理伺服器,把管理伺服器的名字改一下,改成adminServer就可以了。 <------- BEA WebLogic Configuration Wizard -------->
Configure the Administration Server:
------------------------------------
Enter adminstration server configurations. Each WebLogic Server domain must have one Administration Server. The
Administration Server hosts the Administration Console which is used to perform administrative tasks.
| Name | Value |
_|__________________|_____________________|
1| *Name: | myserver |
2| Listen address: | All Local Addresses |
3| Listen port: | 7001 |
4| SSL listen port: | N/A |
5| SSL enabled: | false |
Select Option:
1 - Modify "Name"
2 - Modify "Listen address"
3 - Modify "Listen port"
4 - Modify "SSL enabled"
Enter option number to select OR [Exit][Previous][Next]> 1
輸入1之後,根據系統提示輸入新的管理伺服器的名稱adminServer 第五步:配置被管伺服器 根據下面系統的提示,配置被管伺服器 <----------------------------------------------- BEA WebLogic Configuration Wizard ----------------------------------------------->
Choose Configuration Option:
----------------------------
*Do you want to configure Managed Servers, Clusters and Machines?
->1|Yes
2|No
Enter index number to select OR [Exit][Previous][Next]> 1 根據提示配置如下資訊:
<----------------------------------------------- BEA WebLogic Configuration Wizard ----------------------------------------------->
Configure Managed Servers:
--------------------------
Add or delete configuration information for managed servers. A typical production environment has one or more managed servers. Each managed server is an instance of WebLogic Server used to host enterprise applications. | Name* | Listen address | Listen port | SSL listen port | SSL enabled |
_|__________|________________|_____________|_________________|_____________|
1| mServer1 | 10.3.15.85 | 7080 | N/A | false |
->2| mServer2 | 10.3.15.84 | 7080 | N/A | false | 然後執行下一步 第六步:配置叢集 <----BEA WebLogic Configuration Wizard ------>
Configure Clusters:
-------------------
A cluster contains multiple WebLogic Server instances (servers) that run simultaneously and work together to provide
increased scalability and reliability. A cluster appears to be a single WebLogic Server instance to clients.
| Name* | Multicast address | Multicast port | Cluster address |
_|_______|___________________|________________|_________________|
Enter name for a new Cluster OR [Exit][Previous][Next]> testCluster
輸入集群的名字testCluster,其他的預設就行了,配置完成後如下:
| Name* | Multicast address | Multicast port | Cluster address |
_|_____________|___________________|________________|_________________|
->1| testCluster | 237.0.0.1 | 7777 | | 第七步:將伺服器組織到叢集中 根據系統的提示,將mServer1和mServer2放入叢集testCluster中去,配置完成後如下:
Cluster
|_____testCluster [1]
|_____mServer1
|_____mServer2 第八步:配置機器、jdbc、jms、安全等 接下來幾步系統提示配置Machines,jdbc,jms,安全,這裡都不用配置,全部斷行符號就行了。 第九步:輸入管理伺服器的使用者名稱和密碼 系統提示如下畫面,可以組態管理伺服器的使用者名稱和密碼:
| Name | Value |
_|_________________________|_________________________________|
1| *User name: | weblogic |
2| *User password: | ******** |
3| *Confirm user password: | ******** |
4| Description: | The default administration user | 第十步:選擇啟動模式,jdk和存放目錄 啟動模式,jdk和域檔案存放目錄的設定比較簡單,根據大家的愛好設定就行了。
這裡啟動模式選擇生產開發模式,jdk使用jRockit,存放目錄預設。 十一步:佈建網域名稱 Edit Domain Information:
------------------------
| Name | Value |
_|________|__________|
1| *Name: | mydomain |
Enter value for "Name" OR [Exit][Previous][Next]> testClusterDomain
設定域的名稱為testClusterDomain。 十二步:域建立結束 以上步驟都完成後,系統會自動建立這個域,並會產生一些檔案等等,完成的介面如下:
<----- BEA WebLogic Configuration Wizard --------->
Creating Domain...
0% 25% 50% 75% 100%
[------------|------------|------------|------------]
[***************************************************]
**** Domain Created Successfully! **** 十三步:在另一台機器上配置節點伺服器managed server,配置過程和上面的一樣,一定要保證參數和上面所設定的參數是一樣的,包括 網域名稱,mServer2的ip 、port ,還有名字一定要和配置第一台機器時保持一致。否則會導致節點伺服器不能啟動 十四步: 啟動管理伺服器 進入/usr/local/weblogic/weblogic81/user_projects/domains/testClusterDomain/目錄
鍵入./startWebLogic.sh
啟動managed server用如下命令:
在10.3.15.85上啟動mServer1
./startManagedServer mServer1 10.3.15.85:7001
在10.3.15.84上啟動mServer2
./startManagedServer mServer2 10.3.15.85:7001 十五步: 添加Proxy 伺服器proxyServer 啟動Administrator Server,然後進入Console控制台(http://10.3.15.85:7001/console/),在此我們將代理Server與Administrator Server置於同一台主機之上。
進入console控制台後,在“Server”結點上單擊右鍵,在快顯功能表上選擇“Configure a New Server”,然後配置代理Server的相關資訊。(在這裡只要指定名稱,監聽地址,監聽連接埠就可以了)
Proxy 伺服器的名字是 proxyServer 監聽地址: 10.3.15.85 監聽連接埠 80 通過HttpClusterServlet實現請求的自動分發處理
HttpClusterServlet通過一個WebLogic伺服器代理對WebLogic叢集中的其他伺服器成員的HTTP請求, 同時HttpClusterServlet還為代理的HTTP請求提供Server Load Balancer與容錯處理。
實際上實現是很簡單的,遵循下面幾個步驟就可以輕鬆實現請求的自動分發功能:
? 建立一個代理Server(在此我們稱這proxyServer)
? 組建組態檔案web.xml
? 組建組態檔案weblogic.xml
? 打包產生Web應用
? 在proxyServer上部署應用,並將該應用作為預設的Web應用
建立代理Server
啟動Administrator Server,然後進入Console控制台(http://10.3.15.85:7001/console/),在此我們將代理Server與Administrator Server置於同一台主機之上。
進入console控制台後,在“Server”結點上單擊右鍵,在快顯功能表上選擇“Configure a New Server”,然後配置代理Server的相關資訊。(在這裡只要指定名稱,監聽地址,監聽連接埠就可以了) HttpClusterServlet的部署,主要是Servlet的聲明和映射,並設定初始化參數,可以建立一個Web App,然後直接在web.xml中添加或在管理主控台上設定HttpClusterServlet的部署資訊。最後將它發布給用來做代理的Server,並將這個Web App設定為這個Server的預設WEB應用。
web.xml檔案樣本 weblogic.xml檔案樣本 打包WEB應用
可以使用jar命令將proxy應用打包成war檔案,我們建一個臨時目錄temp,然後在其中建立如下目錄結構: 使用如下的命令操作,就可完成web應用的打包操作:
JAR –參數 WEB應用程式名稱 要打包的目錄 當然我們也可以直接部署該目錄,而無需打包,這在項目的開發階段是很有協助的,便於修改。
部署proxy應用
啟動Administrator Server,然後進入Console控制台(http://10.3.15.85:7001/console/),在此我們將代理Server與Administrator Server置於同一台主機之上。
進入console控制台後,在“Web Application Modules”結點上單擊右鍵,在快顯功能表上選擇“Deploy a new Web Application Module”,然後選擇要部署的檔案或目錄,單擊“Target Module”按鈕,然後選擇“proxyServer”,單擊“Continue”按鈕,到了下一步,單擊“Deploy”按鈕,完成部署工作。
部署完成後,查看WEB應用的狀態是“FAILS”,造成這種情況的原因是“proxyServer”還沒有啟動,我們可以通過下面的命令啟動“proxyServer”:
./startManagedServer proxyServer 然後點擊“ReDeploy”,重新部署應用,狀態值將變為“Success”。
將WEB應用配置成預設的WEB應用,weblogic8.1與weblogic6.1有很大的不同,8.1不再支援從console控制台完成配置的工作,而是在weblogic.xml中通過下面的結點,完成配置的工作。
<context-root> / </context-root> 測試proxy應用
修改web.xml檔案,加入下面的結點,然後重啟服務。
<init-param>
<param-name>DebugConfigInfo</param-name>
<param-value>ON</param-value>
</init-param>
開啟瀏覽器,訪問下面的地址,會得到所示的結果,這就說明你的配置是成功的。
http://10.3.15.85:8080/placeholder.jsp?__WebLogicBridgeConfig
myserver為服務地址(在這裡是10.3.15.85)
port為proxy服務的連接埠(在這裡是8080)
placeholder.jsp(這是一個不存在的JSP檔案,您也可以隨意指定檔案名稱)
__WebLogicBridgeConfig(這個可千萬不能寫錯呦!) 測試叢集的分發功能
編寫測試WEB應用並部署
我們來編寫一個簡單的WEB應用,它會在控制台和瀏覽器上同時列印出“OK”字樣,然後將這個WEB應用部署到叢集中所有Managed Server上面。(代碼見附件)
在這裡我們將通過Apache中所帶的ab包來進行並發訪問的類比測試,使用如下的命令就可以完成壓力測試。
ab –n 100 –c 10 http://10.3.15.85:8080/index.jsp
ab是測試程式的名稱
參數n代表請求的總數量
參數c代表並發的請求數
url為要測試壓力的頁面
註:使用這個命令時,一定要在系統路徑中能夠找到該程式,否則不能執行。
壓力測試完成後,我們從Managed Server的控制台上可以看到,mServer1,mServer2都列印出了“OK”字樣,這說明,在並發請求的情況下,叢集能夠將請求進行分發,以達到Server Load Balancer的目的。
測試應用的目錄結構如下,部署與proxy應用的部署一樣,要注意的是要將它部署在Managed Server上面。 可以通過關閉其中的任意一個節點伺服器,然後繼續發送請求,就會發現雖然有一個節點關閉,但還是很快的得到響應。可以反覆的關閉其中的任意一台節點伺服器,會發現是同樣的效果。這就是一個節點失敗後其他節點自動接管服務要求。 同一網段內不同機器部署叢集 在另外一台機器上配置“Managed Server”時,要指定“Admin Server”的名稱,監聽地址,監聽連接埠。 另外要注意的是,“Managed Server”上的配置資訊要與“Admin Server”中Cluster所指定的配置資訊一致。
啟動“Managed Server”的命令與上面的一樣,如下所示:
./startManagedServer mServer2 10.3.15.85:7001 叢集配置中要注意的問題
? Admin Server只用於叢集的管理,而不能參與叢集事務。
? Web應用應該部署到叢集上,檔案的同步是由WebLogic來完成的。
附錄
Weblogic8.1文檔 http://e-docs.bea.com/wls/docs81/
dev2dev線上 http://dev2dev.bea.com.cn