Linux下Weblogic集羣配置初步
2011-02-15 14:12:42| 分類: weblogic-jboss|舉報|字號 訂閱
< style="word-break: break-all; line-height: normal; " >
Weblogic域是一個服務器/集羣的管理組,用戶可以通過某個中央位置來管理、監控整個服務器域,這個中心就是管理服務器,相對的,受控服務器或者叫被管服務器是指域中除了管理服務器以外的所有的服務器。
Weblogic集羣是一個weblogic Server組,在一個集羣中的服務器可以獲得集羣範圍的命名服務、負載平衡以及容錯等功能。
所以,一個weblogic域可以同時管理多個集羣以及多個服務器實例。
另外,還有一個節點管理器的概念,節點管理器是指在物理的機器上運行的一個守護進程,通過它,管理服務器可以獲得諸如在控制檯中強制重啓遠程機器上的server等功能(沒有節點管理器的情況下也是可以強制關閉遠程服務器的,但是不能重啓)。
除此之外,據說節點管理器還可以自動檢查自己機器上的server實例(健康檢查),當發現某個實例出現故障的時候,可以自動進行重啓,這個沒試過。
注意事項
1. 本文的weblogic均配置在linux環境下
2. 集羣中管理服務器和被管服務器之間有用到ip組播UDP,所以這些服務器之間必須是UDP可以到達的。
3. 好像動態ip的機器不能用於集羣當中
4. 最佳實踐說:請不要把管理服務器設置在集羣當中
本例測試域的規劃
Ip/port
|
server
|
註釋
|
10.21.18.40:7001
|
adminServer
|
管理服務器
|
10.21.18.40:7003
|
mServer1
|
被管服務器1
|
10.21.18.41:7001
|
mServer2
|
被管服務器2
|
10.21.18.40:7004
|
proxyServer
|
代理服務器
|
配置過程
建立管理服務器
啓動linux下的配置嚮導
進入bea目錄下的weblogic81/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]> 1
錄入1回車,建立一個新的域。
第二步:選擇模版
系統提示選擇一個建立域的模版,資料上講配置嚮導的配置過程可以另存爲模版,以便下次配置的時候使用,沒試過下次回去試試。
<-------- BEA WebLogic Configuration Wizard -------->
Select a Domain Template:
-------------------------
Please select a template from the list or select another directory of templates.
* [/usr/local/bea/weblogic81/common/templates/domains]
->1|Basic WebLogic Server Domain 8.1.4.0
| BEA Systems, Inc.
| Create a basic WebLogic Server domain without installing sample applications.
2|WebLogic Server Examples Domain8.1.4.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.
3|Avitek Medical Records Sample Domain8.1.4.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.
4|Select another directory location
Enter index number to select OR [Exit][Previous][Next]> 1
這裏我們選擇1,使用基礎的模版
第三步:是否以快速模式進行
第三步系統提示是否以快速模式進行配置,這裏選擇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 ---------->
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 |
_|_______|________________|_____________|_________________|_____________|
Enter name for a new Server OR [Exit][Previous][Next]> mServer1
被管服務器我們設置兩個:mServer1和mServer2,mServer1和管理服務器在一臺機器上,所以端口設置爲7003避免和管理服務器衝突。
mServer2的監聽地址一定要設置成ip,否則在啓動被管服務器2的時候會得到這樣一個錯誤:using
the same address as the admin server(這個錯挺傻的我覺得),如果是實際的集羣配置的話,這裏建議都寫成ip的形式。
配置完成的畫面如下:
| Name* | Listen address | Listen port | SSL listen port | SSL enabled |
_|_________|___________________|_____________|_________________|_____________|
1| mServer1| 10.21.18.41 | 7003 | N/A | false |
->2|mServer2|10.21.18.41 | 7001 | 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 | 7001 | |
第七步:將服務器組織到集羣中
根據系統的提示,將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]> testDomain
設置域的名稱爲testDomain。
十二步:域建立結束
以上步驟都完成後,系統會自動建立這個域,並會生成一些文件等等,完成的界面如下:
<----- BEA WebLogic Configuration Wizard --------->
Creating Domain...
0% 25% 50% 75% 100%
[------------|------------|------------|------------]
[***************************************************]
**** Domain Created Successfully! ****
啓動管理服務器
進入bea/user_projects/domains/testDomain/目錄
鍵入./startWebLogic.sh
建立被管服務器1
這裏的被管服務器1也就是mServer1是和管理服務器在同一臺機器上的,這裏我試過了,我們不需要再進行什麼配置,只需要啓動它就行了,啓動被管服務器1的命令如下:
進入bea/user_projects/domains/testDomain/目錄
鍵入./startManagedWebLogic.sh mServer1http://10.21.18.40:7001
這樣的寫法保證了被管服務器在啓動的時候向管理服務器報告,後面的這個地址就是管理服務器的地址了
當然,由於是在同一臺機器上,所以你完全可以這樣寫:./startManagedWebLogic.sh mServer1就可以了。
建立被管服務器2
被管服務器2和管理服務器在不同的機器上,所以你還需要在這臺機器上配置一個域,域的名字要和剛纔建立的域名字一致(不一致會怎麼樣我也沒試過,誰有時間試一下:>)
建立域的過程前三步和上面講的一樣
第四步,配置管理服務器的時候,請把這個域的管理服務器的名字設置爲mServer2。
這裏需要解釋一下,在每臺機器上建立域的時候都需要有一個管理服務器,以確保整個域的管理服務器當掉的時候,每臺機器自己都是還可以運行的,這裏我們是把mServer2作爲了41這臺機器的管理服務器,同時它也是adminServer的被管理服務器。
從第五步開始,都不需要配置,直接回車就可以了。
配置完成後,用下面的命令啓動mServer2:
./startManagedWebLogic.sh mServer2http://10.21.18.40:7001
小結
到目前爲止,一個包含一個管理服務器和2個被管服務器以及一個cluster的域就配置完成了,你可以簡單試驗一下它提供的功能,打開管理服務器的管理控制檯:
首先,在這個管理控制檯上你可以監控和管理mServer1和mServer2,選擇mServer2
進入Monitoring頁面General子頁面,如果顯示如下,就說明配置是正確的了:
進入Monitoring頁面的Performance子頁面,就可以看到mServer2的運行情況了。
將一個web應用上傳上去,將其部署在testCluster這個集羣上
部署成功後,分別在mServer1和mServer2上訪問剛纔部署的web應用,應該都是可以訪問的。
建立代理服務器
建立了集羣以後,集羣的負載平衡功能還需要代理(proxy)來實現。目前我所知道的Weblogic支持幾種類型的代理:
? HttpClusterServlet的代理,這個代理是weblogic公司編寫的一個servlet,把它部署在一個weblogic服務實例上,就可以實現負載平衡和容錯了。
? IIS 代理,用IIS作爲前段的http的代理,需要往IIS中裝一個插件
? Netscape/iPlanet代理,需要裝插件
當然,實際應用中可能更加複雜,可能會這樣:
Client
|
硬件負載平衡器
|
Web服務器/WLS插件
|
Weblogic Server
|
Web服務器/WLS插件
|
Web服務器/WLS插件
|
Weblogic Server
|
Weblogic Server
|
集羣
|
防火牆
|
防火牆
|
使用HttpClusterServlet作爲代理
建立代理服務器實例
代理服務器proxyServer實例實際上和mServer1一樣,都是屬於testDomain域的一個被管服務器,回頭看建立管理服務器的第五步,在那個時候配置被管服務器的時候如果也把proxyServer加上的話,現在直接啓動就可以了。
當然也可以在管理服務器的管理控制檯上新建這個server。
在管理服務器的控制檯上,左邊的菜單中Server上單擊左鍵,選擇“新建一個Server”
然後,在出現的頁面中設置這個server的名字爲proxyServer,監聽端口爲7004,如圖:
點擊應用,這個服務就配置完成了。
配置結束後,在後臺使用./startManagedWebLogic.sh proxyServer來啓動代理服務器。
部署代理webapp
建立一個標準的web應用,這個應用裏面什麼也不用有,只需要配置web.xml和weblogic.xml就可以了。web.xml和weblogic.xml代碼如下:
web.xml
<!-- DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 1.2//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"
-->
<web-app>
<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>
weblogic.servlet.internal.HttpClusterServlet
</servlet-class>
<init-param>
<param-name>defaultServers</param-name>
<param-value>
10.21.18.40:7003|10.21.18.41:7001
</param-value>
</init-param>
<init-param>
<param-name>DebugConfigInfo</param-name>
<param-value>ON</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
|
weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 6.1//EN" "http://www.bea.com/servers/wls610/dtd/weblogic-web-jar.dtd">
<weblogic-web-app>
<context-root>/</context-root>
</weblogic-web-app>
|
將這個應用打包成war文件,上傳到管理服務器上,然後部署在proxyServer上面。
部署成功後的頁面:
測試
打開一個瀏覽器,在其中輸入:
http://10.21.18.40:7004/abc.jsp? __WebLogicBridgeConfig
jsp的名字隨便輸入可以了,如果看到如下頁面,就說明配置成功了:
然後再做一個web應用,裏面放兩個servlet,jsp啥的,部署在集羣上面,比如說部署成功了以後應用叫做testApp,其中有一個頁面叫index.jsp
鍵入如下的地址:
應該都是可以運行的,請注意第一、二個地址是單獨訪問集羣中的機器的,而第三個地址是通過了代理的。
你可以做一個這樣的測試,在index.jsp裏面寫一句System.out.println(“ok!!!”);
然後再http://10.21.18.40:7004/testApp/index.jsp這個地址上多刷幾次,到mServer1和mServer2的控制檯去看的話應該兩邊都有輸出。
使用apache作爲代理
安裝代理插件
在weblogic安裝目錄下面,找到bea/weblogic81/server/bin目錄,下面有兩個文件:
mod_wl_20.so
mod_wl128_20.so
分別是對應不同版本的apache,這裏用來測試的是2.0版的apache,所以使用了第一個文件。
安裝過程如下:
? 把mod_wl_20.so這個文件copy到apache安裝目錄下的modules目錄中
? 在apache的httpd.conf文件中,加入這樣一句:
LoadModule weblogic_module modules/mod_wl_20.so
表示在啓動apache的時候加載weblogic的插件
? 在apache的httpd.conf文件中,加入如下代碼:
<IfModule mod_weblogic.c>
WebLogicCluster 61.152.114.141:7003,61.152.114.142:7001
MatchExpression *.jsp
MatchExpression *.do
</IfModule>
第一行表示集羣的各個成員地址
下面幾行可以寫出要代理的url後綴。
注:如果weblogic這邊沒有集羣,只有一臺機器的話,也是可以配置apache插件的,這樣寫:
測試
啓動apache,訪問http://apachehost:part/testApp/index.jsp應該可以看到正確的響應。其中apachehost和part視apache的配置而定。
使用iis作爲代理
安裝插件
IIS的weblogic插件安裝非常的簡單:
? 找到bea/weblogic81/server/bin目錄下的iisproxy.dll,拷貝到一個IIS能夠訪問到的目錄,比如WINNT\system32\inetsrv\
? 建立兩個文本文件:iisproxy.ini和iisproxy.log
? 右鍵單擊某個站點,打開屬性頁面
? 點擊下面的配置,界面如下:
? 點擊添加,在其中可執行文件選擇iisproxy.dll,擴展名錄入*.jsp,如圖:
? 配置完畢後啓動iis的這個站點
測試
訪問http://iishost:part/testApp/index.jsp應該可以看到正確的響應。其中iishost和part視IIS的配置而定。
簡單測試
想要進行一些性能方面的測試,可以使用apache帶的apacheBench工具,這個工具在apache安裝目錄下的bin目錄下有(ab.sh),用法如下:
ab –c 200 –n 60 url
含義是請求url這個地址200次,60次的併發。
以下是我做的一些簡單測試的結果的一部分:
單獨訪問集羣中一臺機器的時候:
|
Percentage of the requests served within a certain time (ms)
50% 13734
66% 17046
75% 33234
80% 34000
90% 34343
95% 34437
98% 34515
99% 34515
100% 34546 (longest request)
|
使用HttpClusterServlet代理訪問集羣的情況:
|
Percentage of the requests served within a certain time (ms)
50% 18234
66% 19187
75% 19718
80% 19921
90% 21296
95% 22203
98% 22593
99% 22640
100% 22703 (longest request)
|
使用apache代理訪問集羣的情況:
|
Percentage of the requests served within a certain time (ms)
50% 2000
66% 2578
75% 3421
80% 3421
90% 3625
95% 3640
98% 3640
99% 3640
100% 3656 (longest request)
|
使用iis代理訪問集羣的時候:
|
出錯,200次請求當中有190次失敗:(
可能是因爲iis在我的機器上的原因
|
另外,在測試的時候檢測mServer1和mServer2的吞吐量(Throughput),也是在使用apache的時候最高。大家也可以多做一些各個方面的測試,很有意思的。