如何在Tomcat上进行恩典热部署(不停)

时间:2011-09-20 09:30:12

标签: tomcat hotdeploy

我们的产品在LB + TOMCAT上运行,我们使用自己定制的SAFE-DEPLOY工具将更改部署到生产中。由于我们的系统致力于提供全天候可用性,因此该工具将按以下方式部署更改< / p>

用于特定服务的总服务器分为几组。我们假设它分为2组,它们停止一组,部署更改并启动组。第一组完成后,他们将更改部署到另一组。在大多数情况下,它运行良好,没有任何问题。

问题是由特殊情况引起的。一个服务生成一个令牌,客户端将其作为凭证,现在我们更改了令牌的格式,如果我们使用相同的部署方法,应该有一些潜在的问题.ie.group1停止并部署新代码然后重启(没关系),group2停止(准备部署新代码),现在group2部署时可能会发生错误,因为在此期间group1可能会收到group2生成的旧格式令牌(1.当group1正在部署时,group2运行旧代码,2.group2停止不能进程请求),客户端收到一个错误,显示令牌是错误的,但它不是真正的错误令牌。

我有一个解决方案是,让我们的代码可以处理新的格式令牌和旧格式令牌,但只生成新的格式令牌,运行1天后,我们可以进行仅处理新格式令牌的部署。我猜它工作正常,但不是恩典。

我的问题是,是否存在任何宽限期部署方法,使服务器可以处理已生成的旧格式化令牌和新格式化令牌而无需更改任何代码。

顺便说一句:我找到了一个引用,best practice hot deploy on tomcat,它只适用于tomcat 7,我们工作的tomcat是6.0.26。

1 个答案:

答案 0 :(得分:0)

是的,可能还有第二种方式。首先激活loadbalancern上的粘性会话(apache + mod_jk)。这意味着客户端始终与同一服务器连接。其次,禁用(不停止)工作者(服务器)。仅提供现有会话,不提供新会话。如果工作人员不再打开会话,则会停止工作人员,更新工作人员并在LB上启用工作人员。多数民众赞成,但我建议你的方式。