版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文意在介绍对tomcat集群进行更深入详细的配置以满足特定需求。 对于WEB应用集群的技术实现而言,最大的难点就是如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一 块。要实现这一点,大体上有两种方式,一种是把所有Session数据放到一台服务器上或者数据库中,集群中的所有节点通过访问这台Session服务器 来获取数据;另一种就是在集群中的所有节点间进行Session数据的同步拷贝,任何一个节点均保存了所有的Session数据。两种方式都各有优点,第 一种方式简单、易于实现,但是存在着Session服务器发生故障会导致全系统不能正常工作的风险;第
2、二种方式可靠性更高,任一节点的故障不会对整个系统 对客户访问的响应产生影响,但是技术实现上更复杂一些。常见的平台或中间件如microsoft 和IBM WAS都会提供对两种共享方式的支持,tomcat也是这样,但是一般采用第二种方式。当采用tomcat默认集群配置()时,配置的细节实际上被 省略了,对于大多数应用而言,使用默认配置已经足够,完整的默认配置应该是这样:推荐精选推荐精选 下面笔者对这里的配置项作详细解释,以下内容均是笔者阅读了tomcat官方文档后自己的理解,有些可能不对,希望读者能带着批判的眼光阅读,并欢迎指正笔者错误。 tomcat集群各节点通过建立tcp链接来完成Sessio
3、n的拷贝,拷贝有同步和异步两种模式。在同步模式下,对客户端的响应必须在Session拷 贝到其他节点完成后进行;异步模式无需等待Session拷贝完成就可响应。异步模式更高效,但是同步模式可靠性更高。同步异步模式由 channelSendOptions参数控制,默认值是8,为异步模式,4是同步模式。在异步模式下,可以通过加上拷贝确认(Acknowledge) 来提高可靠性,此时channelSendOptions设为10。 Manager用来在节点间拷贝Session,默认使用DeltaManager,DeltaManager采用的一种all-to-all的工作方 式,即集群中的节点会把Ses
4、sion数据向所有其他节点拷贝,而不管其他节点是否部署了当前应用。当集群中的节点数量很多并且部署着不同应用时,可以使 用BackupManager,BackManager仅向部署了当前应用的节点拷贝Session。但是到目前为止BackupManager并未经过 大规模测试,可靠性不及DeltaManager。推荐精选 Channel负责对tomcat集群的IO层进行配置。Membership用于发现集群中的其他节点,这里的address用的是组播地址(Multicast address,了解更多组播地址详情请参见 使用同一个组播地址和端口的多个节点同属一个子集群,因此通过自定义组播地址和端口
5、就可将一个大的tomcat集群分成多个子集群。Receiver用于 各个节点接收其他节点发送的数据,在默认配置下tomcat会从4000-4100间依次选取一个可用的端口进行接收,自定义配置时,如果多个 tomcat节点在一台物理服务器上注意要使用不同的端口。Sender用于向其他节点发送数据,具体实现通过Transport配 置,PooledParallelSender是从tcp连接池中获取连接,可以实现并行发送,即集群中的多个节点可以同时向其他所有节点发送数据而互不 影响。Interceptor有点类似下面将要解释的Valve,起到一个阀门的作用,在数据到达目的节点前进行检测或其他操作,如
6、 TcpFailureDetector用于检测在数据的传输过程中是否发生了tcp错误。关于Channel的编程模型,请参见推荐精选/tomcat-6.0-doc/api/org/apache/catalina/tribes/Channel.html。 Valve用于在节点向客户端响应前进行检测或进行某些操作,ReplicationValve就是用于用于检测当前的响应是否涉及Session数据的 更新,如果是则启动Session拷贝操作,filter用于过滤请求,如客户端对图片,css,js的请求就不会涉及Session,因此不需检测,默 认状态下不
7、进行过滤,监测所有的响应。JvmRouteBinderValve会在前端的Apache mod_jk发生错误时保证同一客户端的请求发送到集群的同一个节点,tomcat官方文档并未解释如何实现这一点,而且笔者认为这一设置似乎并无多大实 用性。 Deployer用于集群的farm功能,监控应用中文件的更新,以保证集群中所有节点应用的一致性,如某个用户上传文件到集群中某个节点的应用程序目录 下,Deployer会监测到这一操作并把这一文件拷贝到集群中其他节点相同应用的对应目录下以保持所有应用的一致。这是一个相当强大的功能,不过很遗 憾,tomcat集群目前并不能做到这一点,开发人员正在努力实现它,这
8、里的配置只是预留了一个接口。推荐精选 Listener用于跟踪集群中节点发出和收到的数据,也有点类似Valve的功能。 在大体了解了tomcat集群实现模型后,就可以对集群作出更优化的配置了,tomcat推荐了一套配置,使用了比DeltaManager更高效的 BackupManager,并且对ReplicationValve设置了请求过滤,注意在一台服务器部署多个节点时需要修改Receiver的侦听端 口,另外,为了更高效的在节点间拷贝数据,所有tomcat节点最好采用相同的配置,具体配置如下: 推荐精选推荐精选 Tomcat集群除了可以进行Session数据的拷贝,还可进行Context属
9、性的拷贝,通过修改context.xml的Context配置可以实 现,使用替换默认 Context即可,当然也可再加上distributable=true属性。 下面通过假想的一组场景来描述tomcat集群如何工作,集群采用默认配置,由t1和t2两个tomcat例程组成,场景按照时间顺序排列。推荐精选1.t1启动 t1按照标准的tomcat启动,当Host对象被创建时,一个Cluster对象(默认配置下是SimpleTcpCluster)也同时被关联到这个 Host对象。当某个应用在web.xml中设置了distributable时,Tomcat将为此应用的上下文环境创建一个 DeltaMa
10、nager。SimpleTcpCluster启动membership服务和Replication服务(用于建立tcp连接)。2.t2启动(待t1启动完成后) 首先t2会执行和t1一样的操作,然后SimpleTcpCluster会建立一个由t1和t2组成的membership。接着t2向集群中已启动的服 务器即t1请求Session数据,如果t1没有响应t2的拷贝请求,t2会在60秒后time out。在Session数据拷贝完成之前t2不会接收客户端的http或mod_jk/ajp请求。3.t1接收http请求,创建Session s1 t1正常响应客户请求,但是在t1把结果发送回客户端时,R
11、eplicationValve会拦截当前请求(如果filter中配置了不需拦截的请求类 型,这一步就不会进行,默认配置下拦截所有请求),如果发现当前请求更新了Session,调用Replication服务建立tcp连接把 Session拷贝到membership列表中的其他节点即t2,返回结果给客户端(注意,如果采用同步拷贝,必须等拷贝完成后才会返回结果,异步拷贝 在数据发送到tcp连接就返回结果,不等待拷贝完成)。在拷贝时,所有保存在当前Session中的可序列化的对象都会被拷贝,而不仅仅是发生更新的部 分。推荐精选4.t1崩溃 当t1崩溃时,t2会被告知t1已从集群中退出,然后t2就会把t
12、1从自己的membership列表中删除,发生在t2的Session更新不再往t1拷贝,同时负载均衡器会把后续的http请求全部转发给t2。在此过程中所有的Session数据不会丢失。5.t2接收s1的请求 t2正常响应s1的请求,因为t2保存着s1的所有数据。6.t1重新启动 按步骤1、2一样的操作启动,加入集群,从t2拷贝所有Session数据,拷贝完成后开放自己的http和mod_jk/ajp端口接收请求。推荐精选7.t1接收请求,s1失效 t1继续接收来自s1的请求,把s1设置为过期。这里的过期并非因为s1处于非活动状态超过设置的时间,而是执行类似注销的操作而引起的Session失 效。这时t1并非发送s1的所有数据而是一个类似s1 expired的消息,t2收到消息后也会把s1设为过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《安全用电 节约用电》(说课稿)安徽大学版六年级上册综合实践活动
- 五年级数学(小数乘除法)计算题专项练习及答案汇编
- 二零二五年瑜伽馆品牌合作与赞助合同3篇
- 五年级数学(小数四则混合运算)计算题专项练习及答案
- 现代教学工具学校多媒体教学设备的采购与应用
- 消费者心理在农产品包装设计中的实践案例
- 2025年人教版(2024)拓展型课程化学下册阶段测试试卷含答案
- 幼儿园场地租赁合同
- 店铺租赁合同
- 2025年中图版第一册生物上册月考试卷含答案
- 医养康养园项目商业计划书
- 《穿越迷宫》课件
- 《C语言从入门到精通》培训教程课件
- 2023年中国半导体行业薪酬及股权激励白皮书
- 2024年Minitab全面培训教程
- 社区电动车棚新(扩)建及修建充电车棚施工方案(纯方案-)
- 项目推进与成果交付情况总结与评估
- 铁路项目征地拆迁工作体会课件
- 医院死亡报告年终分析报告
- 建设用地报批服务投标方案(技术方案)
- 工会工作人年度考核个人总结
评论
0/150
提交评论