【问题标题】:Load Balancing Tomcat 7 for Application Deployment用于应用程序部署的负载平衡 Tomcat 7
【发布时间】:2014-01-08 00:24:47
【问题描述】:

我正在通过 apache mod_jk 和 tomcat 7 为 java 应用程序提供服务。我希望能够部署一个新的应用程序实例(在单独的 tomcat 实例上),它将接受所有新会话。但是,所有现有会话将继续由旧的 Tomcat 提供服务。然后在所有用户注销或经过一段时间后,旧服务器将关闭,所有流量都将由新的 tomcat 处理(我不希望负载均衡器这样做)。这将允许我在不中断任何连接用户的情况下进行部署。

我已阅读有关 mod_jk lad balance 的信息,它提供了我需要的粘性会话,但我还没有找到如何强制从新应用程序提供所有新会话。设置轮询看起来很简单,但这不是我想要的。

所以正式的问题是:

是否有任何适用于 tomcat7/apache 的负载平衡器允许我自定义平衡规则以尊重粘性会话但优先从一个节点提供服务?

关于如何最好地实现这一点有什么想法吗?

【问题讨论】:

  • 您好,tomcat 中的粘性会话由每个实例处理,因此您无法共享它们。您可能正在寻找的是一个单独的会话服务器,它保留所有会话并让负载平衡应用一种粘性会话平衡。
  • 这并不能回答您的问题,但是您熟悉 Tomcat 中的Parallel Deployment 吗?这是一篇关于它的文章:objectpartners.com/2012/04/17/tomcat-v7-parallel-deployment
  • @Muel 这正是我想要的。谢谢。我没有回答我的问题,因为我问错了问题!!如果你把它作为答案,我会接受它。
  • @jdennison 很高兴它有帮助!已发布答案。 :)

标签: java apache tomcat tomcat7


【解决方案1】:

每个节点都管理自己的会话数据。要删除对连接用户造成最小干扰的节点,您需要在所有节点之间共享会话数据。 Tomcat 为此提供了session replication。即使使用复制,节点也可能在共享数据之前崩溃。讨论过的还有其他解决方案here

【讨论】:

    【解决方案2】:

    Tomcat 支持使用Parallel Deployment 功能运行一个Web 应用程序的多个版本。创建新会话时,它将使用最新版本的 Web 应用程序。现有会话将继续使用创建会话时最新的 Web 应用程序版本。

    这是一篇讨论并行部署的文章:http://www.objectpartners.com/2012/04/17/tomcat-v7-parallel-deployment/

    【讨论】:

      猜你喜欢
      • 2010-12-14
      • 2023-04-02
      • 1970-01-01
      • 2010-10-25
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      相关资源
      最近更新 更多