如何进行Tomcat官方的集群配置说明

本篇文章给大家分享的是有关如何进行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官方的集群(Cluster)配置说明

整个集群的配置可以分为以下几步:

  1. 配置每个Tomcat实例的Engine,增加jvmRoute

  2. 配置集群部署的应用,修改其web.xml,增加<distributable/>配置。

  3. 使用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官方的集群配置说明,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注蜗牛博客行业资讯频道。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论电报频道链接