本篇文章给大家分享的是有关如何进行Tomcat官方的集群配置说明,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
我们都知道,为了应对大量的请求,单台的Tomcat不能满足的时候,需要采取一系列的措施,例如分流、集群等。
进行Tomcat集群的时候,最需要关注和实现的,是多个Tomcat实例间的Session数据的共享,这样在节点crash的时候,才能使用其他节点响应。
关于集群,Tomcat的commiter和主要维护人Mark Thmoas在ApacheCon上做
Cluster的分享时这样描述:
什么时候需要使用Cluster呢?
理论上,永远不要。
为什么呢,Thomas是这样说的
Adds configuration complexity
Requires additional processing
Debugging is lot harder
而你可能真正需要的是
Load-balancing plus sticky sessions
If a node fails, sessions will be lost
集群应该是最后一个选择。
我们前面的文章写过通过Redis/Memcached来存储Session实现多实例间的Session数据共享的原理及步骤。(详解集群内Session高可用的实现原理 )
其实Tomcat官方提供了内置的Cluster功能,无须第三方的插件支持。
整个集群的配置可以分为以下几步:
配置每个Tomcat实例的Engine,增加jvmRoute值
配置集群部署的应用,修改其web.xml,增加<distributable/>配置。
使用Apache进行负载均衡,同时配置Session sticky和接受请求转发的Map path 。关于Apache的配置,可以参考前面的文章
快看Apache那个二道贩子(1)
快看Apache那个二道贩子(2)
修改各个Tomcat实例的Cluster配置,最简配置为打开默认注释的内容:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
这个最简易的SimpleTcpCluster会使用内存进行Session数据的存储,并且集群间各个Tomcat实例会互相进行数据备份。 各个实例间会通过multicast的方式进行心跳检测。
session数据的数据的传输是通过Tcp Connection进行的。
下图为断开一个实例连接时,其它实例收到的检查信息
当然,我们也可能对Cluster进行各项属性的定义,例如Session的Manager,multicast和数据传递的实现等,担心Session放在内存中的话,可以使用其它的Manager实现。
Tomcat提供了三种方式的Session共享策略:
Session数据持久化,将数据保存到共享文件系统
Sesion持久化,数据保存到共享的数据库中,数据通过JDBCStore进行存储
使用内存进行共享,使用Tribes
5. 继续使用examples中的session进行功能检查,此时,你会发现多个实例间数据可以正常共享,而且不需要其它第三方的插件支持,绝对官方的实现。
以上就是如何进行Tomcat官方的集群配置说明,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。