`

Apache Jboss/Tomcat集群

阅读更多
Apache  Jboss/Tomcat集群

集群配置方案:
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 Jboss/Tomcat集群(手稿) Apache Jboss/Tomcat集群(手稿) Apache Jboss/Tomcat集群(手稿) Apache Jboss/Tomcat集群(手稿)

    Apache+Jboss(Tomcat)集群配置

    公司需要做 Apache Tomcat集群,研究了数日,终配置成功,把研究结果共享一下。 最下面的红色字体[在一台机器上启动两个JBoss服务器],不同机器端口和路径不同,可根据自己情况适当修改。

    tomcat apache jboss集群分布

    NULL 博文链接:https://memorymyann.iteye.com/blog/990662

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

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

    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

    Apache安装及JBOSS部署说明文档.rar

    描述了apache jboss3.2.6做负载均衡(load balance)的部署细节以及一些常见错误说明;描述了部署jboss3.2.3/3.2.6时一些心得、常用配置项。 目 录 1 .Apache2.0及连接器jk1.2的编译部署 4 1.1下载相关软件包 ...

    Jboss集群配置指南

    1. Apache 配置 5 2. Tomcat配置 6 3. Jboss配置 6 3.1. 配置Session复制 6 3.2. 配置Clustering services 6 3.3. 配置TreeCache cluster service 7 4. 设置run 参数 7 5. Web client 7 5.1. web.xml 7 5.2. jboss-...

    性能调优 海量并发 系统架构

    Nginx+tomcat集群Memcached+Session复制 高性能高并发服务器架构 基于nginx的tomcat负载均衡和集群 实现多服务器负载均衡 系统性能优化 数据库 Nginx+Squid负载均衡 配置好的集群 总共三十个文档"&gt;Apache+Tomcat+...

    playce-dolly

    雅典娜多莉Athena-Dolly是一个独立于WAS的会话群集解决方案,目前支持Apache Tomcat 6/7,JBoss EAP 6和WebLogic 11,并且该支持将在将来扩展到各种WAS,例如Jeus和WebSphere。 雅典娜多莉的特点异构WAS之间的会话...

    基于SSM架构实现的大型分布式购物网站-B2C项目源码+项目说明.zip

    2、当并发增加后,就添加服务器,做tomcat集群。使用负载均衡服务器来决定存放到哪个服务器的image中。当图片传到tomcat1中到tomcat2中查找图片,我们可以将tomcat1和tomcat映射到另一台服务器上,然后做共享。或者...

    《Java-web程序设计》教案.doc

    《Java-web程序设计》教案 课题:第一章 Java Web概述 【教学目标】 掌握JSP运行环境的搭建,能进行简单的JSP程序编写与运行。 【教学重点】 Eclipse+Dreamweaver工具、项目的导入、导出、...Tomcat是Apache 软件基金会

    Jetty中文手册

    Porting from Tomcat Jetty版本比较列表 参考 Jetty 7 Latest JavaDoc Jetty 7 Latest Source XRef Index of Generated Release Documents–API and XRef documentation for previous releases. 通用参考 Jetty体系...

    java开源包1

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包11

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包2

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包3

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包6

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包5

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包10

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

Global site tag (gtag.js) - Google Analytics