`

Window下用Apache2 + jboss集群

阅读更多
空闲时间配了一个jboss集群用来负载均衡,过程中走了不少弯路,查了好多资料,好不容易,所以就写了个文档,希望GGMM节省一些时间,里面有不足之处请谅解

环境说明
1.服务器有3台,一台安装apache,两台安装jboss
2.软件准备:
  apache http server 2.2.4,mod jk 1.2.27,jboss,jdk1.5
  下载mod jk 1.2.27:
  http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.27/
  下载:jems
  http://jaist.dl.sourceforge.net/sourceforge/jboss/jems-installer-1.2.0.GA.jar
3.ip配置,一台安装apache的ip为192.168.1.6,两台安装jboss的服务器ip分别为192.168.1.3/155


安装过程
1.在两台要安装jboss的服务器上先安装jdk,配置环境变量,安装jboss;
安装jboss步骤:
  执行java –jar jems-installer-1.2.0.GA.jar,出现Jboss安装图形界面。
  选择“中文”。
  下一步。
  同意协议。
  安装路径设置为/usr/local/jboss,下一步。
  选择”all”,下一步。
  选择”advance”,把Name由default改为all.其余直接按下一步。
  输入Admin密码,下一步。
  等待安装结束,完成。


配置Jboss:
  这里的默认WEB服务端口是8888,找到jboss/server/all/deploy/jbossweb-tomcat55.sar/server.xml,
  jboss默认端口为:8080,修改为8888,同时修改下面代码:
   <Engine name=”jboss.web” defaultHost=”localhost”>
  修改为:
  <Engine name=”jboss.web” defaultHost=”localhost” jvmRoute=”node1″>//注意jvmRoute,看jboss文档 里面用的是jvmRoute还是jmvRoute!其中 jvmRoute是用来让apache识别的节点名称,一个节点一个名称,  注意不要有重复的。
  改变cluster广播地址。$JBOSS_HOME/server/all/deploy/tc5-cluster.sar/META-INF/jboss-service.xml.
  注释掉" <config><UDP mcast_addr="${jboss.partition.udpGroup:230.1.2.7}" .../></config>属性。
  去掉<config><TCP bind_addr=  .... /></config>的注释并修改如下内容:
  <TCP bind_addr="192.168.1.3" 192.168.1.3为本机IP,<TCPPING initial_hosts="192.168.1.3[7810],
  192.168.1.155[7810]" initial_hosts 里面加入集群里面的本服务和其它服务节点,把所有的
  down_thread="false" up_thread="false" 修改为:down_thread="true" up_thread="true"
  同理编辑192.168.1.155的%JBoss_Home%\server\default\deploy\jbossweb-tomcat55.sar\server.xml
  注意把jvmRoute设置为node2,可以设置成别的只要和192.168.1.3的不重复就行,但是要和Apache的  workers.properties下的配置一致。找到jboss/server/all/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml 把UseJK改为true,在集群各机器的jboss/bin,分别执行run –c all, 测试每个
  jboss的启动是否正常
 
安装apache
  安装后将apache2/conf/下的httpd.conf 找到ServerName并修改为:ServerName 127.0.0.1:80
apache mod_jk配置
  在apache2/conf/httpd.conf的末尾增加:Include conf/mod_jk.conf,新建mod_jk.conf,输入以下内容:
   # Load mod_jk module
   # Specify the filename of the mod_jk lib
   LoadModule jk_module modules/mod_jk.so
   # Where to find workers.properties
   JkWorkersFile conf/workers.properties
   # Where to put jk logs
   JkLogFile logs/mod_jk.log
   # Set the jk log level [debug/error/info]
   JkLogLevel info
   # Select the log format
   JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
   # JkOptions indicates to send SSK KEY SIZE
   JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
   # JkRequestLogFormat
   JkRequestLogFormat "%w %V %T"
   # Mount your applications
   JkMount /application/* loadbalancer
   # You can use external file for mount points.
   # It will be checked for updates each 60 seconds.
   # The format of the file is: /url=worker
   # /examples/*=loadbalancer
   JkMountFile conf/uriworkermap.properties
   # Add shared memory.
   # This directive is present with 1.2.10 and
   # later versions of mod_jk, and is needed for
   # for load balancing to work properly
   JkShmFile logs/jk.shm
   # Add jkstatus for managing runtime data
   <Location /jkstatus/>
    JkMount status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
   </Location>
  新建apache2/conf/workers.properties,增加以下内容:
   #定义request所要转发到的节点
   worker.list=loadbalancer,status
   # 定义节点 Node1
   #lbfactor定义该节点的权重,数字越大分发到该节点的request越多
   # modify the host as your host IP or DNS name.
   worker.node1.port=8009
   worker.node1.host=192.168.1.3
   worker.node1.type=ajp13
   worker.node1.lbfactor=1
   worker.node1.local_worker=1
   worker.node1.cachesize=10
   # 定义节点 Node2
   # modify the host as your host IP or DNS name.
   worker.node2.port=8009
   worker.node2.host= 192.168.1.155
   worker.node2.type=ajp13
   worker.node2.lbfactor=1
   worker.node2.local_worker=1
   worker.node2.cachesize=10
   # 负载配置
   worker.loadbalancer.type=lb
   worker.loadbalancer.balance_workers=node1,node2
   worker.loadbalancer.sticky_session=1
   worker.loadbalancer.local_worker_only=1
   # Status worker for managing load balancer
   worker.status.type=status
  至此Apache服务器配置完毕,用Text Configration测试mod_jk加载是否正常,如果正常就可启动Apache


配置应用程序
  在应用程序的web.xml的<web-app>段中增加<distributable />。
  在jboss-web.xml中增加以下内容:
  <jboss-web>
  <replication-config>
  <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
  <replication-granularity>SESSION</replication-granularity>
  <replication-field-batch-mode>
  在此,我在jboss\server\all\deploy\jbossweb-tomcat55.sar\ROOT.war下创建了一个目录test,加入inex.jsp,  session.jsp,test_action.jsp,文件内容分别如下:
   <%@ page contentType="text/html;charset=ISO8859_1" %>
   <html>
   <head>
   <title>Test</title>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312″>
   /head>
  
   <body onload="document.form.name.focus()">
   <br><br><br>
   <center>
   The host is : <%=java.net.InetAddress.getLocalHost().toString()%><br>
   Your session id is : <%=session.getId()%><br>
   Your session detail is : <%=session.toString()%><br>
   Your session context is : <%=session.getSessionContext()%><br><br>
   Please input your name:<br>
   <form action="test_action.jsp" method="POST" name="form">
    <input type="input" name="name"/>
    <input type="submit" value="Commit">
   </form>
   </center>
   </body>
   </html>

   <%@ page contentType="text/html;charset=ISO8859_1" %>
   <html>
   <head>
   <title>Test Action</title>
   <meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
   </head>
   <%
    String name = null;
    if(session.getAttribute("name")!=null)
    name = (String)session.getAttribute("name");
    String host = java.net.InetAddress.getLocalHost().toString();
   %>
   <body>
   <br>
   <br>
   <center>
   The host is : <%=host%><br>
   Your session id is : <%=session.getId()%><br>
   Your session detail is : <%=session.toString()%><br>
   Your session context is : <%=session.getSessionContext()%><br><br>
   <%
    if(name!=null){
    out.print("Your name is "+name+"<br>");
    out.print("The session is valid.");
    }
    else{
    out.print("The session is invalid!!!");
    }
   %>
   <a href="index.jsp">Return!</a>
   </center>
   </body>
   <%
    if(session.getAttribute("name")!=null)
    session.invalidate();
   %>
   </html>

   <%@ page contentType="text/html;charset=ISO8859_1" %>
   <html>
   <head>
   <title>Test Action</title>
   <meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
   </head>
   <%
    String name = request.getParameter("name");
    session.setAttribute("name",name);
    String host = java.net.InetAddress.getLocalHost().toString();
   %>
   <body>
   <br>
   <br>
   <center>
   The host is : <%=host%><br><br>
   Your session id is : <%=session.getId()%><br>
   Your session detail is : <%=session.toString()%><br>
   Your session context is : <%=session.getSessionContext()%><br><br>
   Your name is : <%=name%><br>
   This name is set into the session.<br>
   Please click <a href="session.jsp">here</a> to check the session valid or not.
   </center>
   </body>
   </html>
  分布式热部署(distributable hot deploy)
     在一个节点很多的cluster中,如果部署应用的时候必须 把程序文件拷贝到每个机器上的话,
     那实在太愚蠢了,幸好通过all启动的jboss自动支持分布式热部署。把支持cluster的应用(
     通常需要打包成 war文件),放到%jboss%\server\all\farm下,那么处于同一cluster中的
     其他节点会自动下载并且部署,jboss把这个称 为Farm deploy
到现在我们的jboss集群已经布署完成,在你的浏览器里输入http://1292.168.1.6/test就可以测试了,测试过程你可以看到你的请求是哪个节点处理的……
说明:
apache能够自动发现新启动的Jboss节点。当第一个Jboss节点启动后,自动创建Jboss集群。然后依次将 其他节点加入到集群中。现在 访问http://192.168.1.6,能够看到jboss的状态.说明请求已经被转发到 Jboss节点。集群启动成功。apache能够监视集群中各节点的状况,自动从集群中去掉无法访问的节点, 从而保证每个请求都被响应。当集群的全部节点都停止工作,集群消亡。
有关Jboss集群的session复制问题请参考jboss相关文档

分享到:
评论

相关推荐

    apache+jboss集群参考

    apache+jboss集群参考,参考介绍集群实现办法

    Apache2.2+JBOSS 5 集群配置

    Apache2.2+JBOSS 5 集群配置主要涉及在Linux环境下构建高可用性和负载均衡的服务器集群,以提升应用服务的稳定性和处理能力。以下是详细的知识点: 1. **JBoss集群架构**: JBoss 集群可以采用两种架构:客户端...

    httpd(负载均衡)+Jboss集群高可用部署配置文件

    这里我们将深入探讨如何使用httpd(Apache HTTP Server)作为负载均衡器,结合Jboss应用服务器进行集群部署,同时利用Linux操作系统来实现这一目标。 一、httpd负载均衡 httpd(Apache HTTP Server)作为全球最...

    Apache+Jboss(Tomcat)集群配置

    Apache+Jboss(Tomcat)集群配置是一种常见的高可用性和负载均衡解决方案,它通过在前端部署Apache服务器,中间层配置多个Jboss或Tomcat应用服务器,后端连接统一的数据库来实现系统的扩展性和稳定性。以下是配置这个...

    Jboss7 +apache 2.2.25+mod_jk 配置集群

    本教程将详细阐述如何在Windows环境下配置基于Jboss7、Apache 2.2.25和mod_jk的集群,实现负载均衡。首先,确保您已经下载了所需的所有软件,包括Jboss7、Apache HTTP Server 2.2.25和mod_jk模块。 1. **安装与准备...

    apache+jboss整合详细步骤全过程

    ### Apache与JBoss整合详细步骤 #### 环境配置 在进行Apache与JBoss的整合之前,首先需要确保服务器的基础环境已经配置好。这里提到的环境包括两个服务器:一个运行Apache与JBoss(IP: 192.168.1.95),另一个仅...

    apache jboss 集群问题

    apache jboss 集群问题,集群后出现异常,收集资料!

    Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理

    在负载均衡方面,文章首先介绍了 JBOSS 官方文档中推荐使用 Apache Httpd 作为负载均衡服务器,但是作者由于个人喜好 Nginx,所以选择使用 Nginx 1.2.1 + JBOSS AS 7 实现负载均衡。 在 Session 处理方面,文章介绍...

    apache+jboss学学.rar

    当Apache与JBoss结合使用时,通常Apache作为前端服务器,负责处理HTTP请求,通过mod_jk或mod_proxy模块将请求转发到后端的JBoss服务器,这样可以充分利用Apache的高性能和JBoss的丰富企业级特性。这种架构被称为...

    CentOS+Jdk+Jboss+dubbo+zookeeper集群配置教程

    通过以上步骤,你将能够在CentOS环境下搭建起一个完整的Jboss应用服务器集群,dubbo服务治理框架,并与zookeeper集群集成,为你的分布式应用提供稳定、高效的运行环境。记得在每个步骤中仔细检查配置,避免出现错误...

    Apache+Jbosseap环境搭建.zip

    Apache+Jbosseap环境搭建.zip

    Apache2.2.25 + Tomcat6.0.45 + mod_jk + 测试页面 + 集群

    本资源包含了文章Apache2.2.x + Tomcat6.x + JK 集群配置,http://blog.csdn.net/qq396229783/article/details/74295797里面所用到的软件配置

    CentOS下apache负载均衡与JBoss集群配置

    在本文中,我们将讨论在CentOS操作系统环境下,如何进行Apache负载均衡与JBoss集群的配置。负载均衡和集群配置是提高网站可用性、扩展性和性能的关键技术。通过这篇文章,我们会了解到详细的配置步骤,以及它们在...

    Apache+Jboss负载均衡加域名转发

    在IT架构中,Apache与JBoss的结合使用是一种常见的企业级解决方案,特别是在需要处理高并发、高可用性以及复杂业务逻辑的应用场景下。通过Apache作为前端的Web服务器,结合JBoss作为后端的应用服务器,可以实现高效...

    Linux下apache负载均衡及JBoss集群详细文档

    Linux下apache负载均衡及JBoss集群详细文档

    linux jboss4+apache集群配置

    redhat5+jboss4.2.3+apache2.2.19+mod_jk.so集群配置 文档中包括了jkd jboss apache mod_jk 的分别安装步骤,对linux不熟悉的人绝对有所帮助。 我把他搞定中途遇到了很多问题才写了这个文档,相对来说比较完善了,...

    Apache+Jbosseap环境搭建V1.0 (2).docx

    Apache所用包:httpd-2.2.19.tar.gz Jboss 所用包:jboss-eap-5.1.2.zip JDK 所用包:jdk-6u26-linux-x64-rpm.bin 整合所需包:tomcat-connectors-1.2.26-src.tar.gz

    手把手系列-Eclipse+JBossIDE+JBoss开发环境配置

    本教程主要关注的是如何使用Eclipse集成开发环境(IDE)配合JBossIDE插件以及JBoss应用服务器来搭建一个高效、稳定的Java EE开发环境。接下来,我们将深入探讨这个主题,详细讲解每一个步骤。 一、Eclipse简介 ...

    EJBCA+mysql+jboss安装布署

    在 `%EJBCA_HOME%` 目录下,使用 DOS 命令执行 `ant replaceDS`,根据提示选择数据库类型为 `mysql` 并进行相关配置。 - **安全策略文件**:将 JCE Policy 文件复制到 `%JAVA_HOME%\jre\lib\security` 目录下。 ###...

Global site tag (gtag.js) - Google Analytics