apache - Apache和Tomcat的负载均衡配置

标签 apache tomcat load-balancing

我正在尝试将 Apache 设置为具有 session 关联性的 2 个 Tomcat 实例的负载均衡器。

目标是让 session 坚持一台服务器,但让下一个 session (当后端服务器更改时)转到下一个可用服务器(假设使用循环算法以更容易实现)。当在 Tomcat 中使用“jvmRoute”和 Apache 中的等效“路由”时,执行路由的实际值是不会更改的路由名称,并且所有请求始终路由到单个客户端的同一后端服务器。

到目前为止,我发现仅使用 JSESSIONID cookie 时存在先有鸡还是先有蛋的问题。让我们考虑以下设置:

2 个 Tomcat 服务器监听端口 8009 和 8010 (AJP13) 1 个 Apache 服务器,配置如下

<Proxy balancer://hello-cluster>
    BalancerMember ajp://127.0.0.1:8009/hello
    BalancerMember ajp://127.0.0.1:8010/hello
</Proxy>

ProxyPass /hello balancer://hello-cluster stickysession=JSESSIONID

场景如下:

  1. 第一个请求没有 Cookie,因此 Apache 会选择负载均衡器中的下一个可用服务器来处理该请求。
  2. 后端 Tomcat 服务器设置 JSESSIONID,但不记录返回的实际值。
  3. 下一个请求到来,Apache 注意到没有为给定的 JSESSIONID 记录后端服务器,因此它选择下一个可用的服务器,在本例中是另一个服务器为第一个请求提供服务
  4. Tomcat 注意到 JSESSIONID 的值无效,因此它创建了一个新值。
  5. Apache 不会注意到 JSESSIONID 已更改以将其固定到该后端服务器。
  6. 返回 pt。 3

有没有办法说服 Apache 记录 Tomcat 返回的值?

最佳答案

如果您尝试使用 tomcat session 复制,也许可以。我发现这个有趣的帖子:

。 您也可以尝试使用 redis:

请告诉我您的经历。

关于apache - Apache和Tomcat的负载均衡配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18347829/

相关文章:

apache - 创建项目后,laragon 生成的 url 指向 wampserver 配置页面

algorithm - 平衡分配算法

java - 将负载均衡器绕过不同 Web 应用程序的特定服务器

multithreading - 为什么多线程经常与多处理结合使用?

apache - apache/nginx/IIS 有什么区别

apache - elasticsearch和solr之间的根本区别是什么?

eclipse - 如何从 Eclipse 中在 Tomcat 中运行我的 Maven 项目?

jakarta-ee - mvn tomcat :run - change default maven tomcat port

java - 是否可以重启 Netbean 的 Tomcat 捆绑版本?

tomcat - AWS 上的 CAS 4 集群 : Ticket not recognized