Linux下Weblogic集群配置初步
域,集群,管理服務(wù)器和被管服務(wù)器之間的關(guān)系
Weblogic域是一個(gè)服務(wù)器/集群的管理組,用戶(hù)可以通過(guò)某個(gè)中央位置來(lái)管理、監控整個(gè)服務(wù)器域,這個(gè)中心就是管理服務(wù)器,相對的,受控服務(wù)器或者叫被管服務(wù)器是指域中除了管理服務(wù)器以外的所有的服務(wù)器。
Weblogic集群是一個(gè)weblogic Server組,在一個(gè)集群中的服務(wù)器可以獲得集群范圍的命名服務(wù)、負載平衡以及容錯等功能。
所以,一個(gè)weblogic域可以同時(shí)管理多個(gè)集群以及多個(gè)服務(wù)器實(shí)例。
另外,還有一個(gè)節點(diǎn)管理器的概念,節點(diǎn)管理器是指在物理的機器上運行的一個(gè)守護進(jìn)程,通過(guò)它,管理服務(wù)器可以獲得諸如在控制臺中強制重啟遠程機器上的server等功能(沒(méi)有節點(diǎn)管理器的情況下也是可以強制關(guān)閉遠程服務(wù)器的,但是不能重啟)。
除此之外,據說(shuō)節點(diǎn)管理器還可以自動(dòng)檢查自己機器上的server實(shí)例(健康檢查),當發(fā)現某個(gè)實(shí)例出現故障的時(shí)候,可以自動(dòng)進(jìn)行重啟,這個(gè)沒(méi)試過(guò)。
注意事項
1. 本文的weblogic均配置在linux環(huán)境下
2. 集群中管理服務(wù)器和被管服務(wù)器之間有用到ip組播UDP,所以這些服務(wù)器之間必須是UDP可以到達的。
3. 好像動(dòng)態(tài)ip的機器不能用于集群當中
4. 最佳實(shí)踐說(shuō):請不要把管理服務(wù)器設置在集群當中
5. 本文所配置的集群只是實(shí)現了web層次上的負載平衡和容錯,也就是servlet和jsp,其他的j2ee組件如ejb,jdbc,jms等都可以集群化。
本例測試域的規劃
Ip/port server 注釋
10.21.18.40:7001 adminServer 管理服務(wù)器
10.21.18.40:7003 mServer1 被管服務(wù)器1
10.21.18.41:7001 mServer2 被管服務(wù)器2
10.21.18.40:7004 proxyServer 代理服務(wù)器
配置過(guò)程
建立管理服務(wù)器
啟動(dòng)linux下的配置向導
進(jìn)入bea目錄下的weblogic81/common/bin目錄輸入./config.sh,這里使用的終端登陸,所以沒(méi)有圖形環(huán)境,程序會(huì )以控制臺模式啟動(dòng)
第一步:選擇建立新的域:
啟動(dòng)配置向導后,系統提示如下:
<------- 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回車(chē),建立一個(gè)新的域。
第二步:選擇模版
系統提示選擇一個(gè)建立域的模版,資料上講配置向導的配置過(guò)程可以另存為模版,以便下次配置的時(shí)候使用,沒(méi)試過(guò)下次回去試試。
<-------- 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 Domain 8.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 Domain 8.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,使用基礎的模版
第三步:是否以快速模式進(jìn)行
第三步系統提示是否以快速模式進(jìn)行配置,這里選擇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
第四步:配置管理服務(wù)器
現在系統提示我們配置管理服務(wù)器,把管理服務(wù)器的名字改一下,改成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之后,根據系統提示輸入新的管理服務(wù)器的名稱(chēng)adminServer
第五步:配置被管服務(wù)器
根據下面系統的提示,配置被管服務(wù)器
<--------- 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
被管服務(wù)器我們設置兩個(gè):mServer1和mServer2,mServer1和管理服務(wù)器在一臺機器上,所以端口設置為7003避免和管理服務(wù)器沖突。
mServer2的監聽(tīng)地址一定要設置成ip,否則在啟動(dòng)被管服務(wù)器2的時(shí)候會(huì )得到這樣一個(gè)錯誤:using the same address as the admin server(這個(gè)錯挺傻的我覺(jué)得),如果是實(shí)際的集群配置的話(huà),這里建議都寫(xiě)成ip的形式。
配置完成的畫(huà)面如下:
| 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 | |
第七步:將服務(wù)器組織到集群中
根據系統的提示,將mServer1和mServer2放入集群testCluster中去,配置完成后如下:
Cluster
|_____testCluster [1]
|_____mServer1
|_____mServer2
第八步:配置機器、jdbc、jms、安全等
接下來(lái)幾步系統提示配置Machines,jdbc,jms,安全,這里都不用配置,全部回車(chē)就行了。
第九步:輸入管理服務(wù)器的用戶(hù)名和密碼
系統提示如下畫(huà)面,可以配置管理服務(wù)器的用戶(hù)名和密碼:
| Name | Value |
_|_________________________|_________________________________|
1| *User name: | weblogic |
2| *User password: | |
3| *Confirm user password: | |
4| Description: | The default administration user |
第十步:選擇啟動(dòng)模式,jdk和存放目錄
啟動(dòng)模式,jdk和域文件存放目錄的設置比較簡(jiǎn)單,根據大家的愛(ài)好設置就行了。
這里啟動(dòng)模式選擇生產(chǎn)開(kāi)發(fā)模式,jdk使用jRockit,存放目錄默認。
十一步:配置域名稱(chēng)
Edit Domain Information:
------------------------
| Name | Value |
_|________|__________|
1| *Name: | mydomain |
Enter value for "Name" OR [Exit][Previous][Next]> testDomain
設置域的名稱(chēng)為testDomain。
十二步:域建立結束
以上步驟都完成后,系統會(huì )自動(dòng)建立這個(gè)域,并會(huì )生成一些文件等等,完成的界面如下:
<----- BEA WebLogic Configuration Wizard --------->
Creating Domain...
0% 25% 50% 75% 100%
[------------|------------|------------|------------]
[***************************************************]
**** Domain Created Successfully! ****
啟動(dòng)管理服務(wù)器
進(jìn)入bea/user_projects/domains/testDomain/目錄
鍵入./startWebLogic.sh
建立被管服務(wù)器1
這里的被管服務(wù)器1也就是mServer1是和管理服務(wù)器在同一臺機器上的,這里我試過(guò)了,我們不需要再進(jìn)行什么配置,只需要啟動(dòng)它就行了,啟動(dòng)被管服務(wù)器1的命令如下:
進(jìn)入bea/user_projects/domains/testDomain/目錄
鍵入./startManagedWebLogic.sh mServer1 http://10.21.18.40:7001
這樣的寫(xiě)法保證了被管服務(wù)器在啟動(dòng)的時(shí)候向管理服務(wù)器報告,后面的這個(gè)地址就是管理服務(wù)器的地址了
當然,由于是在同一臺機器上,所以你完全可以這樣寫(xiě):./startManagedWebLogic.sh mServer1就可以了。
建立被管服務(wù)器2
被管服務(wù)器2和管理服務(wù)器在不同的機器上,所以你還需要在這臺機器上配置一個(gè)域,域的名字要和剛才建立的域名字一致(不一致會(huì )怎么樣我也沒(méi)試過(guò),誰(shuí)有時(shí)間試一下:>)
建立域的過(guò)程前三步和上面講的一樣
第四步,配置管理服務(wù)器的時(shí)候,請把這個(gè)域的管理服務(wù)器的名字設置為mServer2。
這里需要解釋一下,在每臺機器上建立域的時(shí)候都需要有一個(gè)管理服務(wù)器,以確保整個(gè)域的管理服務(wù)器當掉的時(shí)候,每臺機器自己都是還可以運行的,這里我們是把mServer2作為了41這臺機器的管理服務(wù)器,同時(shí)它也是adminServer的被管理服務(wù)器。
從第五步開(kāi)始,都不需要配置,直接回車(chē)就可以了。
配置完成后,用下面的命令啟動(dòng)mServer2:
./startManagedWebLogic.sh mServer2 http://10.21.18.40:7001
小結
到目前為止,一個(gè)包含一個(gè)管理服務(wù)器和2個(gè)被管服務(wù)器以及一個(gè)cluster的域就配置完成了,你可以簡(jiǎn)單試驗一下它提供的功能,打開(kāi)管理服務(wù)器的管理控制臺:
http://10.21.18.40:7001/console
首先,在這個(gè)管理控制臺上你可以監控和管理mServer1和mServer2,選擇mServer2
進(jìn)入Monitoring頁(yè)面General子頁(yè)面,如果顯示如下,就說(shuō)明配置是正確的了:
進(jìn)入Monitoring頁(yè)面的Performance子頁(yè)面,就可以看到mServer2的運行情況了。
將一個(gè)web應用上傳上去,將其部署在testCluster這個(gè)集群上
部署成功后,分別在mServer1和mServer2上訪(fǎng)問(wèn)剛才部署的web應用,應該都是可以訪(fǎng)問(wèn)的。
建立代理服務(wù)器
建立了集群以后,集群的負載平衡功能還需要代理(proxy)來(lái)實(shí)現。目前我所知道的Weblogic支持幾種類(lèi)型的代理:
HttpClusterServlet的代理,這個(gè)代理是weblogic公司編寫(xiě)的一個(gè)servlet,把它部署在一個(gè)weblogic服務(wù)實(shí)例上,就可以實(shí)現負載平衡和容錯了。
IIS 代理,用IIS作為前段的http的代理,需要往IIS中裝一個(gè)插件
Netscape/iPlanet代理,需要裝插件
Apache代理,用Apache作為http代理,需要裝插件。推薦使用
當然,實(shí)際應用中可能更加復雜,可能會(huì )這樣:
使用HttpClusterServlet作為代理
建立代理服務(wù)器實(shí)例
代理服務(wù)器proxyServer實(shí)例實(shí)際上和mServer1一樣,都是屬于testDomain域的一個(gè)被管服務(wù)器,回頭看建立管理服務(wù)器的第五步,在那個(gè)時(shí)候配置被管服務(wù)器的時(shí)候如果也把proxyServer加上的話(huà),現在直接啟動(dòng)就可以了。
當然也可以在管理服務(wù)器的管理控制臺上新建這個(gè)server。
在管理服務(wù)器的控制臺上,左邊的菜單中Server上單擊左鍵,選擇“新建一個(gè)Server”
然后,在出現的頁(yè)面中設置這個(gè)server的名字為proxyServer,監聽(tīng)端口為7004,如圖:
點(diǎn)擊應用,這個(gè)服務(wù)就配置完成了。
配置結束后,在后臺使用./startManagedWebLogic.sh proxyServer來(lái)啟動(dòng)代理服務(wù)器。
部署代理webapp
建立一個(gè)標準的web應用,這個(gè)應用里面什么也不用有,只需要配置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>
將這個(gè)應用打包成war文件,上傳到管理服務(wù)器上,然后部署在proxyServer上面。
部署成功后的頁(yè)面:
測試
打開(kāi)一個(gè)瀏覽器,在其中輸入:
http://10.21.18.40:7004/abc.jsp? __WebLogicBridgeConfig
jsp的名字隨便輸入可以了,如果看到如下頁(yè)面,就說(shuō)明配置成功了:
然后再做一個(gè)web應用,里面放兩個(gè)servlet,jsp啥的,部署在集群上面,比如說(shuō)部署成功了以后應用叫做testApp,其中有一個(gè)頁(yè)面叫index.jsp
鍵入如下的地址:
http://10.21.18.41:7001/testApp/index.jsp
http://10.21.18.40:7003/testApp/index.jsp
http://10.21.18.40:7004/testApp/index.jsp
應該都是可以運行的,請注意第一、二個(gè)地址是單獨訪(fǎng)問(wèn)集群中的機器的,而第三個(gè)地址是通過(guò)了代理的。
你可以做一個(gè)這樣的測試,在index.jsp里面寫(xiě)一句System.out.println(“ok!!!”);
然后再http://10.21.18.40:7004/testApp/index.jsp這個(gè)地址上多刷幾次,到mServer1和mServer2的控制臺去看的話(huà)應該兩邊都有輸出。
使用apache作為代理
安裝代理插件
在weblogic安裝目錄下面,找到bea/weblogic81/server/bin目錄,下面有兩個(gè)文件:
mod_wl_20.so
mod_wl128_20.so
分別是對應不同版本的apache,這里用來(lái)測試的是2.0版的apache,所以使用了第一個(gè)文件。
安裝過(guò)程如下:
把mod_wl_20.so這個(gè)文件copy到apache安裝目錄下的modules目錄中
在apache的httpd.conf文件中,加入這樣一句:
LoadModule weblogic_module modules/mod_wl_20.so
表示在啟動(dòng)apache的時(shí)候加載weblogic的插件
在apache的httpd.conf文件中,加入如下代碼:
<IfModule mod_weblogic.c>
WebLogicCluster 61.152.114.141:7003,61.152.114.142:7001
MatchExpression *.jsp
MatchExpression *.do
</IfModule>
第一行表示集群的各個(gè)成員地址
下面幾行可以寫(xiě)出要代理的url后綴。
注:如果weblogic這邊沒(méi)有集群,只有一臺機器的話(huà),也是可以配置apache插件的,這樣寫(xiě):
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
MatchExpression *.jsp
MatchExpression *.xyz
</IfModule>
測試
啟動(dòng)apache,訪(fǎng)問(wèn)http://apachehost:part/testApp/index.jsp應該可以看到正確的響應。其中apachehost和part視apache的配置而定。
使用iis作為代理
安裝插件
IIS的weblogic插件安裝非常的簡(jiǎn)單:
找到bea/weblogic81/server/bin目錄下的iisproxy.dll,拷貝到一個(gè)IIS能夠訪(fǎng)問(wèn)到的目錄,比如WINNT\system32\inetsrv\
建立兩個(gè)文本文件:iisproxy.ini和iisproxy.log
右鍵單擊某個(gè)站點(diǎn),打開(kāi)屬性頁(yè)面
點(diǎn)擊下面的配置,界面如下:
點(diǎn)擊添加,在其中可執行文件選擇iisproxy.dll,擴展名錄入*.jsp,如圖:
配置完畢后啟動(dòng)iis的這個(gè)站點(diǎn)
測試
訪(fǎng)問(wèn)http://iishost:part/testApp/index.jsp應該可以看到正確的響應。其中iishost和part視IIS的配置而定。
簡(jiǎn)單測試
想要進(jìn)行一些性能方面的測試,可以使用apache帶的apacheBench工具,這個(gè)工具在apache安裝目錄下的bin目錄下有(ab.sh),用法如下:ab –c 200 –n 60 url
含義是請求url這個(gè)地址200次,60次的并發(fā)。
以下是我做的一些簡(jiǎn)單測試的結果的一部分:
單獨訪(fǎng)問(wèn)集群中一臺機器的時(shí)候:
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代理訪(fǎng)問(wèn)集群的情況:
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代理訪(fǎng)問(wèn)集群的情況:
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代理訪(fǎng)問(wèn)集群的時(shí)候:
出錯,200次請求當中有190次失?。海?br>可能是因為iis在我的機器上的原因
另外,在測試的時(shí)候檢測mServer1和mServer2的吞吐量(Throughput),也是在使用apache的時(shí)候最高。大家也可以多做一些各個(gè)方面的測試,很有意思的。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。