【问题标题】:To use apache as load balancer with sticky session - Need sticky session based load balancing使用 apache 作为具有粘性会话的负载均衡器 - 需要基于粘性会话的负载均衡
【发布时间】:2017-10-22 04:35:20
【问题描述】:

我使用 apache 作为具有粘性会话处理的 LB(使用 2 个 tomcat 作为平衡器成员)。

下面是配置。由我在 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,反之亦然?

【问题讨论】:

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


    【解决方案1】:

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

    有很多关于如何使用 Tomcat 进行集群的指南。 Tomcat's Presentations Page 上也有一些关于集群如何工作以及如何配置的背景介绍。

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

    【讨论】:

    • 我强烈推荐该演示文稿,它涵盖了“一切”(负载平衡、反向代理、会话集群 + 故障转移)并提供了故障排除指南。
    • 非常感谢您的回答:)
    • @AnkurVaish 如果您同意这是正确答案,请“接受”答案。
    • @ChristopherSchultz,我没有在“接受”中得到任何选项,你能帮我看看吗?
    • @AnkurVaish 最好再问一个新问题,或者加入Tomcat users' mailing list 那里寻求帮助。
    猜你喜欢
    • 2021-09-06
    • 2013-04-18
    • 2021-01-04
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多