<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    似水無痕 ^o^ 迪迪派

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

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

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

          搭建環(huán)境

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

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

       接下來在其中一臺(tái)電腦上(這里是192.168.0.2)安裝Apache(其實(shí)應(yīng)該再找一臺(tái)電腦來安裝的),很簡單,略過^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是用來讓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通過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)聽的端口號(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)址訪問apache:http://192.168.0.2/test/index.jsp,回車!看到了吧?

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

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

    評(píng)論

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

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

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

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

    # re: 在default目錄下快速配置JBoss集群(Web方面)[未登錄] 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)行下面的處理,你的上面文章中,怎么沒有這一點(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方面)[未登錄] 2012-12-04 09:15 至尊寶
    我按照你的操作還是沒有集群成功  回復(fù)  更多評(píng)論
      


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费观看男人吊女人视频| 一级黄色免费网站| 香蕉视频免费在线播放| 一级毛片免费在线| a在线免费观看视频| 5g影院5g天天爽永久免费影院| 国产成人免费午夜在线观看| 最近中文字幕免费mv视频8| 国产一级高清视频免费看| 久久综合亚洲色HEZYO国产| 亚洲嫩模在线观看| avtt天堂网手机版亚洲| 免费播放美女一级毛片| 三级毛片在线免费观看| 亚洲人成免费网站| 在线观看永久免费视频网站| 亚洲一区爱区精品无码| 亚洲影院在线观看| 国产精品亚洲专区无码唯爱网| 久久久久免费视频| 久久久久久久免费视频| 亚洲成av人片在线观看天堂无码| 久久精品夜色国产亚洲av| 一本色道久久综合亚洲精品蜜桃冫| 免费在线观看自拍性爱视频| 免费人成在线观看网站品爱网| 成年女性特黄午夜视频免费看| 亚洲一区二区视频在线观看| 亚洲国产精品成人综合色在线婷婷 | 亚洲国产精品va在线播放| 亚洲制服在线观看| 四虎国产精品成人免费久久| 精品无码无人网站免费视频 | 成全高清在线观看免费| 欧美a级成人网站免费| 亚洲一区二区三区免费| 亚洲色精品VR一区区三区| 插鸡网站在线播放免费观看| 亚洲免费网站观看视频| 亚洲欧洲成人精品香蕉网| 男人天堂2018亚洲男人天堂 |