我们都知道,为了应对大量的请求,单台的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)配置说明
整个集群的配置可以分为以下几步:
配置每个Tomcat实例的Engine,增加jvmRoute