`
whui0110
  • 浏览: 84242 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Apache Jboss/Tomcat集群

    博客分类:
  • web
 
阅读更多
集群配置方案:
1. 结构简绍:
  该方案采取前端一台apache服务,中间多个jboss/tomcat服务器,后端连接同一个数据库的集群方法
   
2. 采用的个个服务器类型和名称
Apache: 采用的是apache_2.2.6-win32-x86-openssl-0.9.8e.msi(带证书等加密验证)
或者apache_2.2.6-win32-x86-no_ssl.msi(无加密认证)
http://apache.mirror.phpchina.com/httpd/binaries/win32/下载
Jboss/Tomcat:  采用jboss-4.0.4.GA.zip
http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=16942下载
Apache Tomcat Connector ( jk):  采用mod_jk-apache-2.2.4.so
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/下载
3. apache安装
略.
安装完成后请访问http://127.0.0.1确保安装成功

4. JDK1.5 ,Jboss/Tomcat安装
JDK必须是1.5版本,以前给客户安装的都是1.4的,请安装1.5版本;
解压缩jboss-4.0.4.GA.zip即可
安装完成后请进入$JBOSS_HOME/bin/启动(在doc界面输入run.bat –c all)
启动完成后访问http://127.0.0.1:8080确保部署成功
5. 安装配置:
1) 配置apache
 配置$APACHE_HOME/conf/httpd.conf文件
在该文件的最后一行加入
# mod_jk config
Include conf/mod_jk2.conf
 在$APACHE_HOME/conf/下新建文件mod_jk2.conf
mod_jk2.conf文件内容如下:

LoadModule jk_module modules/mod_jk-apache-2.2.4.so
JkWorkersFile conf/workers2.properties
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 indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /* loadbalancer

#apache will serve the static picture.
#以下命令意味着所有的图片将由APACHE解析
#JkUnMount /*.jpg loadbalancer
#JkUnMount /*.gif loadbalancer
#JkUnMount /*.swf loadbalancer
#JkUnMount /*.bmp loadbalancer
#JkUnMount /*.png loadbalancer
 把mod_jk-apache-2.2.4.so拷贝到目录$APACHE_HOME/modules下
 在$APACHE-HOME/conf/下新建文件workers2.properties
workers2.properties内容如下:

#部署的服务列表
worker.list=loadbalancer,server106

# Define the first node...
#worker.server105.port=8009
#worker.server105.host=192.168.1.107
#worker.server105.type=ajp13
#worker.server105.lbfactor=1
#worker.server105.local_worker=1
#worker.server105.cachesize=100
  
# Define the 2nd node...
worker.server106.port=8009
worker.server106.host=192.168.1.107
worker.server106.type=ajp13
worker.server106.lbfactor=1
#worker.server106.local_worker=1
worker.server106.cachesize=100

# Now we define the load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=server106
worker.loadbalancer.sticky_session=1

注释:在http.conf同目录下新建 workers.properties文件,内容如下

worker.list = controller,tomcat1,tomcat2  #server 列表
#========tomcat1========
worker.tomcat1.port=8009         #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1   #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=8009       #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1   #server的加权比重,值越高,分得的请求越多

#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担请求的tomcat
worker.controller.sticky_session=1

说明:worker.loadbalancer.sticky_session=1参数的设定,意味着一旦用户通过APACHE连接到某台JBOSS SERVER(创建了session),则只要在该台JBOSS服务正常的情况下,该用户所有的请求都将会发送至该JBOSS SERVER。
2) Jboss/Tomcat配置
 配置%JBOSS_HOME%/server/all/deploy/jbossweb-tomcat55.sar/ server.xml修改
<Engine name="MainEngine" defaultHost="localhost">

<Engine name="MainEngine" jvmRoute="server106"  defaultHost="localhost">
其中server106与上述workers2.properties定义的内容一致。
 %JBOSS_HOME%/server/all/deploy/jbossweb-tomcat55.sar/META-INF/ jboss-service.xml

<attribute name="UseJK">false</attribute>

<attribute name="UseJK">true</attribute>
 把服务的sc.war拷贝到
$JBOSS_HOME/server/all/deploy/jbossweb-tomcat55.sar/下完成部署

 sc\WEB-INF\classes\ehcache.xml文件中
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=192.168.1.10, port=40001"/>
其中properties="hostName=192.168.1.10请修改为本地服务器(jboss所在机器)的ip地址;
3) 配置集群(Clustering)
 如果是以run -c all 来启动jboss服务,则默认是将cluster服务启动,无需做什么配置工作,只需确认相关文件是否存在即可。
确认%JBOSS_HOME%/server/all/deploy/下存在cluster-service.xml文件;
确认%JBOSS_HOME%/server/all/lib/下存在jgroups.jar文件,如果没有则重新安装jboss。
如果应用程序部署在default配置下,则需将上述的两个文件分别拷入
%JBOSS_HOME%/server/default/deploy/和%JBOSS_HOME%/server/default/lib/目录下。
 修改web服务路径下的web.xml文件,例如这里(/sc/WEB-INF/下),添加<distributable />,例如:
…..
<web-app>
<distributable />
……..
 在web服务路径例如这里(/sc/WEB-INF/)下添加文件jboss-web.xml
jboss-web.xml文件内容:
<jboss-web>
    <replication-config>      <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
        <replication-granularity>SESSION</replication-granularity>
    </replication-config>
</jboss-web>
其中:
replication-trigger是指定哪些操作引发session的版本更新,它的取值有:
SET_AND_GET      
SET_AND_NON_PRIMITIVE_GET
SET
replication-granularity是指定replication-granularity是复制粒度,可以取session或attribute。如果取为attribute有可能导致复制失败,这是目前版本的jboss cache的一个bug,等待修正



Apache配置补充:
1. 配置$APACHE_HOME\conf\httpd.conf文件:
ThreadsPerChild     250   #每个子进程可以建立的固定数量的线程
MaxRequestsPerChild  0    #用于控制服务器建立和结束进程的频率,为0表示没有#限制,但在solaris OS下该值可能会出错,可以设置为1000或2000。根据系统#的并发负载吧。
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf  制定所用的多进程处理方式(可选)
2. 配置$APACHE_HOME\conf\***\ httpd-mpm.conf文件
StartServers         4    #最初建立进程的数量
ServerLimit         24   #进程建立的最大数量,硬限制
ThreadLimit        128  #每一进程能创建线程的最大数量,硬限制,该参数建议#和ThreadsPerChild一致,如果ThreadLimit > ThreadsPerChild的话,会造成不##必要的内存消耗。
MaxClients         150  #同时可以得到处理的客户端的最大数量
MinSpareThreads    100   #所有进程中空闲线程的总数最小数值
MaxSpareThreads    200   #所有进程中空闲线程的总数最大数值
3.





Jboss/tomcat配置补充:
1. 公共的jar包我们可以放在$JBOSS-HOME/server/all/lib下,如数据库的JDBC jar,log4j.jar等,如果这些JAR已经在该lib下放置了,那么我们的应用WEB-INF/lib下不应该再放置,否则JBOSS也会将他们再一次加载,白白占用内存。
2. 配置日志的文件,log4j.xml位于$JBOSS-HOME/server/all/conf下
3. $JBOSS-HOME/server/all/work下存放的是JSP编译后的.java及.class文件,如果调试JSP时出错了,可以到D:\jboss-4.0.4.GA\server\all\work\jboss.web\localhost\sc目录下清除临时文件
4. $JBOSS-HOME/server/all/log下存放的是日志文件,默认的log4j.xml配置是将日志输出到该文件夹下的server.log文件,可以去查看信息进行调试。
5. 我们的应用一般部署在$JBOSS-HOME/server/all/deploy/jbossweb-tomcat50.sar/下
6. 配置端口在 ./ deploy/jbossweb-tomcat50.sar/server.xml中,自己找8080,修改为你想设定的端口即可。
7. 访问URL如果是目录,不想显示该目录下文件,紫色部分的橙色设为false表示不列出目录。默认是设为true
路径:$JBOSS_HOME\server\all\deploy\jbossweb-tomcat55.sar\conf\web.xml
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
8. jboss/tomcat性能配置(Tomcat5.5为准)
/jbossweb-tomcat50.sar/server.xml
<!-- jboss3.2.3 jboss-service.xml -->
<!-- A AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
address="${jboss.bind.address}" port="8009" minProcessors="5" maxProcessors="1000" enableLookups="true" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
<!-- jboss3.2.6 server.xml -->
<!-- A AJP 1.3 Connector on port 8009 -->
<Connector port="8009" address="${jboss.bind.address}"
enableLookups="false" redirectPort="8443" debug="0"
maxProcessors ="1000" minProcessors=”5” acceptCount="100"
protocol="AJP/1.3"/>
简单解释一两个参数(以tomcat5.0为准):
maxProcessors:最大并发数(连接数)
minProcessors:初始化时启动的最小的进程数
acceptCount:在当前connector的连接数达到最大时,允许进入等待队列的数目\
connectionTimeout:连接超时时间,单位为毫秒
enableLookups:是否允许通过DNS lookups,返回远程客户端的机器名,如果设为false,则只能返回IP地址。该参数默认为true,如果不需要,可以禁掉,设为false,可以提高服务器的性能
maxPostSize:设定允许透过POST上传参数的字节数,默认是2M(2097152),如果想禁掉该限制,则将该值设为一个小于或等于0 的值,如0、-1,如果所部署的应用中有上传工作,则需注意该配置
port="8009"
9. $JBOSS-HOME/server/下有3个目录,all/default/minimal,它们是表示3种配置,全部的配置、默认配置、最小配置,我们在启动JBOSS服务时,可以指定
run –c all 表示是启动all配置(将会加载所有服务);run 表示是以默认配置启动;
run –c mimimal  表示是启动mimimal配置。这三者所加载的服务数量不同,具体区别可查阅JBOSS相关文档,你还可以自己定义一个配置,如test
如果你确定了JBOSS服务启动的配置,那么你的应用及相关配置就需要部署在对应的目录下的相关的路径下,如all/,default/,minimal/下
10. 路径:
$JBOSS_HOME\server\all\deploy\jbossweb-tomcat55.sar\META-INF\ jboss-service.xml

<attribute name="SnapshotMode">instant</attribute> <!-- you may switch to "interval" -->
Instant: session replication采取立即复制的方式
interval: session replication采取延时一段时间后复制

JBoss中的若干目录:
conf -- 含有指定JBoss核心服务的jboss-service.xml文件。同时,还包括核心服务的其他配置文件。
data -- 这一目录存储持久化数据,即使服务器发生重启其中的数据也不会丢失。许多JBoss服务将数据存储在这里,比如 Hypersonic数据库实例。
deploy -- 用户将应用代码(JAR\WAR\EAR文件)部署在此处。同时,deploy目录也用于热部署服务(即,那些能够从运行服务器动态添加或删除的服务)和部署JCA 资源适配器。因此,用户能够在 deploy 目录看到大量的配置文件。尤其是,用户能够看到 JMX 控制台应用(未打包的WAR文件)。JBoss服务器将定期扫描该目录,从而查找是否有组件更新或修改,从而自动完成组件的重新部署。
lib -- 服务器配置所需的JAR件。用户可以添加自身的库文件,比如JDBC驱动,等等。
log -- 日志信息将存储到该目录。JBoss 使用Jakarta Log4j包作为其日志功能。同时,用户可以在应用中直接使用Log4j日志记录功能。
tmp -- 供部署器临时存储未打包应用使用,也可以作为其他用途。
work -- 供Tomcat编译JSP使用。



在一台机器上启动两个JBoss服务器:
1. 编辑文件 $JBOSS-HOME/server/ Your_Server /deploy/jbossweb-tomcat55.sar/server.xml
   <Connector port="8080" address="${jboss.bind.address}"
         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
         emptySessionPath="true"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true"/>
<Connector port="8009" address="${jboss.bind.address}"
         emptySessionPath="true" enableLookups="false" redirectPort="8443"
         protocol="AJP/1.3"/>
<!-- SSL/TLS Connector configuration using the admin devl guide keystore
      <Connector port="8443" address="${jboss.bind.address}"
           maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
           emptySessionPath="true"
           scheme="https" secure="true" clientAuth="false"
           keystoreFile="${jboss.server.home.dir}/conf/chap8.keystore"
           keystorePass="rmi+ssl" sslProtocol = "TLS" />
      -->
2. 编辑文件 $JBOSS-HOME/server/ Your_Server /conf/jboss-service.xml
<mbean code="org.jboss.web.WebService" name="jboss:service=WebService">
  <attribute name="Port">8083</attribute>
<mbean code="org.jboss.naming.NamingService"
      name="jboss:service=Naming"
      xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">
  <attribute name="Port">1099</attribute>
  <attribute name="RmiPort">1098</attribute>

<mbean code="org.jboss.invocation.jrmp.server.JRMPInvoker"
      name="jboss:service=invoker,type=jrmp">
  <attribute name="RMIObjectPort">4444</attribute>
<mbean code="org.jboss.invocation.pooled.server.PooledInvoker"
      name="jboss:service=invoker,type=pooled">
  <attribute name="ServerBindPort">4445</attribute>
3. $JBOSS_HOME/server/all/deploy/jms/uil2-service.xml
修改ServerBindPort
4. 本身服务的相关配置
分享到:
评论

相关推荐

    Apache Jboss/Tomcat集群(手稿)

    Apache JBoss/Tomcat集群是一种高可用性和可扩展性的架构,用于处理大量并发请求和分发负载。在本文档中,我们将深入探讨如何构建这样的集群。 首先,集群的基础架构包括一个前端Apache HTTP服务器,多个后端JBoss...

    Apache+Jboss(Tomcat)集群配置

    通过以上步骤,你可以构建一个基本的Apache+Jboss/Tomcat集群环境,实现应用的高可用和负载均衡。在实际生产环境中,还需要考虑更多的因素,如监控、安全、性能调优等,以保证整个集群的稳定性和效率。

    tomcat apache jboss集群分布

    【标题】:“Tomcat Apache JBoss集群分布” 在IT领域,服务器集群是提高应用程序可用性和可伸缩性的重要手段。本主题将深入探讨Tomcat、Apache和JBoss这三种流行的Java应用服务器如何实现集群分布,以及它们之间的...

    借助Apache2 mod_jk 1.2.x搭建JBOSS集群的方法

    ### 借助Apache2 mod_jk 1.2.x搭建JBOSS集群的方法 #### 知识点一:Apache2 mod_jk 1.2.x简介与安装配置 **Apache2 mod_jk 1.2.x**是Apache的一个模块,用于在Apache Web服务器和后端应用服务器(如JBOSS)之间...

    Apache2.2+JBOSS 5 集群配置

    mod_jk是Apache的一个模块,用于Apache与Tomcat(JBOSS内部使用Tomcat的HTTP服务)之间的通信,它是实现JBOSS集群的关键组件。 4. **集群配置实例**: 实例中包括两个JBOSS节点,分别部署在两台不同的Ubuntu服务器...

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

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

    apache-tomcat-6.0.26

    6. **集群和负载均衡**:在高并发场景下,可以通过配置Tomcat集群,实现多个实例之间的session复制和负载均衡,提升系统的可用性和扩展性。 7. **与数据库的集成**:Tomcat可以与各种数据库通过JDBC进行连接,需要...

    apache-tomcat-7.0.6.zip

    虽然Tomcat功能相对较轻,但与其他重型应用服务器(如JBoss、WebLogic)相比,它的安装和管理更为简单,适用于小型到中型的Web应用。 综上所述,Apache Tomcat 7.0.6是一个强大的Java Web服务器,它为开发者提供了...

    apache-tomcat 7.0.22

    10. **与其他服务器的集成**:Tomcat可以与其他Java EE服务器如JBoss、GlassFish等进行集成,实现负载均衡和集群。同时,它也能与非Java的Web服务器如Apache HTTP Server通过mod_jk模块进行整合。 总之,Apache ...

    jboss集群部署详细资源

    集群的关键部分是Apache与JBoss之间的连接器,通常使用Apache Tomcat Connectors(mod_jk)实现AJP协议通信: 4. **Apache Tomcat Connectors安装**:解压缩`Apache-tomcat-connectors-1.2.28-src.tar.gz`,按照...

    apache-tomcat-8.5.50.zip

    8. **集群和负载均衡**:对于高可用性和负载均衡的需求,Tomcat支持集群配置,通过复制会话和共享状态来实现多个服务器间的协同工作。 9. **集成其他服务**:Tomcat可以与各种应用服务器(如JBoss、GlassFish)或...

    Apache与Jboss负载均衡教程

    主要内容涵盖JBoss的基本介绍、配置技巧、HTTPS的配置、Apache的安装与配置流程、JBoss集群的搭建以及粘性Session策略的应用。 - **JBoss简介**:JBoss是一款开源应用服务器,100%基于Java开发,与底层操作系统...

    apache-tomcat-6.0.44

    8. **集群与负载均衡**:Tomcat 6.0支持集群配置,通过复制会话数据实现多台服务器间的会话持久性,但这个版本的集群功能相对较弱。 9. **性能优化**:可以通过调整JVM参数,启用线程池,限制并发连接数,以及调整...

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

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

    tomcat-and-jboss.rar_jboss_tomcat

    【标题】:“Tomcat与JBoss的对比分析” 【描述】:在IT行业中,Tomcat和JBoss都是广泛使用的应用程序服务器,它们各自有着独特的特性和优势。Tomcat以其轻量级、高效能和对Servlet及JavaServer Pages(JSP)的良好...

    jboss7集群配置方案说明书

    本篇主要介绍两种集群配置方案:JBoss7+Apache集群以及Solr集群,以实现高效、稳定的服务。 首先,我们来看JBoss7+Apache集群的配置。在该模式下,JBoss7被设置为主从服务器结构,Apache则作为负载均衡器。主从...

    apache-tomcat-8.5.92.tar.gz

    在实际生产环境中,为了提高可用性和可扩展性,常常会将多个Tomcat实例进行集群部署,并使用负载均衡器分配请求。此外,Tomcat还可以与其他应用服务器(如JBoss、WebLogic)一起工作,实现混合环境的部署。 总之,...

    apache-tomcat6.0

    Tomcat是Apache软件基金会Jakarta项目的一部分,它是轻量级的,相对其他如JBoss、WebLogic等商业应用服务器来说,更易于配置和管理。 **Java Servlet技术** Java Servlet是一种Java编程语言的接口,允许Java代码在...

Global site tag (gtag.js) - Google Analytics