1.  前言

该篇中测试的机器发生了变更,在第一篇中设置的Apache  DocumentRoot "d:/deployment"修改为了DocumentRoot d:/cluster 。这个不影响实际操作,just换了台电脑。

在第一篇中讲了apache整合tomcat的,该篇中将阐述tomcat的集群.

2. 集群的概念

集群分类

■ 纵向集群 :VERTICAL CLUSTER 多个tomcat部署在同一台服务机上,CPU资源需要抢占,只能对内存进行拓展

■ 横向集群 : HORIZONTAL CLUSTER  tomcat和服务机一一对应,即一台服务器上部署一个tomcat。(可做大规模集群)

 核心概念

■ 负载均衡 :LOAD BALANCE  依据每个节点对应的权重大小分配需要处理的数据

■ 高可用性 : HIGH AVAILABLE 实际运行中只有一台服务器在工作,当其挂掉后其他服务器顶上

Tomcat 官网给出的结构图 :

    

 通过负载均衡,任务TASK分配给集群节点.

3. 集群

3.1 配置Apache

修改Apache  httpd.conf 文件 ,去掉第一篇中文件末尾追加的内容,在其后面追加如下内容:

LoadModule jk_module modules/mod_jk-1.2.-httpd-2.2..so
JKWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
<VirtualHost *>
DocumentRoot d:/cluster
<Directory "d:/cluster/JMIE">
AllowOverride None
Order allow,deny
Allow from all
</Directory> ServerAdmin ufida-hf:
ServerName ufida-hf:
DirectoryIndex index.html index.htm index.jsp index.action
ErrorLog logs/error_log.txt
CustomLog logs/access_log.txt common JkMount /*WEB-INF cluster 
JkMount /servlet/* cluster
JkMount /*.jsp cluster
JkMount /*.do cluster
JkMount /*.json cluster
JkMount /*.action cluster
</VirtualHost>

   备注:这里发布的包名称为JMIE

在第一篇中使用的是 apj13 而这里使用的是cluster,那么这个cluster是哪里来的呢? 很显然是在worders.properties中进行配置,其内容如下:

worker.list = cluster
#node1
worker.node1.port =
worker.node1.host = localhost
worker.node1.type = ajp13
worker.node1.lbfactor = #node2
worker.node2.port =
worker.node2.host = localhost
worker.node2.type = ajp13
worker.node2.lbfactor = #cluster
worker.cluster.type = lb
worker.cluster.balance_workers = node1,node2

worker.lbcontroller.sticky_session=0
  worker.controller.sticky_session_force=false

worker.connection_pool_size=
worker.connection_pool_minsize=4
worker.connection_pool_timeout=
  worker.node1.host = localhost

worker.节点名称.host 表示的为节点对应的主机名 ,这里为纵向集群,都是在本地配置,如果需要横向集群直接修改对应的host即可。

  worker.cluster.type = lb 

表示集群方式为负载均衡,其中worder.节点名称.lbfactor 表示节点对应的权重,权重越到处理的TASK越多,这里为1:1 即平均分配

    worker.lbcontroller.sticky_session=0
    worker.controller.sticky_session_force=false

保证session可在各节点进行复制,即关闭一台服务器后,我们登录系统的session会被转移到另外一台服务器上,客户端仍能正常操作。

   worker.cluster.balance_workers = node1,node2

表示两个节点tomcat对应名称为node1,node2 。

3.2 配置TOMCAT

由上可以需要两个tomcat ,解压两个tomcat

    修改tomcat node1 中的conf/server.xml文件

<Server port="" shutdown="SHUTDOWN">

节点2 在修改为8006

 <Connector port="" protocol="HTTP/1.1"   redirectPort="" />

节点2 修改为

 <Connector port="" protocol="HTTP/1.1"   redirectPort="" />
<Connector port="" protocol="AJP/1.3" redirectPort=""  />

节点2 修改为

<Connector port="" protocol="AJP/1.3" redirectPort=""  />

以上为设置tomcat在节点的名称,节点2修改为node2 ,随后在其下方加入:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="">
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions=""/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
bind="127.0.0.1"
address="228.0.0.4"
port=""
frequency=""
dropTime=""/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4001"

selectorTimeout=""
maxThreads=""/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" timeout=""/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

   节点2修改为4001 。

通过下图

可知道,为了集群,需要在应用中的web.xml末尾追加一个<distributable/>元素 。

3.3 Tomcat调优

通过以上的操作,集群环境已经成功搭建了,为了让tomcat能跑的更high,下面来对tomcat进行调优  。

3.3.1 优化启动参数

在tomcat的bin目录下修改catalina.bat 文件,在该文件头上追加如下信息

set JAVA_OPTS=-server -Xms1000M -Xmx1000M 

其中 server 表示tomcat 允许在生产环境

-Xms 和 -Xmx 表示最小、最大JVM内存(如果是win32的系统会受到系统内存的限制) 两者设置为一样,可通过如下命令来测试其合适的值

java -Xmx1200m -version

该值需要手动设置 .

tomcat的启动参数还有很多,详细可自行查看官方文档:http://tomcat.apache.org/tomcat-7.0-doc/index.html

   3.3.2 TOMCAT本身优化

 <Connector port="" protocol="AJP/1.3" redirectPort="" />

替换为:

    <!-- Define an AJP 1.3 Connector on port  -->
<Connector port="" protocol="AJP/1.3" redirectPort=""
URIEncoding="UTF-8" minSpareThreads="" maxSpareThreads=""
enableLookups="false" disableUploadTimeout="true" connectionTimeout=""
acceptCount="" maxThreads="" maxProcessors="" minProcessors=""
useURIValidationHack="false"
compression="on" compressionMinSize=""
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
/>

解释如下:

    
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
   URIEncoding="UTF-8"  设置编码
    minSpareThreads="25" 最大线程数
maxSpareThreads="75" 最小线程数
enableLookups="false" 关闭DNS查询
disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="300" 线程数达到maxThreads后,后续请求会被放入一个等待队列
maxThreads="300" 最大并发数
maxProcessors="1000"
minProcessors="5"
useURIValidationHack="false" 减少对url的不必要的检查
compression="on"  打开压缩功能
compressionMinSize="2048" 启用压缩的输出内容大小 默认为2KB
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 压缩类型
/>

同样的道理也可以去修改8080端口,这里集群我们只需要用到8009端口,将节点2同样优化后可启动两个Tomcat

3.4  测试集群

将工程分别拷贝到两个TOMCAT中的webapps目录下

重启apache ,后启动两个tomcat

输入  http://192.168.1.5/JMIE  访问

关闭正在运行的tomcat后可发现扔可继续操作.

该篇结束

第四篇、Tomcat 集群的更多相关文章

  1. [CoreOS 转载] CoreOS实践指南(四):集群的指挥所Fleet

    转载:http://www.csdn.net/article/2015-01-14/2823554/2 摘要:CoreOS是采用了高度精简的系统内核及外围定制的操作系统.ThoughtWorks的软件 ...

  2. Tomcat集群配置学习篇-----分布式应用

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  3. 转载 Tomcat集群配置学习篇-----分布式应用

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  4. Apache+tomcat集群配置

    一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://to ...

  5. tomcat集群实现源码级别剖析

    随着互联网快速发展,各种各样供外部访问的系统越来越多且访问量越来越大,以前Web容器可以包揽接收-逻辑处理-响应整个请求生命周期的工作,现在为了构建让更多用户访问更强大的系统,人们通过不断地业务解耦. ...

  6. Nginx实现tomcat集群进行负载均衡

    一.背景 随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文就借助nginx来完美的解决这个问 ...

  7. Centos下Apache+Tomcat集群--搭建记录

    一.目的 利用apache的mod_jk模块,实现tomcat集群服务器的负载均衡以及会话复制,这里用到了<Cluster>. 二.环境 1.基础:3台主机,系统Centos6.5,4G内 ...

  8. Apache负载均衡与Tomcat集群配置学习(Windows环境)

    本文主要参考自http://www.iteye.com/topic/985404?dhcc,经由实际操作配置操并记录而成. 由于最近的一个Java开发项目用到了Tomcat中间件作为web服务器,刚开 ...

  9. 161028、Nginx负载均衡实现tomcat集群方案简要小结

    重点两部分:一.负载均衡二.tomcat集群 所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问. Nginx是一个常用的 ...

  10. 【原创】搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群

    为什么移除首页?哪里不符合要求?倒是回我邮件啊! 一.环境搭建 Linux下Vagrant搭建Tomcat7.Java7 二.Nginx的安装配置与测试 *虚拟机下转至root sudo -i 1)下 ...

随机推荐

  1. FAT32,NTFS,EXT3,支持的最大分区和单个文件大小?

    FAT32 Filesystem: 最大单一档案大小 4GB 最大文件系统总容量 128GB NTFS Filesystem: 最大单一档案大小 64GB 最大文件系统总容量 2TB Ext3 Fil ...

  2. HDU-2149 Public Sale

    http://acm.hdu.edu.cn/showproblem.php?pid=2149 巴什博奕(Bash Game): Public Sale Time Limit: 1000/1000 MS ...

  3. NGU-学习笔记(1)-动态添加删除图集

    现在 正在做unity的方向 不得不说我选的是UI方向 Unity中很有名的就是NGUI插件了.今天做了个ngui的简单背包系统.非常简陋..初学着 自己mark下 (1)预览 主要就是个 simpl ...

  4. 【索引】UML学习笔记

    行为图 交互图 交互概览图 时间图 顺序图 通信图 活动图 状态及图 用例图 结构图 包图 类图 对象图 组件图 部署图 组合结构图

  5. hdu 4284 状态压缩

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4284 #include<cstdio> #include<cstring> # ...

  6. centos下apache thrift的安装

    参考:http://running.iteye.com/blog/1983463  thrift-0.9.0安装 最好切换到root用户操作,避免不必要的麻烦. 进行例子程序tutorial目录下,通 ...

  7. 389. Find the Difference

    一开始没看见shuffle...觉得同时遍历不就完事了.. 和那个所有数字出现2,有一个出现3次还是什么的一样,CHAR可以完美和INT相互切换. public class Solution { pu ...

  8. c++文件流

    前言 文件流能够从文件系统中读取数据并向文件中写入数据. 文件输入流适用于读取配置数据.读取保存的文件以及批处理基于文件的数据等任务.Fprintf,fwrite,fputs 文件输出流适用于保存状态 ...

  9. ELK初学搭建(kibana)

    ELK初学搭建(kibana) elasticsearch logstash kibana ELK初学搭建 kibana 1.环境准备 centos6.8_64 mini IP:192.168.10. ...

  10. DB2单个DB重启

    db2单个数据库重启 . -------------------------------------------------------------- db2 connect to bpm user ...