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. 自己服务的相关配置
相关文章
相关标签/搜索