似水無(wú)痕 ^o^ 迪迪派

          ^o^ 努力學(xué)習(xí) ^o^ 努力工作 ^o^ 努力養(yǎng)老婆 ^o^

             :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            5 隨筆 :: 0 文章 :: 35 評(píng)論 :: 0 Trackbacks

             說(shuō)起JBoss集群好像很高深的樣子,其實(shí)一點(diǎn)也不恐怖,建立一個(gè)集群很簡(jiǎn)單,難的是怎么針對(duì)具體的應(yīng)用優(yōu)化服務(wù)器和實(shí)現(xiàn)負(fù)載均衡(學(xué)習(xí)中^o^)。本文將帶領(lǐng)大家在JBoss的default目錄下建立一個(gè)簡(jiǎn)單的Web方面的JBoss集群。

                搭建環(huán)境

             兩臺(tái)電腦 //其實(shí)一臺(tái)也夠了,不過(guò)需要修改其中一個(gè)JBoss監(jiān)聽(tīng)的端口,要不然有沖突
             jboss-4.0.4.GA
             apache_2.0.59 //我使用的是apache_2.0.59-win32-x86-no_ssl,其實(shí)無(wú)所謂的
             mod_jk-apache-2.0.59.so //Apache請(qǐng)求分發(fā)的模塊,官網(wǎng)上可以找到

             首先安裝JBoss,我用的是zip格式的,直接解壓縮就可以了,在兩臺(tái)電腦里分別安裝。

             接下來(lái)在其中一臺(tái)電腦上(這里是192.168.0.2)安裝Apache(其實(shí)應(yīng)該再找一臺(tái)電腦來(lái)安裝的),很簡(jiǎn)單,略過(guò)^o^(偶是不是很懶^o^)

                配置JBoss

             
          假設(shè)兩臺(tái)電腦的IP分別為192.168.0.2和192.168.0.3。我們這里使用JBoss的default目錄。

             將如下文件從%JBoss_Home%\server\all\lib里面拷到%JBoss_Home%\server\default\lib目錄下:

             jbossha.jar(加載org.jboss.ha.framework.server.ClusterPartition)
             jgroups.jar(JBoss集群底層通信協(xié)議)
             jboss-cache.jar(加載org.jboss.cache.aop.TreeCacheAop)

             還要從%JBoss_Home%\server\all\deploy里把cluster-service.xml和tc5-cluster.sar拷貝到%JBoss_Home%\server\default\deploy里面。

             編輯192.168.0.2的%JBoss_Home%\server\default\deploy\jbossweb-tomcat55.sar\server.xml 
             修改下面代碼:
          <Engine name="jboss.web" defaultHost="localhost">

             修改為:
          <Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">

             其中 jvmRoute是用來(lái)讓apache識(shí)別的節(jié)點(diǎn)名稱,一個(gè)節(jié)點(diǎn)一個(gè)名稱,注意不要有重復(fù)的(可以結(jié)合IP設(shè)置)。

             同理編輯192.168.0.3的%JBoss_Home%\server\default\deploy\jbossweb-tomcat55.sar\server.xml
          注意把jvmRoute設(shè)置為node2,可以設(shè)置成別的只要和192.168.0.2的不重復(fù)就行,但是要和Apache的workers.properties(稍后介紹)下的配置一致。

             在%JBoss_Home%\server\default\deploy\jbossweb-tomcat55.sar\ROOT.war\目錄下添加一個(gè)新文件夾\test,并在里面添加如下3個(gè)jsp文件:

          index.jsp
           1<%@ page contentType="text/html;charset=ISO8859_1" %> 
           2
           3<html>
           4<head>
           5<title>Test</title>
           6<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
           7</head>
           8
           9<body onload="document.form.name.focus()">
          10<br><br><br>
          11<center>
          12The host is : <%=java.net.InetAddress.getLocalHost().toString()%><br>
          13Your session id is : <%=session.getId()%><br>
          14Your session detail is : <%=session.toString()%><br>
          15Your session context is : <%=session.getSessionContext()%><br><br>
          16Please input your name:<br>
          17<form action="test_action.jsp" method="POST" name="form">
          18    <input type="input" name="name"/>
          19    <input type="submit" value="提交">
          20</form>
          21</center>
          22</body>
          23</html>
          24
          25

          test_action.jsp
           1<%@ page contentType="text/html;charset=ISO8859_1" %> 
           2
           3<html>
           4<head>
           5<title>Test Action</title>
           6<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
           7</head>
           8<%
           9    String name = request.getParameter("name");
          10    session.setAttribute("name",name);
          11    String host = java.net.InetAddress.getLocalHost().toString();
          12
          %>
          13<body>
          14<br>
          15<br>
          16<center>
          17The host is : <%=host%><br><br>
          18Your session id is : <%=session.getId()%><br>
          19Your session detail is : <%=session.toString()%><br>
          20Your session context is : <%=session.getSessionContext()%><br><br>
          21Your name is : <%=name%><br>
          22This name is set into the session.<br>
          23Please click <href="session.jsp">here</a> to check the session valid or not.
          24</center>
          25</body>
          26</html>
          27
          28

          session.jsp
           1<%@ page contentType="text/html;charset=ISO8859_1" %> 
           2
           3<html>
           4<head>
           5<title>Test Action</title>
           6<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
           7</head>
           8<%
           9    String name = null;
          10    if(session.getAttribute("name")!=null)
          11        name = (String)session.getAttribute("name");
          12    String host = java.net.InetAddress.getLocalHost().toString();
          13
          %>
          14<body>
          15<br>
          16<br>
          17<center>
          18The host is : <%=host%><br>
          19Your session id is : <%=session.getId()%><br>
          20Your session detail is : <%=session.toString()%><br>
          21Your session context is : <%=session.getSessionContext()%><br><br>
          22<%
          23    if(name!=null){
          24        out.print("Your name is "+name+"<br>");
          25        out.print("The session is valid.");
          26    }
          27    else{
          28        out.print("The session is invalid!!!");
          29    }
          30
          %>
          31<href="index.jsp">Return!</a>
          32</center>
          33</body>
          34<%
          35    if(session.getAttribute("name")!=null)
          36        session.invalidate();
          37
          %>
          38</html>
          39
          40

             編輯%JBoss_Home%\server\default\deploy\jbossweb-tomcat55.sar\ROOT.war\WEB-INF\web.xml在<web-app>節(jié)點(diǎn)下增加如下代碼:
          1<distributable/>
             完成后web.xml代碼如下:
           1<?xml version="1.0" encoding="ISO-8859-1"?>
           2
           3<!DOCTYPE web-app
           4    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
           5    "http://java.sun.com/dtd/web-app_2_3.dtd">
           6
           7<web-app>
           8  <distributable/>
           9  <display-name>Welcome to JBoss</display-name>
          10  <description>
          11     Welcome to JBoss
          12  </description>
          13  <servlet>
          14    <servlet-name>Status Servlet</servlet-name>
          15    <servlet-class>org.jboss.web.tomcat.tc5.StatusServlet</servlet-class>
          16  </servlet>
          17  <servlet-mapping>
          18    <servlet-name>Status Servlet</servlet-name>
          19    <url-pattern>/status</url-pattern>
          20  </servlet-mapping>
          21</web-app>
          22
             看到第8行了嗎?^o^

             到這里JBoss就配置完成了^o^

                配置Apache

             JBoss的Web集群使用apache的mod_jk,瀏覽器請(qǐng)求apache服務(wù)器,apache服務(wù)器根據(jù)workers.properties中的配置進(jìn)行request分發(fā),apache服務(wù)器和Jboss中的Tomcat可以用ajp1.3進(jìn)行通信的,request通過(guò)ajp1.3協(xié)議的包裝被發(fā)送到Jboss,Jboss執(zhí)行后返回結(jié)果。

             將下載到的mod_jk-apache-2.0.59.so保存到%Apache%\modules\目錄下,并去掉版本號(hào)重命名為“mod_jk.so”,如果不改也可以在mod-jk.conf文件(稍后介紹)里修改配置。

             在%Apache%\conf\目錄下新建mod-jk.conf,并將如下代碼添加進(jìn)去:
           1# Load mod_jk module
           2# Specify the filename of the mod_jk lib
           3LoadModule jk_module modules/mod_jk.so
           4# Where to find workers.properties
           5JkWorkersFile conf/workers.properties
           6# Where to put jk logs
           7JkLogFile logs/mod_jk.log
           8# Set the jk log level [debug/error/info]
           9JkLogLevel debug
          10# Select the log format
          11JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
          12# JkOptions indicates to send SSK KEY SIZE
          13JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
          14# JkRequestLogFormat
          15JkRequestLogFormat "%w %V %T"
          16# Mount your applications
          17#JkMount /application/* loadbalancer
          18JkMount /* loadbalancer
          19# You can use external file for mount points.
          20# It will be checked for updates each 60 seconds.
          21# The format of the file is: /url=worker
          22# /examples/*=loadbalancer
          23JkMountFile conf/uriworkermap.properties
          24# Add shared memory.
          25# This directive is present with 1.2.10 and
          26# later versions of mod_jk, and is needed for
          27# for load balancing to work properly
          28JkShmFile logs/jk.shm
          29# Add jkstatus for managing runtime data
          30<Location /jkstatus/>
          31JkMount status
          32Order deny,allow
          33Deny from all
          34Allow from 127.0.0.1
          35</Location>
             上述代碼的第3行就是配置mod_jk.so模塊的路徑。

             編輯%Apache%\conf\httpd.conf在最后一行添加如下代碼:
          1Include conf/mod-jk.conf

             在 %Apache%\conf\目錄下添加workers.properties文件,該文件就是配置Apache所要將request轉(zhuǎn)發(fā)到的JBoss的路徑信息,代碼如下:
           1# 定義request所要轉(zhuǎn)發(fā)到的節(jié)點(diǎn)
           2worker.list=loadbalancer,status
           3# 定義節(jié)點(diǎn) Node1
           4worker.node1.port=8009
           5worker.node1.host=192.168.0.2
           6worker.node1.type=ajp13
           7worker.node1.lbfactor=1
           8worker.node1.cachesize=10
           9# 定義節(jié)點(diǎn) Node2
          10worker.node2.port=8009
          11worker.node2.host=192.168.0.3
          12worker.node2.type=ajp13
          13worker.node2.lbfactor=1
          14worker.node2.cachesize=10
          15# 負(fù)載配置
          16worker.loadbalancer.type=lb
          17worker.loadbalancer.balance_workers=node1,node2
          18worker.loadbalancer.sticky_session=0
          19worker.status.type=status

             上述代碼中:
             port是配置JBoss AJP所監(jiān)聽(tīng)的端口號(hào),可以在%JBoss_Home%\server\default\deploy\jbossweb-tomcat55.sar\server.xml 看到,如下
          1<!-- A AJP 1.3 Connector on port 8009 -->
          2<Connector port="8009" address="${jboss.bind.address}" 
          3         emptySessionPath="true" enableLookups="false"
          4         redirectPort="8443" protocol="AJP/1.3"/>
             host定義JBoss所在機(jī)器的IP地址
             lbfactor定義該節(jié)點(diǎn)的權(quán)重,數(shù)字越大分發(fā)到該節(jié)點(diǎn)的request越多
             cachesize是servlet線程池的大小(對(duì)session復(fù)制有影響)

             到這里所有的配置就全部完成啦^o^

             啟動(dòng)192.168.0.2上的apache和兩臺(tái)機(jī)器上的JBoss。
             打開瀏覽器,輸入網(wǎng)址訪問(wèn)apache:http://192.168.0.2/test/index.jsp,回車!看到了吧?

             頁(yè)面上有JBoss所在機(jī)器的IP地址,刷新頁(yè)面還能看到IP在變化,說(shuō)明apache將request分發(fā)到了不同的JBoss上,在輸入框中輸入隨便一個(gè)字符串并提交還能測(cè)試JBoss 的session復(fù)制情況。

          ^o^
          posted on 2007-05-17 21:33 ddpie 閱讀(6631) 評(píng)論(8)  編輯  收藏 所屬分類: JBoss

          評(píng)論

          # re: 在default目錄下快速配置JBoss集群(Web方面) 2007-12-20 16:15 Alan_xu
          很好的文章,uriworkermap.properties文件沒(méi)有創(chuàng)建,需要?jiǎng)?chuàng)建.不然會(huì)報(bào)錯(cuò).  回復(fù)  更多評(píng)論
            

          # re: 在default目錄下快速配置JBoss集群(Web方面)[未登錄](méi) 2008-02-20 15:58 aa
          e   回復(fù)  更多評(píng)論
            

          # re: 在default目錄下快速配置JBoss集群(Web方面)[未登錄](méi) 2008-02-20 15:59 x小邱
          恩 ,不錯(cuò)  回復(fù)  更多評(píng)論
            

          # re: 在default目錄下快速配置JBoss集群(Web方面)[未登錄](méi) 2009-02-18 10:34 joe
          謝謝你的文章  回復(fù)  更多評(píng)論
            

          # re: 在default目錄下快速配置JBoss集群(Web方面)[未登錄](méi) 2009-08-23 15:06
          很詳細(xì)的介紹,謝謝分享,我決定自己試一試
            回復(fù)  更多評(píng)論
            

          # re: 在default目錄下快速配置JBoss集群(Web方面) 2011-01-03 14:50 網(wǎng)絡(luò)時(shí)空
          樓主的文章介紹得太好了,我正需要這篇文章啊。。我的qq號(hào)是172145286,想加樓主為好友,交流一下,行否?謝謝了  回復(fù)  更多評(píng)論
            

          # re: 在default目錄下快速配置JBoss集群(Web方面) 2011-01-03 18:09 網(wǎng)絡(luò)時(shí)空
          我看在有一篇文章中提到還要進(jìn)行下面的處理,你的上面文章中,怎么沒(méi)有這一點(diǎn)呢?另外如下jboss-web.xml文件是在哪個(gè)具體目錄中呢?我是用的jboss4.2.GA?

          在jboss-web.xml中增加以下內(nèi)容:

          <?xml version="1.0"?>

          <jboss-web>

          <context-root>trms</context-root>

          <replication-config>

          <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>

          <replication-granularity>SESSION</replication-granularity>

          <replication-field-batch-mode>true</replication-field-batch-mode>

          </replication-config>

          </jboss-web>  回復(fù)  更多評(píng)論
            

          # re: 在default目錄下快速配置JBoss集群(Web方面)[未登錄](méi) 2012-12-04 09:15 至尊寶
          我按照你的操作還是沒(méi)有集群成功  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 龙门县| 潞城市| 登封市| 金溪县| 保靖县| 崇州市| 景洪市| 石渠县| 西林县| 南汇区| 澳门| 杭州市| 南川市| 西平县| 康保县| 岐山县| 永新县| 时尚| 漳州市| 新河县| 普定县| 临西县| 昌图县| 江西省| 丰都县| 博乐市| 平山县| 临沂市| 清新县| 团风县| 裕民县| 乌苏市| 甘孜| 名山县| 双柏县| 湖南省| 高陵县| 共和县| 新蔡县| 朝阳市| 德保县|