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