使用apache作为带有粘性会话的负载均衡器 - 需要基于粘性会话的负载均衡

时间:2017-05-22 13:30:01

标签: apache tomcat mod-proxy mod-proxy-balancer

我使用apache作为LB进行粘性会话处理(使用2个tomcats作为平衡器成员)。

以下是配置。我在apache级别完成 -

<Proxy balancer://mycluster>
    (...)
    ProxySet stickysession=JSESSIONID
    BalancerMember http://{ip/hostname of tomcat1 backed:port} route=tomcat1
    BalancerMember http://{ip/hostname of tomcat2 backed:port} route=tomcat2
</Proxy>

ProxyPass        /     “balancer://mycluster”
PorxyPassReverse /     “balancer://mycluster”

在tomcat级别定义jvm路由 -

(...)
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">         ##where the jvmroute should be the route value set at apache config.
(...)

同样为tomcat 2定义了

(...)
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">         ##where the jvmroute should be the route value set at apache config.
    (...)

一切正常,但这种设置的主要缺点是如果tomcat1发生故障,那么会话粘贴到tomcat1也会死掉并且不会路由到tomcat2。

有没有办法将粘性会话复制到tomcat2,或者只是如果tomcat1死掉,那么会话就被转移到tomcat2&amp;反之亦然?

1 个答案:

答案 0 :(得分:1)

使用&#34;粘性会话&#34;只是一种机制,可以确保在可能使用多个节点时,同一会话的所有请求都转到同一节点。如果您想要会话故障转移,则需要群集

有很多关于如何使用Tomcat进行群集的指南。关于集群如何工作以及如何配置它的背景,还有关于Tomcat's Presentations Page的几个演示文稿。

请注意,您可能需要对应用程序进行一些更改才能使群集正常工作。